同学你好,考虑到积分不收敛主要是微分方程本身的性质,比如刚性,建议用ode23s求解
function main
tspan = [0:0.005 :2];
[t,y]=ode23s(@vdp1,tspan,[0;6]);
plot(t, y(:,1),'-o', t, y(:,2), '-o')
xlabel(' Time t') ;
ylabel(' Solution y');legend('y', 'u')
end
function dydt = vdp1(t, y)
g = 9.8;
rouw=940;
roua=0.674;
miu=2.78e-5;
d=1e-4;
dydt = [y(2);
g*(1-roua/rouw)-18*miu*(1+0.14*(y(2)-1)*sqrt(-t*3.1e-8+d^2)*roua/miu)^0.7*(y(2)-1)/rouw/(-t*3.1e-8+d^2)
];
end
不知道是不是你方程的问题,,,它在某一段不收敛,应该是有一些间断点,因此用ode45求不出来,你可以检查一下微分方程写的是否正确,如果书写正确并且所求区间一定要在[0 2]的话,不妨试一下将ode45改为ode23s或ode23t
画出图来大概是这样的: