我当前的软件项目涉及使用 python 实现求解线性系统的数值方法(所谓的SOR
-方法)。
它基本上是这样工作的:
给定一个线性系统:
ax1 + bx2 + cx3 = b1
dx1 + ex2 + fx3 = b2
gx1 + hx2 + ix3 = b3
重新排列方程为:
x1_new = (b1 - (bx2 + cx3)) / a
x2_new = (b2 - (dx1_new + fx3)) / e
x3_new = (b3 - (gx1_new + hx2_new)) / i
如您所见,x*_new
值随着每一行更新 - 这就是为什么我不能使用简单的向量-向量乘积的不幸原因(我还必须除以对角线元素 - 而不是乘以它)。我必须逐个元素地进行。
我想与sparse
-矩阵。但我还没有找到如何索引稀疏矩阵以及如何执行上述操作的方法?就像,我发现的唯一的东西(关于这个https://docs.scipy.org/doc/scipy/reference/ generated/scipy.sparse.csr_matrix.html https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html)是使用A[i].data
返回该行的非零元素i
。但连续可能有很多零。并且使用大量 if/else 来获取索引处的元素对于100.000 x 100.000
matrix.
有任何想法吗?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)