【问题标题】:What is the best way to create a pentadiagonal sparse matrix for finite difference method in c/c++?在 c/c++ 中为有限差分法创建五对角稀疏矩阵的最佳方法是什么?
【发布时间】:2012-04-19 15:34:15
【问题描述】:

在 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++ 中是否有任何巧妙的技巧可以做到这一点。

【问题讨论】:

  • 你在使用任何特定的矩阵库吗?
  • 只是基本的线性代数子程序 (BLAS)

标签: c++ c sparse-matrix


【解决方案1】:

C++ 中没有稀疏矩阵类型。但是网络上有很多开源代数库(或者您可以编写自己的)。

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

至于你原来的问题,据我所知,这些库都没有实现kron 函数,因为它只是一个“方便”的例程。

【讨论】:

猜你喜欢
  • 2010-09-05
  • 2012-01-10
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
相关资源
最近更新 更多