MATLAB Matlab ODE solvers: inconsistent time vector output

AI Thread Summary
When using MATLAB's ode113 to generate two sets of data with identical initial conditions but different final times, discrepancies can arise in the time vectors, leading to axis mismatches when visualizing the data with imagesc. Although both sets can produce similar results for nonstiff solutions, significant differences in time steps can occur for stiff solutions, resulting in large discrepancies between the end times of the two sets. The issue stems from the way MATLAB handles time vectors; using the format [ti:dt:tf] ensures consistent time steps, while the alternative method of specifying just [ti tf] can lead to 'infinitesimal' time steps that may cause errors. This inconsistency highlights the importance of explicitly defining the time increment to avoid complications in data visualization and analysis.
Pythagorean
Science Advisor
Messages
4,416
Reaction score
327
If I produce two different sets of data with ode113, that are based on the exact same inputs, but one is longer than the other (i.e. tf is larger for one set, we'll call it A. Both A and B have the same ti).

If I compare the two plots with imagesc(A) (so that the vertical axis represents the indices themselves, which are the time steps of integration) everything is fine.

If I try to append the time vector with:

imagesc(xvalues,[0 (max(TA))]m A]

for both A and B (and TA and TB respectively), I suddenly have a mismatch on the axes. This indicates to me, that the time vectors are inconsistent, but why? What's the point of them then?

For a nonstiff solution (which ode113 is designed for) the difference is small (the same event is at TAe = 2220 and TBe = 2255

but in a different parameter point, where the solution terminates to stability rather quickly (stiff) the difference between TAe and TBe are on the order of thousands.
 
Physics news on Phys.org
Solved it (or at least mended...)

Matlab gives the option of inputing your time vector as [ti tf] OR as [ti:dt:tf]. Supposedly, if you don't specify dt, it just reports it's 'infinitesimal' time steps to the gnitty gritty detail. But that shouldn't lead to errors, should it? Well it does.

Apparently, ti:dt:tf is the way to do it for consistent T vector out. Not sure why they allow the erroneous option.
 

Similar threads

Back
Top