让我们以下面的平方矩阵为例:
import numpy as np
A = np.array([[10.0, -498.0],
[-2.0, 100.0]])
如果A的行列式(A[0,0]*A[1,1]-A[0,1]*A[1,0])为零,则A为单数。例如,如果[0,1]的值为-500.0(所有其他值不变),则A将为单数:
from sympy import symbols, Eq, solve
y = symbols('y')
eq = Eq(A[0,0]*A[1,1]-y*A[1,0])
sol = solve(eq)
sol
如何有效地找到A(或任何给定的方阵)变得奇异的所有值(A[0,0],[0,1],…)(我处理大型矩阵)?非常感谢
这东西适用于方阵
它所做的是强行遍历矩阵中的每一项,并检查其是否为单数(因此有许多混乱的输出,如果您喜欢,请使用它)
同样重要的是,它是一个递归函数,如果矩阵是奇异的,它会返回一个矩阵。所以它会递归地抛出递归错误
这是我想出的代码,如果你觉得合适的话,你可以使用它
我想这就是你想要的代码,如果不起作用,请告诉我
诀窍是使用拉普拉斯展开来计算行列式。公式是
因此,要使矩阵奇异,只需使用上述公式,将主题更改为a_ij,并设置det(a)=0。可以这样做:
测试:
相关问题 更多 >
编程相关推荐