寻MATLAB牛人(更寻SIMULINK牛人) ※ 来源: 同济网论坛 BBS.TONGJI.NET
本人用MATLAB解一非线性微分方程组,程序如下:
function dy=regulator001(t,y)
dy =zeros(5,1);
dy(1)=1.4*y(1)/0.00016387*(2.649*2.3/4*y(4)-0.5495*0.00023*(y(1)-101325)^0.5-sign(y(1)-y(2))*0.00055*abs(y(1)-y(2))^0.5);
dy(2)=1.4*y(2)/(0.00032823-y(4)*0.0139)*(sign(y(1)-y(2))*0.00055*abs(y(1)-y(2))^0.5+0.0139*y(5));
dy(3)=1.4*y(3)/(0.0006+y(4)*0.0139)*(-sign(y(3)-101325)*0.0000038*abs(y(3)-101325)^0.5-0.0139*y(5));
dy(4)=y(5);
dy(5)=(9.8*0.1491+700*(0.05-y(4))-(y(2)-y(3))*0.0139)/0.1491;
运行时的命令及初始条件如下:[T,Y]=ode45('regulator001',[0 0.1],[103768.49 103768.49 101325 .35665927e-2 0]);
subplot(1,2,1);plot(T,Y(:,1),'r');subplot(1,2,2);plot(T,Y(:,4),'b')
但是,会出现提示:Warning: Imaginary parts of complex X and/or Y arguments ignored.此提示说明过程中有复数出现。虽然开分数次方会出现复数,但是本人已经用符号函数sign和abs处理,不应当出现复数。希望有牛人能解答。(神奇的是:将程序第三行的参数0.00023改为0.0002就不会出现复数。)