微分方程模型的求解方法
在实际问题中经常需要寻求某个变量y随另一变量t的变化规律,y=y(t)这个函数关系式常常不能直接求出。然而有时容易建立包含变量及导数在内的关系式,即建立变量能满足的微分方程,从而通过求解微分方程对所研究的问题进行解释说明。
在高等数学中,介绍了一些特殊类型微分方程的解析解法,但是大量的微分方程由于过于复杂往往难以求出解析解。此时可以应用数值解法,求得微分方程的近似解。
用Python求解微分方程
from sympy.abc import x
from sympy import diff, dsolve, simplify, Function
y=Function('y')
eq=diff(y(x),x,2)+2*diff(y(x),x)+2*y(x) #定义方程
con={y(0): 0, diff(y(x),x).subs(x,0): 1} #定义初值条件
y=dsolve(eq, ics=con)
print(simplify(y))
from sympy.abc import x #引进符号变量x
from sympy import Function, diff, dsolve, sin
y=Function('y')
eq=diff(y(x),x,2)+2*diff(y(x),x)+2*y(x)-sin(x) #定义方程
con={y(0): 0, diff(y(x), x).subs(x,0): 1} #定义初值条件
y=dsolve(eq, ics=con)
print(y)
import sympy as sp
t=sp.symbols('t')
x1,x2,x3=sp.symbols('x1,x2,x3',cls=sp.Function)
eq=[x1(t).diff(t)-2*x1(t)+3*x2(t)-3*x3(t),x2(t).diff(t)-4*x1(t)+5*x2(t)-3*x3(t),x3(t).diff(t)-4*x1(t)+4*x2(t)-2*x3(t)]
con={x1(0):1, x2(0):2, x3(0):3}
s=sp.dsolve(eq, ics=con); print(s)