python三对角矩阵_python高效三对角矩阵求逆

我需要反转大量的对称复三对角矩阵(目前是1e6,可能优化到3e3)。矩阵M都非常相似。实际上M是两个参数M(a, b)的函数,我需要计算网格上的逆。在

我现在做的是import numpy as np

from numpy.linalg import inv

N = 40

mat_indices = range(0, N)

a = np.linspace(-5, 5, dtype=np.complex256, num=500)

b = np.linspace(-5, 5, dtype=np.complex256, num=500)

w += 5j * max((w[1] - w[0], eps[1] - eps[0]))

M = np.zeros(a.shape + b.shape + (N, N), dtype=np.complex)

for lay in layers:

M[..., lay, lay] = fa(a[:, np.newaxis]) + fb(b[np.newaxis, :])

for lay in layers[:-1]:

G_latt_inv[..., lay, lay+1] = fsub(a, b)

G_latt_inv[..., lay+1, lay] = fsub(a, b)

M_inv = inv(M)

显然这是一个糟糕的解决方案,我既没有使用对称性也没有使用矩阵的稀疏性。此外,迭代法应该是有利的,因为我的矩阵都非常相似。在

我知道有scipy.sparse,可能我可以用solve方法来b=Unity。但是我仍然没有使用我的许多优点。在

我不需要一个最佳的解决方案,我宁愿简单,因为我没有太多的时间来测试和验证我的结果。但目前它的效率太低了。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值