Borrar filtros
Borrar filtros

Solving a system of ODEs with conditionally defined coefficient

1 visualización (últimos 30 días)
Cris19
Cris19 el 15 de Dic. de 2019
Comentada: Cris19 el 15 de Dic. de 2019
Hi, I want to plot on the interval the solution of the following system of ODEs
with the initial conditions
,
where
.
I wrote the function, by defining the coefficient f, using "piecewise" sintax:
function dzdt=odefunw1(t,z)
syms t
f=piecewise(0<=t<1, -2*t^2+3*t, t>=1, 1/t);
dzdt=zeros(2,1);
dzdt(1)=z(2);
dzdt(2)=z(1)-f*z(2);
end
In the Command Window, I wrote
tspan = [0 1000];
z0 = [0.1 0.1];
[t,z] = ode45(@(t,z) odefunw1(t,z), tspan, z0);
plot(t,z(:,1),'g',t,z(:,2),'b')
But several errors occured. Where do I wrong and how could I fix it? Thanks in advance.

Respuesta aceptada

darova
darova el 15 de Dic. de 2019
replace
f=piecewise(0<=t<1, -2*t^2+3*t, t>=1, 1/t);
with
if t >= 1
f = 1/t;
else
f = -2*t^2+3*t;
end
  3 comentarios
darova
darova el 15 de Dic. de 2019
You are overwriting t variable. Remove this line:
syms t
Cris19
Cris19 el 15 de Dic. de 2019
It worked! Thank you very much!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by