Возникли проблемы с решением уравнения с Sympy?Идеи? - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь решить уравнение, используя 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 голосов
/ 14 июня 2019

Похоже, вы сделали что-то вроде этого:

>>> 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 подставлены, прежде чем пытаться решить уравнение.

...