次の関数を定義しています。
def eigval(matrix):
a = matrix[0, 0]
b = matrix[0, 1]
c = matrix[1, 0]
d = matrix[1, 1]
c1 = (a + d) + sqrt((4 * b * c) + ((a - d)**2))
c2 = (a + d) - sqrt((4 * b * c) + ((a - d)**2))
return c1 / 2, c2 / 2
2 X 2 行列の固有値を見つけるために作成されます。これを使用して、行列でヤコビ アルゴリズムを繰り返し実行しています。渡される行列は、タプルをキーとして使用して位置を表し、浮動小数点数を値として使用する辞書です。この関数は、約 6 回の繰り返しで正常に動作しますが、次の結果が得られます。
TypeError: __getitem__() takes exactly 2 arguments (2 given)
ブロックの最初の行 (a のある行)。
私が言ったように、約6回の実行で問題なく動作し、その後停止するため、私はこれに完全に混乱しています.
編集:これは、私が渡す行列の種類を作成する関数です:(行列が反復ごとに異なることを考えると)
def create():
matrix = {}
matrix[0, 0] = 2
matrix[0, 1] = 1
matrix[1, 0] = 1
matrix[1, 1] = 2
return matrix
どんな助けでも大歓迎です!(PS初投稿はこちら)