Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c/c+;中为有限差分法创建五对角稀疏矩阵的最佳方法是什么+;?_C++_C_Sparse Matrix - Fatal编程技术网

C++ 在c/c+;中为有限差分法创建五对角稀疏矩阵的最佳方法是什么+;?

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++中没有稀疏矩阵类型。

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

Boost支持稀疏矩阵,如果您只想“实验”有限差分,它可能是最佳选择。 如果你需要更高级的求解器,你应该看看,或者考虑C版本的.< /P>
至于您最初的问题,据我所知,这些库中没有一个实现了
kron
函数,因为它只是一个“方便”的例程。

您使用的是任何特定的矩阵库吗?只是基本线性代数子程序(BLAS)就创建库的目的而言,uBLAS可能是最接近的。值得注意的是,uBLAS支持带状矩阵作为稀疏矩阵,这可能会稍微更有效。