How to use ode45 with a time dependant second order differential equation
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I have the below code for a second order ordinary differential equation. In this, the value of D depends on y (as shown by the commented line). I see from the Matlab help file for ode45, how such an equation be solved for a first order. But I don't know how to do it for a second order equation. Could you please help? Thank you.
syms h(t)
A=10*diff(h, 2);
B=8 * diff(h) ;
C=10 * h ;
%D=interp1(E(:,1),E(:,2),y)
D=2; %[
[V] = odeToVectorField(A == (D-C-B));
M = matlabFunction(V,'vars', {'t','Y'});
sol = ode45(M,[0 10],[0 0]);
fplot(@(x)deval(sol,x,1), [0, 10]);
0 commentaires
Réponses (1)
Alan Stevens
le 17 Juin 2021
Turn your second order equation into two simultaneous first order equations.
2 commentaires
Alan Stevens
le 17 Juin 2021
If you are interested only in numerical results you don't need any symbolic stuff at all.
With an equation like d^2y/dt^2 + a*dy/dt + b*y = 0, you can turn that into two first order equations bysetting
dy/dt = v
dv/dt = -a*v - b*y
Do
doc ode45
for more details.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!