使用Sympy求解方程式时遇到问题?有想法吗?

时间:2019-06-13 21:51:04

标签: python sympy solver

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

这是我的方程式,当我尝试使用Solveset时:

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 个答案:

答案 0 :(得分:0)

您似乎做了这样的事情:

>>> 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。创建x时的eq定义是一个符号。循环开始时,x变成in,但是eq的定义没有改变;这就是Python的工作方式。您需要做的是对要替换为方程式的值使用不同的变量,如下所示:

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

因此,在尝试求解方程之前,请确保用r1,r2,r3和c的值替代。