sympyを使って微分方程式を解くことを試みているので、ここに来ました。残念ながら、これまで成功していませんでした。私がこれまでにやったことです:sympy微分方程式の方程式
1)、微分方程式を挿入する値を割り当てて、それを解決:その後
import sympy as sp
from IPython.display import display
import numpy as np
import matplotlib.pyplot as plt
sp.init_printing()
F0=sp.symbols('F0')
Wd=sp.symbols('Wd')
A=sp.symbols('A')
B=sp.symbols('B')
x=sp.Function('x')
t=sp.symbols('t')
eq=sp.Eq(x(t).diff(t,2)+A*x(t).diff(t)+(B**2)*x(t),F0*sp.cos(Wd*t))
display(eq)
sol=sp.dsolve(eq,x(t)).rhs
display(sol)
2)私はすべての宣言されたシンボルの値を代入し、初期条件を設定して式をクリアできるようにします
consts = {A: 0.1,
B: 0.01,
F0: 0.0,
Wd: 0.01,
}
sol=sp.simplify(sol.subs(consts))
display(sol)
x0=5
#to evaluate initial conditions - x(0)
cnd0=sp.Eq(sol.subs(t,0),x0)
C1 = sp.symbols("C1")
sol_c1=sp.solve([cnd0],(C1))
display(sol_c1)
C2s=sp.simplify(sol.subs(sol_c1))
display(C2s)
3)それから最初誘導体に同様の処理を繰り返します。この点は、x(0)とX '(0)からC1とC2の値を計算することです。ここでは、コード
sold=sp.diff(sol,t)
display(sold)
xd0=0
#to evaluate initial conditions - derivative x'(0)
cnd1=sp.Eq(sold.subs(t,0),xd0)
sold_c1=sp.solve([cnd1],(C1))
display(sold_c1)
C2d=sp.simplify(sol.subs(sold_c1))
display(C2d)
4)私はC2類とC2dとして式を構築し、最終的にはC2をtの依存している方程式を得るためにそれを解決しようとすると、Pythonはエラーをスローで行きます。私が間違っていることを教えてください。
ありがとうございます!
こんにちは。はい、それはまさに私が探していたものです。私はC1とC2と本当に混同されましたが、あなたの答えは私の質問をクリアしました。どうもありがとう ! –
あなたは大歓迎です。 –