【问题标题】:Having trouble solving equation with Sympy? Ideas?使用 Sympy 求解方程时遇到问题?想法?
【发布时间】:2019-06-13 21:51:04
【问题描述】:

我正在尝试使用 Sympy 求解方程。我已经使用 for 循环生成了相关方程,并且已经有了 r1、r2、r3 和 c 的值。我想使用 SymPy 来解决 r4。但是,当我尝试使用 solveset 时,我得到的不是 r4 的解决方案,而是一个

这是我的方程式,当我尝试使用求解集时:

101.947638 - (c/2)*(exp(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.00273972602739726*r3) + exp(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 1.02465753424658*r4) + exp(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 0.526027397260274*r4) + exp(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 0.0246575342465753*r4) - 100*exp(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 1.02465753424658*r4)

我明白了:

ConditionSet(r4, Eq(-1.0625*2.71828182845905**(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.00273972602739726*r3) - 101.0625*2.71828182845905**(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 1.02465753424658*r4) - 1.0625*2.71828182845905**(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 0.526027397260274*r4) - 1.0625*2.71828182845905**(-0.252054794520548*r1 - 0.252054794520548*r2 - 0.476712328767123*r3 - 0.0246575342465753*r4) + 100.0918, 0), Complexes(S.Reals x S.Reals, False))

有人可以帮我用 SymPy 解决这个方程吗?

【问题讨论】:

  • 你不是只有 1 个方程有 4 个未知数吗?
  • 不,我知道 r1、r2、r3 和 c 的值。只需要解决r4

标签: python sympy solver


【解决方案1】:

看起来你做了这样的事情:

>>> from sympy.abc import x, y
>>> eq = y + 2*x
>>> for x in range(2):
...     print(eq)
y + 2*x
y + 2*x

请注意,循环中的值x 并不会神奇地将值替换为eq。创建eq 时的x 定义是一个符号。当循环开始时,x 变成了 in 但eq 的定义没有改变;这就是 Python 的工作原理。您需要做的是为要代入方程的值使用不同的变量,如下所示:

>>> for xi in range(2):
...     print(eq.subs({x: xi}))
y
y + 2

因此,在尝试求解方程之前,请务必代入 r1、r2、r3 和 c 的值。

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多