作为一个小练习,在我开始使用 python 中的数字代码之前,我正在尝试制作一个 LDLT 算法。只是为了“弄湿脚”。
但是,我似乎对 numpy 数组缺乏基本的了解。请参见以下示例:
def ldlt(Matrix):
import numpy
(NRow, NCol) = Matrix.shape
for col in range(NCol):
Tmp = 1/Matrix[col,col]
for D in range(col+1, NCol):
Matrix[col,D] = Matrix[D,col]*Tmp
if __name__ == '__main__':
import numpy
A = numpy.array([[2,-1,0],[-1,2,-1],[0,-1,2]])
ldlt(A)
该示例不是我正在处理的完整代码。但是,尝试运行它,并在 Matrix[col,D] = ... 处设置断点
我对第一次评估的期望是第 0 行第 1 列(起始值 -1)设置为等于 = -1*(1/2) = -0.5。
但是,在运行代码时,它似乎设置为 0。为什么?一定有一些基本的东西我还没有真正理解?
在此先感谢大家帮助我。
编辑1:
Python Ver.:3.3 Tmp.:变为 0.5(正如我的调试器所报告的那样)。