How do I plot/solve the phase portrait for functions with a range?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Afthab
el 20 de Oct. de 2016
Comentada: Mischa Kim
el 20 de Oct. de 2016
For example, if I have the following differential equation x'' = k
where k is equal to -r when x>0 r when x<0
How would I solve the above using ode45.
In this case there is a constant "r" (arbitrary), how would I use ode45 to solve that?
Shown below is my attempt at trying to at least form the graph of one equation (but I can't get MATLAB to reproduce the analytical solution). I'm quite new to this so any help would be appreciated.
f = @(t,y) [y(2);-r];
hold on
for y20=[0 0.2 0.4 0.6 2]
[ts,ys] = ode45(f,[0,20],[0;y20]);
plot(ys(:,1),ys(:,2))
end
hold off
1 comentario
Respuesta aceptada
Mischa Kim
el 20 de Oct. de 2016
4 comentarios
Mischa Kim
el 20 de Oct. de 2016
Gotcha. Try this:
function my_DE()
x0 = 0;
Dx0 = 0.2;
r = 1;
tspan = linspace(0,2,100);
options = odeset('RelTol',1e-8,'AbsTol',1e-10);
[~,X] = ode45(@DE, tspan,[x0; Dx0],options,r);
plot(X(:,1),X(:,2))
grid
end
function dX = DE(~,x,r)
dX = [x(2); k(x(1),r)];
end
function fval = k(x,r)
if (x < 0)
fval = +r;
else
fval = -r;
end
end
This needs some fine tuning.
Más respuestas (0)
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!
