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的数值.
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 01:52:23
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的数值.
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分
回答一楼的问题:首先感谢你的关注。
请问我要显示出最后一个时刻的值,是什么代码?
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的数值.
方法如下:先建立一个微分方程组的子函数:
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的话解出来的是不是有问题就难说,给个非零数会不会好些,我提供了代码,你可以自己多尝试几组数据.
可不可以先人工算出来
吾是这样考虑的:
syms x1 x2 x3
f=Dx1-(sin(x3)+cos(x3))/sin(x2);
g=Dx2-cos(x3)+sin(x3);
h=Dx3+(sin(x3)+cos(x3))*cos(x2)-1;
[x1,x2,x3]=solve(f,g,h];
不过,Dx1好像不太对,各位高手参考。