正如标题所说,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()
感谢您的回答:)
答案 0 :(得分:1)
您的代码在没有解释应该做什么的情况下并不清楚,我看到两个问题:
第一个sympy
是一个用于无限精确符号数学的库。它使用自己的Symbol
定义变量,sympy.solvers.solve
要求一个方程式和一个符号列表(该方程式应取决于这些符号)。参见文档:here
另一点是mm
的形状为(10, 10)
,m
是长度为11
的向量。您想求解什么方程式?
对于您的问题,我的解决方案是,如果您想求解类似mm @ X = m
的方程式,然后使用np.linalg.solve(mm, m)
,但是您需要对此具有正确的形状。