【发布时间】:2018-08-15 02:51:27
【问题描述】:
如何在 Eigen 中构造稀疏的三对角矩阵?我要构造的矩阵在 Python 中如下所示:
alpha = 0.5j/dx**2
off_diag = alpha*np.ones(N-1)
A_fixed = sp.sparse.diags([-off_diag,(1/dt+2*alpha)*np.ones(N),-off_diag],[-1,0,1],format='csc')
如何使用 Eigen 包在 C++ 中完成此操作?看起来我需要使用 here 中记录的“三元组”,但考虑到这应该是一个相当常见的操作,有没有更简单的方法可以做到这一点?
另一个问题是我应该使用行专业还是列专业。我想求解矩阵方程Ax=b,其中A 是一个三对角矩阵。当我们手动进行矩阵向量乘法时,我们通常将矩阵的每一行乘以列向量,因此以行优先存储矩阵似乎更有意义。但是电脑呢?如果要解决Ax=b,首选哪一个?
谢谢
【问题讨论】:
标签: c++ sparse-matrix linear-algebra eigen