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++ 中没有稀疏矩阵类型。但是网络上有很多开源代数库(或者您可以编写自己的)。

Boost uBLAS支持稀疏矩阵,如果您只想“实验”有限差分,它可能是最佳选择。如果你需要更高级的求解器,你应该看看GSL,或者考虑LAPACK的 C 版本。

至于您最初的问题,据我所知,这些库都没有实现kron功能,因为它只是一个“方便”的例程。

于 2012-04-05T23:41:07.090 回答