Time-dependent parameter in ODE solver
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Monirul Hasan
le 10 Nov 2023
Commenté : Star Strider
le 10 Nov 2023
I was trying to understand how to deal with time-dependent parameter in ODE solver. Having this error "Error using interp1>reshapeAndSortXandV - X and V must be of the same length."
Please explain what the issue.
tspan = 1:5;
y0 = 0;
a = 1:5;
[t,y] = ode45(@(t,y)fun(t,y,a),tspan, y0);
function v = fun(t,y,a)
t_dummy = t;
a = interp1(t_dummy,a,t);
v = 2*a.*t;
end
0 commentaires
Réponse acceptée
Star Strider
le 10 Nov 2023
The interp1 use in the documentation section for time-dependent parameters refers to vector arguments with a dependent variable as a function of time. The interpolation would then return an interpolated value of the dependent variable at a specific time.
You need to pass ‘tv’ (or some other time vector with appropriate limits) to ‘fun’ as well in order to do the interpolation —
tspan = 1:5;
y0 = 0;
a = 1:5;
tv = 1:5;
[t,y] = ode45(@(t,y)fun(t,y,a,tv),tspan, y0);
figure
plot(t, y)
grid
xlabel('Time')
ylabel('Y')
function v = fun(t,y,a,tv)
a = interp1(tv,a,t);
v = 2*a.*t;
end
That produces a consistent result.
.
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Ordinary Differential Equations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
