Симпи в Python не дает желаемого результата - PullRequest
1 голос
/ 08 февраля 2020

Я пытаюсь использовать sympy для решения простого ODE 2-го порядка: gamma * y '' (x) + 4 * y (x) = 0. Я получаю сообщение об ошибке «имя x не определено». И каждый раз, когда я пытаюсь исправить одну ошибку, появляется другая ошибка. Пожалуйста, может кто-нибудь сказать мне, что не так с моим кодом. Кроме того, как мне найти решение?

Изначально у меня возникли проблемы с:

from sympy import* 
from sympy.solvers import dsolve
import sympy as sp
from pylab import*
dsolve?
f = sp.symbols("f", cls=sp.Function)
f(x)
ode1 = gamma*f(x).diff(x,2) + 4*f(x)
f_init = [1,0]
gamma = 0.01
sol1 = dsolve(ode1, f(x), f_init)
print(ode1, sol1)


ОБНОВЛЕНИЕ: это сделало то, что я искал чтобы заставить меня работать:

from sympy import* 
from sympy.solvers import dsolve
import sympy as sp
from pylab import*
import matplotlib.pyplot as plt

x = sp.symbols('x')
f = sp.Function("f")

gamma = 0.01
ode1 = sp.Eq(gamma*f(x).diff(x,2)+4*x)
sol1 = sp.dsolve(ode1, ics={f(0): 0, sp.diff(f(x), x).subs(x,0): 1})

print(ode1, sol1)

1 Ответ

1 голос
/ 08 февраля 2020

По крайней мере, это должно быть началом, но тогда не знаете, чего бы вы хотели достичь, посмотрите на:

from sympy.solvers import dsolve
import sympy as sp

x = sp.symbols('x')
f = sp.Function("f")
gamma = 0.01
ode1 = sp.Eq(gamma*f(x).diff(x,2)+4*x)
sol1 = sp.dsolve(ode1, ics={f(0): 0, sp.diff(f(x), x).subs(x,0): 1})

print(ode1, sol1)

Распечатывает:

Eq(4*x + 0.01*Derivative(f(x), (x, 2)), 0) Eq(f(x), -200*x**3/3 + x)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...