计算复数矩阵的行列式以检查特征值计算

6yoyoihd  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(396)

我试图在python上解决一个经典的特征值问题:ufa+ea=0,其中u是问题的特征值,f和e是(20x20)矩阵,a是特征向量。
所以首先我尝试使用numpy.linalg.eig(-f^-1e)来计算问题的特征值u。特征值是复共轭的。然后我试图计算numpy.linalg.det(f^-1e+uid)来检查特征值。它应该返回0或者非常接近0的值,但是结果大约是10e50,这是没有意义的。
然后我决定使用scipy.linalg.eigvals(-e,f)来避免对f求逆,并检查我计算的numpy.linalg.det(e+u
f)的结果,结果再次是大约10e50,而不是接近零。
我不明白问题从何而来,我尝试了一个较小的问题:
-对于(4x4)矩阵,行列式约为10e-8
-对于(6x6)矩阵,行列式约为10e-4
-对于(8x8)矩阵,行列式约为10e4
我认为这可能来自于矩阵的大小,但(8x8)并没有那么大,行列式已经远远大于0。此外,对于(20x20)矩阵,有10e7左右的项,而其他项约为1,这会导致问题吗?
谢谢你的帮助,我真的不知道该怎么做。
edit1:在(20x20)维度中添加e和f矩阵
编辑2:我计算了矩阵f^-1e+u*id的秩,当矩阵大小为(20x20)时,它等于19,所以我认为特征值是正确的。我想问题来自行列式计算。
矩阵e:

矩阵f:

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题