Second Order, Piecewise ODE help
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Lgreer
el 13 de Mzo. de 2016
Comentada: Lgreer
el 16 de Mzo. de 2016
I'm very new to MatLab and need to solve a second order ODE that equals a piecewise function. I've looked up how to solve a second order ODE with ode45 and how to solve a piecewise ODE, but I'm not sure how to combine them. Further, the IVP I need to solve does not have a y' value and I do not know how to deal with that.
The IVP is:
y'' + 4y = g(t), y(0)=y'(0)=0
where: g(t) = 0 in 0<=t<5; (t-5)/5 for 5<=t<10; 1 for t>=10
Thanks in advance, Logan
0 comentarios
Respuesta aceptada
Torsten
el 14 de Mzo. de 2016
fun=@(t,y)[y(2);-4*y(1)];
y0=[0 0];
tspan=[0 5];
[T1,Y1]=ode45(fun,tspan,y0);
fun=@(t,y)[y(2);-4*y(1)+(t-5)/5;
y0=[Y1(end,1) Y1(end,2)];
tspan=[T1(end) 10];
[T2,Y2]=ode45(fun,tspan,y0);
fun=@(t,y)[y(2);-4*y(1)+1];
y0=[Y2(end,1) Y2(end,2)];
tspan=[T2(end) 20];
[T3,Y3]=ode45(fun,tspan,y0);
Now put T1, T2, T3 and Y1, Y2, Y3 together to get the result of your ODE on [0 20].
Best wishes
Torsten.
Más respuestas (1)
Torsten
el 16 de Mzo. de 2016
Does this work ?
T=vertcat(T1(1:end),T2(2:end),T3(2:end));
Y=vertcat(Y1(1:end,1),Y2(2:end,1),Y3(2:end,1));
plot(T,Y:,1))
Best wishes
Torsten.
Ver también
Categorías
Más información sobre Ordinary Differential Equations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!