我正在尝试使用计算物理学书中的函数来求解带状联立方程:http://www-personal.umich.edu/~mejn/cp/programs/banded.py
但是,运行该函数会导致以下溢出错误:

OverflowError: cannot convert float infinity to integer in banded line 39: v[m] /= div


矩阵A和w为:

A =
[[ 3 -1 -1 ...  0  0  0]
 [-1  4 -1 ...  0  0  0]
 [-1 -1  4 ...  0  0  0]
 ...
 [ 0  0  0 ...  4 -1 -1]
 [ 0  0  0 ... -1  4 -1]
 [ 0  0  0 ... -1 -1  3

w = [5 5 0 ... 0 0 0]

x = banded(A,w,2,2)


有人可以帮我弄清楚为什么使用此功能时会出现溢出错误吗?
谢谢。

最佳答案

我认为您应该将A制成banded.py中所示的带状矩阵

(--A02 A13 A24 ...
(-A01 A12 A23 A34 ...
(A00 A11 A22 A33 A44 ...
(A10 A21 A32 A43 A54 ...
(A20 A31 A42 A53 A64 ...

此外,我发现如果矩阵A或向量w中的矩阵元素是整数,则带状函数将无法正常工作,您可以考虑将其初始化为浮点型。

10-06 01:45