In [91]: from scipy.linalg import eig
In [92]: A
Out[92]:
array([[2, 3],
[1, 1]])
In [93]: B
Out[93]:
array([[0, 1],
[3, 0]])
这些是方程式中的矩阵。你知道吗
In [94]: a = A.T.dot(A)
In [95]: b = B.dot(B.T)
求解广义特征值问题:
In [96]: lam, v = eig(a, b)
这些是广义特征值(你的y):
In [97]: lam
Out[97]: array([ 6.09287487+0.j, 0.01823624+0.j])
v的列是广义特征向量(您的x):
In [98]: v
Out[98]:
array([[ 0.98803087, -0.81473616],
[ 0.1542563 , 0.57983187]])
验证解决方案。注意,结果在1e-16的数量级,即数值接近0。你知道吗
In [99]: (a - lam[0]*b).dot(v[:,0])
Out[99]: array([ 2.22044605e-16+0.j, -8.88178420e-16+0.j])
In [100]: (a - lam[1]*b).dot(v[:,1])
Out[100]: array([ 0.+0.j, 0.+0.j])
这个特定的方程有一个解析解:
x
是0,y
可以是任何值或者
x
可以是任何东西,然后A'A - yBB' = 0
可以是线性的,用numpy.linalg.solve
求解可以是线性的,因为尺寸相加不好
这看起来像是要解generalized eigenvalue problem,其中} 。下面是一个例子。你知道吗
y
是未知的广义特征值λ,x
是相应的广义特征向量。如果这是您想要的,您可以使用^{为了保持输出的可读性,我将使用带有shape(2,2)的数组。你知道吗
这些是方程式中的矩阵。你知道吗
求解广义特征值问题:
这些是广义特征值(你的
y
):v
的列是广义特征向量(您的x
):验证解决方案。注意,结果在1e-16的数量级,即数值接近0。你知道吗
相关问题 更多 >
编程相关推荐