How to implement tightly coupled nonlinear odes using ode45 in matlab?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Vikash Pandey
el 12 de Nov. de 2018
Comentada: Huy Nguyen
el 7 de Dic. de 2022
I am solving a problem from fluid dynamics; in particular tightly coupled nonlinear ordinary differential equations. The following is a scaled-down version of my actual problem. I have solved system of coupled odes many times in the past but this case is different since double derivatives of one variable depends on the double derivative of another variable. How do I implement it in ode45? I need 3 x 2 = 6 plots of x, x-dot and x-ddot versus time for t, 0 to 2. All required initial conditions have zero values at t = 0 How do I store the updated value of the double derivatives as the ode45 code runs? The way ode45 works, I get x and x-dot as output but not the double derivatives. Any help will be highly appreciated.
Respuesta aceptada
Torsten
el 12 de Nov. de 2018
Solve the equations
t*x2 - x1*x2' = t^2*x1 + x2*x1'
x1'' + x2'' = t*x2 - x1*x2'
Setting
y1 = x1
y2 = x1'
y3 = x2
y4 = x2'
you arrive at the system
y1' = y2
y2' + y4' = t*y3 - y1*y4
y3' = y4
y1'*y3 + y1*y3' = t*y3 - t^2*y1
Now either solve for y1', y2, y3' and y4' in each time step or use the mass matrix facility of the ODE solvers by writing your system as
M(t,y)*y' = F(t,y)
with
M = [1 0 0 0; 0 1 0 1; 0 0 1 0; y3 0 y1 0]
F = [y2;t*y3-y1*y4;y4;t*y3-t^2*y1]
Best wishes
Torsten.
0 comentarios
Más respuestas (1)
Vikash Pandey
el 12 de Nov. de 2018
12 comentarios
Sam Chak
el 6 de Dic. de 2022
Hi @Huy Nguyen
Would advise you to post your specific problem in a New Question. Also to clarify whether it's a math-related problem or a technical problem in MATLAB code.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!