Solving Coupled ODE's by ode45
显示 更早的评论
I have several ODE's with initial condition. I've given them as example.
dx/dt = dy/dt + r,
r = a*x+b (a,b are parameters)
dy/dt = z for 1st 30 minutes (z = e*f)
after 30 minutes
dy/dt = z - k*f (k,f are parameters)
How can I solve this?
4 个评论
James Tursa
2020-5-18
What have you done so far? What specific problems are you having with your code? Typically you would call ode45( ) with a time span of 30 minutes, then take that result as the initial conditions for the next time span and call ode45( ) again with the different derivative function.
Swachwa Dey
2020-5-18
James Tursa
2020-5-18
Have you looked at the ode45( ) doc? There are examples there for solving systems of equations:
Basically you make a vector (in your case a two element vector since you have two variables x and y) and then write your equations based on this vector.
Swachwa Dey
2020-5-19
回答(1 个)
James Tursa
2020-5-19
Start with your example (assuming that dx/dy was supposed to be dx/dt as you had originally):
dx/dt = 3*(dy/dt) + 4*x, dy/dt = dz/dt + 4*x and dz/dt = 4*x?
Then make these state vector definitions, using Y as the state vector for all the variables:
Y(1) = x
Y(2) = y
Y(3) = z
The derivative function would look something like this
function dYdt = myderiv(t,Y)
x = Y(1);
y = Y(2);
z = Y(3);
dzdt = 4*x; % do this one first, doesn't depend on the others
dydt = dzdt + 4*x; % then this one next since we now have dzdt
dxdt = 3*dydt + 4*x; % then do this one last since we now have dydt
dYdt = [dxdt;dydt;dzdt];
end
1 个评论
Swachwa Dey
2020-5-21
编辑:Swachwa Dey
2020-5-22
类别
在 帮助中心 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
