ODE 的系统 simpy dsolve
system of ODE simpy dsolve
如何求解多个 ODE? sympy.dsolve returns 相同的积分常数,所以我无法解决它。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sympy.interactive import printing
printing.init_printing(use_latex=True)
from sympy import *
x,l,F,k_0,q_0,n,a,C1,C2,C3,C4,Φ1,Φ2,D1,D2=symbols('x l F k_0 q_0 n a C1 C2 C3 C4 Φ_1 Φ_2 D1 D2')
n=5
q=0
k1=k_0
k2=n*k_0
eq1=Function('eq1')(x)
eq2=Function('eq2')(x)
w1=dsolve(k1.diff(x)*eq1.diff(x)+k1*eq1.diff(x,2)+q).rhs
w2=dsolve(k2.diff(x)*eq2.diff(x)+k2*eq2.diff(x,2)+q).rhs
display(w1)
display(w2)
代码returns:
1+2*
1+2*
虽然我想要这样的东西:
1+2*
3+4*
我找到了这个答案,但也许还有更简单的方法
char='D'
diff=k2.diff(x)*eq2.diff(x)+k2*eq2.diff(x,2)+q
def ODE(diff,char):
func=dsolve(diff).rhs
for i in range(1,len(func.free_symbols)):
old=symbols('C{}'.format(i))
new=symbols(char + '{}'.format(i))
func=func.subs(old,new)
return func
w2=ODE(diff,char)
display(w2)
如何求解多个 ODE? sympy.dsolve returns 相同的积分常数,所以我无法解决它。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sympy.interactive import printing
printing.init_printing(use_latex=True)
from sympy import *
x,l,F,k_0,q_0,n,a,C1,C2,C3,C4,Φ1,Φ2,D1,D2=symbols('x l F k_0 q_0 n a C1 C2 C3 C4 Φ_1 Φ_2 D1 D2')
n=5
q=0
k1=k_0
k2=n*k_0
eq1=Function('eq1')(x)
eq2=Function('eq2')(x)
w1=dsolve(k1.diff(x)*eq1.diff(x)+k1*eq1.diff(x,2)+q).rhs
w2=dsolve(k2.diff(x)*eq2.diff(x)+k2*eq2.diff(x,2)+q).rhs
display(w1)
display(w2)
代码returns:
1+2*
1+2*
虽然我想要这样的东西:
1+2*
3+4*
我找到了这个答案,但也许还有更简单的方法
char='D'
diff=k2.diff(x)*eq2.diff(x)+k2*eq2.diff(x,2)+q
def ODE(diff,char):
func=dsolve(diff).rhs
for i in range(1,len(func.free_symbols)):
old=symbols('C{}'.format(i))
new=symbols(char + '{}'.format(i))
func=func.subs(old,new)
return func
w2=ODE(diff,char)
display(w2)