【问题标题】:Sympy solve raises an error that one element is ambiguousSympy解决引发一个元素不明确的错误
【发布时间】:2019-04-26 07:21:03
【问题描述】:

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

我的代码

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()

感谢您的回答:)

【问题讨论】:

  • 哪一行给你这个错误?
  • 什么意思是哪个页面?
  • 不应该 sympy.solvers.solvesympy.Symbol 一起使用?您的代码中没有任何符号。 编辑 : mmm 没有连贯的形状,你要解的方程是什么?

标签: python sympy


【解决方案1】:

如果没有解释它应该做什么,你的代码不是很清楚,我看到 2 个问题:

First sympy 是一个具有无限精度的符号数学库。它使用自己的Symbol 来定义变量,sympy.solvers.solve 要求提供方程式和符号列表(方程式应取决于这些符号)。请参阅文档:here

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

我对您的问题的解决方案是,如果您想解决像 mm @ X = m 这样的等式,然后使用 np.linalg.solve(mm, m),但您需要为此设置正确的形状。

【讨论】:

  • 谢谢你保存它!是的,你是对的,我不应该有 m = np.zeros([He+1]) 它应该是 m = np.zeros([He])。我试图以隐式方式求解欧拉后向方程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2018-09-07
相关资源
最近更新 更多