#範例8-6:高階常係數齊性 ODE 之求解:y''''(x)-y''(x)-y'(x)+y(x)=0,邊界條件為y(0)=2, y'(0)=1, y''(0)=0 #因為多一個4x**2,這個是非齊性項(全部的係數都是固定常數) #ode :y''''(x)-y''(x)-y'(x)+y(x)=0 #邊界條件或起始條件:y(0)=2, y'(0)=1, y''(0)=0 #語法:dsolve(eq, f(x), ics={y(0):0,y(x).diff(x).subs(x,0):-0}) #所解出的原方程式:y(x) = -x**2 - 4*x/3 + 3*exp(x)/2 - 14/9 + exp(-3*x)/18 from sympy import * x = symbols('x') y = Function('y') #注意:ode是個方程式,不是函數 ode = Eq(diff(y(x),x,3)-diff(y(x),x,2)-diff(y(x),x)+y(x),0) ans = dsolve(ode,y(x),ics={y(0):2, y(x).diff(x).subs(x,0):1, y(x).diff(x,2).subs(x,0):0}) #ans = dsolve(ode,y(x),ics={y(0):2},y(x).diff(x).subs(x,0):1, y(x).diff(x).diff(x).subs(x,0):0) print('高階常係數齊性 ODE 之求解:',ans.args[0],'=',ans.args[1]) #顯示數學符號函數 from sympy.interactive import printing printing.init_printing(use_latex=True) display(y) #畫圖y(x) plot(ans.args[1],(x,-10,10), line_color='red')