作业帮 > 综合 > 作业

matlab 解微分方程组 (高分求解)奇异性如何解决

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 09:13:29
matlab 解微分方程组 (高分求解)奇异性如何解决
dx1/dt=(sin(x3)+cos(x3))/sin(x2)
dx2/dt=cos(x3)-sin(x3)
dx3/dt=1-(sin(x3)+cos(x3))*cot(x2)
我想把x1,x2,x3的数值解求出来.
作图.并要知道最后一个时刻的x1,x2,x3的数值.
初始值为(0,0,0) ,因此第一行的最后一项将除于一个零,导致无法算出来.若用eps代替,好像也会有很大的误差,这样如何解决.
全答出来的给100分
回答一楼的问题:首先感谢你的关注。
请问我要显示出最后一个时刻的值,是什么代码?
方法如下:先建立一个微分方程组的子函数:
function f=funx1_3(t,x)
f=zeros(3,1);
f(1)=sin(x(3))+cos(x(3))./sin(x(2));
x(2)=cos(x(3))-sin(x(3));
x(3)=1-(sin(x(3))+cos(x(3))).*cot(x(2));
return
再在主界面里调用:
[T,F] = ode45(@funx1_3,[0 12],[0 0 0]);
画图也很容易:
plot(T,F)
但是初值全是0的话解出来的是不是有问题就难说,给个非零数会不会好些,我提供了代码,你可以自己多尝试几组数据.