Search code examples
matlab-guidedifferential-equations

different Solutions for ODE45 Matlab


I am going to solve the following nonlinear DE:

Code#1:

tspan1 =t0:0.05:TT;
[t1,y1] = ode45(@(t1,T) ((1-alpha)*Q-sigm*(T.^4))/R, tspan1, t0);
h1=(TT-t0)/(size(y1,1)-1);
Tspan1=t0:h1:TT;
figure(55);plot(Tspan1,y1,'b');

Code#2:

tspan=[t0 TT];
[t,y] = ode45(@(t,T) ((1-alpha)*Q-sigm*(T.^4))/R, tspan, t0);
h=(TT-t0)/(size(y,1)-1);
Tspan=t0:h:TT;
figure(5);plot(Tspan,y,'b');

wherein:

R=2.912;          
Q = 342;          
alpha=0.3;
sigm=5.67*(10^(-8));  
TT=20;
t0=0;

why the results are different?


Solution

  • The second result is not equally spaced. It in some way a minimal set of points that represents the solution curve. So if the curve is rather linear, there will be only few points, while at regions of high curvature you get a dense sampling. You can and should use the returned time array, as that contains the times that the solution points are for,

    figure(55);plot(t1,y1,'b');
    figure(5);plot(t,y,'b');