<p>这看起来像是要解<a href="https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix#Generalized_eigenvalue_problem" rel="nofollow">generalized eigenvalue problem</a>,其中<code>y</code>是未知的广义特征值λ,<code>x</code>是相应的广义特征向量。如果这是您想要的,您可以使用<a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.eig.html" rel="nofollow">^{<cd3>}</a>。下面是一个例子。你知道吗</p>
<p>为了保持输出的可读性,我将使用带有shape(2,2)的数组。你知道吗</p>
<pre><code>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]])
</code></pre>
<p>这些是方程式中的矩阵。你知道吗</p>
<pre><code>In [94]: a = A.T.dot(A)
In [95]: b = B.dot(B.T)
</code></pre>
<p>求解广义特征值问题:</p>
<pre><code>In [96]: lam, v = eig(a, b)
</code></pre>
<p>这些是广义特征值(你的<code>y</code>):</p>
<pre><code>In [97]: lam
Out[97]: array([ 6.09287487+0.j, 0.01823624+0.j])
</code></pre>
<p><code>v</code>的列是广义特征向量(您的<code>x</code>):</p>
<pre><code>In [98]: v
Out[98]:
array([[ 0.98803087, -0.81473616],
[ 0.1542563 , 0.57983187]])
</code></pre>
<p>验证解决方案。注意,结果在1e-16的数量级,即数值接近0。你知道吗</p>
<pre><code>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])
</code></pre>