4

MATLAB では、次のようなコマンドを使用して五角形疎行列を作成すると非常に便利です。

I = eye(m);  % create identity matrix
e = ones(m,1); % create an array of all 1's
T = spdiags([e -4*e e],[-1 0 1],m,m); 
S = spdiags([e e],[-1 1],m,m);
A = (kron(I,T) + kron(S,I))/hˆ2;

c/c ++で同じことを行うための巧妙なトリックがあるかどうか疑問に思っていました。

4

1 に答える 1

2

C++ にはスパース Matrix 型はありません。しかし、Web にはオープン ソースの代数ライブラリがたくさんあります (または、独自に作成することもできます)。

Boost uBLASはスパース行列をサポートしており、有限差分を「実験」したいだけであれば、おそらく最良の選択です。より高度なソルバーが必要な場合は、GSLを参照するか、C バージョンのLAPACKを検討してください。

あなたの元の質問に関しては、私が知る限り、これらのライブラリはkron関数を実装していません。これは「便利な」ルーチンにすぎないためです。

于 2012-04-05T23:41:07.090 に答える