C++ 在c/c+;中为有限差分法创建五对角稀疏矩阵的最佳方法是什么+;?
在MATLAB中,使用如下命令创建五对角稀疏矩阵非常方便:C++ 在c/c+;中为有限差分法创建五对角稀疏矩阵的最佳方法是什么+;?,c++,c,sparse-matrix,C++,C,Sparse Matrix,在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++中是否有同样的技巧,在C++中没有稀疏矩阵类型。
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++中是否有同样的技巧,在C++中没有稀疏矩阵类型。但是网络上有很多开源代数库(或者你也可以自己编写) Boost支持稀疏矩阵,如果您只想“实验”有限差分,它可能是最佳选择。 如果你需要更高级的求解器,你应该看看,或者考虑C版本的.< /P>
至于您最初的问题,据我所知,这些库中没有一个实现了
kron
函数,因为它只是一个“方便”的例程。您使用的是任何特定的矩阵库吗?只是基本线性代数子程序(BLAS)就创建库的目的而言,uBLAS可能是最接近的。值得注意的是,uBLAS支持带状矩阵作为稀疏矩阵,这可能会稍微更有效。