dx/dt=y,dy/dt=-sinx,求大神帮忙编一个MATLAB的程序,用龙格库塔法解这个方程组,求关于x,y的数值解这个方程组的初值可令x=1,y=0,最后需要画出图,也就是plot(y,x)

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/16 13:39:22
dx/dt=y,dy/dt=-sinx,求大神帮忙编一个MATLAB的程序,用龙格库塔法解这个方程组,求关于x,y的数值解这个方程组的初值可令x=1,y=0,最后需要画出图,也就是plot(y,x)
xWYSV+PDƺZILؾnv3a¾Hؚ%Kd?/&n3鴓ޣs3,gwJ$m}~nxkhqzSN1~7_}7wMl*-=+Ɠ,S ԕ}Fm& 4wp^h~ha)qd,.hm!W]ś(ӡ0}Rp#ԁgKlP,qr-gԐS{s0W4o&L" v\E8$U+}"P :A=p%_C aV8j%!?2]v\ at_H czPlzICzwL AƊGζB; [k#Zi xxb }h=L۩V< }T_+ȴ:Y)rcal{Q@owŸ5c16>ểP @+t^p;""g /Ts;#Pl;a7I_6÷f* 5϶6C]5>z i}IJ?P5/f2X7MeRVJ6-՛I*co RdSf٘I%ɔLio*g E PE߫->r_xlW]{{ĝ|CC2cIudο^N/%: ; Muo KAe!VxfT}S[@݅kgZ)JvA'V*RFLp(ruH G^h֌ϳ׹8wYKYJ'C9ŭN0`_l p߰awq,L0 x4PuۊOwkՏ.=T~, ʓq˯Gtf.+OvU[!; V0{+*32 4Nx>/WP*y՛L_U`Mb +rDDMSPLd(ĩ&EYE@.N,gWPDI˦KAFHF #,rMb9NWwbxÔa}@F d_ sVwtsܠNe>_Q>Iu~~E zPk҃D$)K$UD5[y@1!U|!$+jKP/C _#H5"1<9I,

dx/dt=y,dy/dt=-sinx,求大神帮忙编一个MATLAB的程序,用龙格库塔法解这个方程组,求关于x,y的数值解这个方程组的初值可令x=1,y=0,最后需要画出图,也就是plot(y,x)
dx/dt=y,dy/dt=-sinx,求大神帮忙编一个MATLAB的程序,用龙格库塔法解这个方程组,求关于x,y的数值解
这个方程组的初值可令x=1,y=0,最后需要画出图,也就是plot(y,x)

dx/dt=y,dy/dt=-sinx,求大神帮忙编一个MATLAB的程序,用龙格库塔法解这个方程组,求关于x,y的数值解这个方程组的初值可令x=1,y=0,最后需要画出图,也就是plot(y,x)
建立m文件:
function dx=dfun(t,x)        %函数名为dfun,参数为t与x
dx=[x(2);-sin(x(1))];          %以向量形式表示方程

输入:
clear
ts=-15:0.05:15;                                               %步长取0.05
x0=[1,0];                                                         %设定参数初值
options=odeset('reltol',1e-6,'abstol',1e-9);     %提高精度
[t,x]=ode45(@dfun,ts,x0,options);                  %调用ode45计算
plot(x(:,1),x(:,2)),grid                                      %作出y(x)图形
axis equal
gtext('\fontsize{12}x'),gtext('\fontsize{12}y')    %标记字体x

 
但以上并非曲线y=f(x)的完整形状(调整ts的范围也无济于事),原因是y为x的周期函数,而数值解只能求出初值附近的解
 
本题可以求出y=f(x)的解析表达式
由dx/dt=y,dy/dt=-sinx,得
dy/dx=(dy/dt)*1/(dx/dt)=-sinx/y
分离变量,积分得
y^2=2*cos(x)+C,其中C为常数
代入初始条件y(1)=0,可求得C=-2*cos(1)
∴y^2=2*cos(x)-2*cos(1),此式为原方程组的解析解
 
利用ezplot命令可绘制出完整图像
clear
syms x y
ezplot(y^2-2*cos(x)+2*cos(1),[-8,8,-3,3])
axis equal
axis([-8,8,-3,3])
grid on

 
另外,改变初值将得到不同的图形(为什么?请思考),例如
初值改为:x=1,y=√[2*(cos(1)+1)]-10^(-5)

 
初值改为:x=1,y=√[2*(cos(1)+1)]+10^(-5)