我定义了以下函数:
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 矩阵的特征值。我正在使用它在矩阵上迭代地运行 Jacobi 算法。传入的矩阵是一个字典,它使用元组作为键来表示位置,浮点数作为值。这个函数可以正常工作大约 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第一次发帖)