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になります(私のデバッガーによって報告されたように)。