擅长:python、mysql、java
<p>我在你的职能中发现了一些问题。首先,要实现您试图进行的递归比较,外循环应该从0到len(vals)-1,内循环应该从“n”到len(vals),如下面我更正的代码片段所示</p>
<p>此外,字典的“.get()”方法没有进行适当的修改。换句话说,您必须将输出分配给“if”子句中的变量(同样,请参见下面的更正代码)</p>
<p>最后,为了避免额外的单例维度,请避免在希望转换为numpy数组的变量周围放置“[]”</p>
<p>下面修改的函数应该可以解决您的问题。我无法完全测试它,所以如果仍然存在问题,请告诉我</p>
<p>快乐编码</p>
<pre><code>def simultaneous_eig(A, B):
epsilon = 10**-10
vals, vecs = la.eig(A)
degen = {}
for n in range(0,len(vals)-1):
for m in range(n+1,len(vals)):
#equality up to certain precision
if np.abs(vals[m]-vals[n]) < epsilon:
vecs[:,n] = degen.get(vals[m])
degen[vals[n]] = np.array([vecs[:,n]])
return degen
</code></pre>