How to use ode45 with a time dependant second order differential equation

1 次查看(过去 30 天)
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]);

回答(1 个)

Alan Stevens
Alan Stevens 2021-6-17
Turn your second order equation into two simultaneous first order equations.
  2 个评论
curiously learning
curiously learning 2021-6-17
Thank you for the suggestion. That is where I am struggling. To convert, one has to use a odetovectorfield, and I don't know how to use it in this context. Could you perhaps give an example?
Alan Stevens
Alan Stevens 2021-6-17
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by