求解高階微分方程,我覺得你可以用Runge-Kutta-Felhberg演算法試一下:還有一種辦法,你要選擇狀態變數,然後變換方程,全部用一階來表示。然後求解。例如:functiondx=apolloeq(t,x)mu=1/82.45;mu1=1-mu;r1=sqrt((x(1)+mu)^2+x(3)^2); r2=sqrt((x(1)-mu1)^2+x(3)^2);dx=[x(2);2*x(4)+x(1)-mu1*(x(1)+mu)/r1^3-mu*(x(1)-mu1)/r2^3;x(4);-2*x(2)+x(3)-mu1*x(3)/r1^3-mu*x(3)/r2^3];x0=[1.2;0;0;-1.04935751];>>tic,[t,y]=ode45("apolloeq",[0,20],x0);tocelapsed_time=0.8310>>length(t), >>plot(y(:,1),y(:,3))由於手邊沒有matlab程式,你自己執行一下。matlab太大了,現裝好幾個小時,我就不裝了,有什麼bug你自己調一調。其實matlab裡面自帶的演算法程式就有求解一階微分方程的。如[t,x]=ode45(Fun,[t0,tf],x0),或者[t,x]=ode45(Fun,[t0,tf],x0,options,p1,p2,
求解高階微分方程,我覺得你可以用Runge-Kutta-Felhberg演算法試一下:還有一種辦法,你要選擇狀態變數,然後變換方程,全部用一階來表示。然後求解。例如:functiondx=apolloeq(t,x)mu=1/82.45;mu1=1-mu;r1=sqrt((x(1)+mu)^2+x(3)^2); r2=sqrt((x(1)-mu1)^2+x(3)^2);dx=[x(2);2*x(4)+x(1)-mu1*(x(1)+mu)/r1^3-mu*(x(1)-mu1)/r2^3;x(4);-2*x(2)+x(3)-mu1*x(3)/r1^3-mu*x(3)/r2^3];x0=[1.2;0;0;-1.04935751];>>tic,[t,y]=ode45("apolloeq",[0,20],x0);tocelapsed_time=0.8310>>length(t), >>plot(y(:,1),y(:,3))由於手邊沒有matlab程式,你自己執行一下。matlab太大了,現裝好幾個小時,我就不裝了,有什麼bug你自己調一調。其實matlab裡面自帶的演算法程式就有求解一階微分方程的。如[t,x]=ode45(Fun,[t0,tf],x0),或者[t,x]=ode45(Fun,[t0,tf],x0,options,p1,p2,