我需要使用ode45在t = 1,1.5和3处找到解的近似值,然后在[0.5,4]上绘制解决方案
%% 7)exp(y)+(t (exp(y)-sin(y)) y’= 0,y(2)= 1.5%7a)查找近似值…
由于y(2)= 1.5表示在t = 2,y = 1.5,您可以先使用ode45从下面的代码中得到t = 2到t = 4的答案。
tspan1 = [ 2 : 0.05 : 4]; [t1,y1]=ode45(@(t,y) -exp(y)./(t.*(exp(y))-sin(y)),tspan1,1.5); %% Index of t(3) is ((3/0.05) -1 ) y_when_t_3 = y1(((3/0.05) -1 ))
然后你可以向后使用函数来获得2.之前的值。如下所示。
tspan2 = [ 2 : -0.05 : 0.5]; [t2,y2]=ode45(@(t,y) -exp(y)./(t.*(exp(y))-sin(y)),tspan2,1.5); y_when_t_1 = y2(length(tspan2)-((1/0.05) -1 )) y_when_t_1_5 = y2(length(tspan2)-((1.5/0.05) -1 ))
现在你有t(1),t(1.5)和t(3)的值。剩下的就是情节。您可以使用以下代码进行绘图
t1 = t1'; t2 = t2'; y1 = y1'; y2 = y2'; t_plot = [fliplr(t2),t1(2:end)]; y_plit = [fliplr(y2),y1(2:end)]; plot(t_plot,y_plot); xlabel("t"); ylabel("y");