Sympy解决方案引发一个错误,即一个元素不明确

时间:2019-04-26 07:21:03

标签: python sympy

正如标题所说,sympy resolve返回一个我不知道如何解决的错误。

我的代码

from sympy.solvers import solve
import numpy as np
z = 10
h = 0.1
r = 10
He = 10

aa = 1+(h*r)
bb = -1
mm = np.zeros([He,He])
m = np.zeros([He+1])

for i in range(He):
    mm[i,i] = aa
    if i is 0:
        m[i] = -bb * z
    if i > 0:
        mm[i,i-1] = bb

ln = solve(mm,m)

我收到错误消息:

  The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

感谢您的回答:)

1 个答案:

答案 0 :(得分:1)

您的代码在没有解释应该做什么的情况下并不清楚,我看到两个问题:

第一个sympy是一个用于无限精确符号数学的库。它使用自己的Symbol定义变量,sympy.solvers.solve要求一个方程式和一个符号列表(该方程式应取决于这些符号)。参见文档:here

另一点是mm的形状为(10, 10)m是长度为11的向量。您想求解什么方程式?

对于您的问题,我的解决方案是,如果您想求解类似mm @ X = m的方程式,然后使用np.linalg.solve(mm, m),但是您需要对此具有正确的形状。