Solving differential equation using ode45 with three variables

6 visualizaciones (últimos 30 días)
Hi I'm trying to solve a simple second-order differential equation y''-2y'+y=0, with initial conditions where y'=0 and y=0.
I have successfully made a function of
function dydt=ode5( t, y)
dydt=zeros(2,1);
dydt(1)=y(2);
dydt(2)=2*y(2)-y(1);
end
but I want to make a function that can substitute dydt=p or some other symbol to simply put it as
function dydx=ode9(x,p,y)
p=zeros(2,1);
dydx=p;
dpdx=-p+2*y;
end
but I keep getting errors. Help!
  7 comentarios
Torsten
Torsten el 21 de Ag. de 2018
The only meaningful I can think of is
[X,Y]=ode45(@(x,y)ode9(x,y(1),y(2)),tspan,y0)
function derivatives = ode9(x,y,yp)
derivatives = zeros(2,1)
dydx = yp;
dypdx = 2*yp-y;
derivatives = [dydx;dypdx]
end
Walter Roberson
Walter Roberson el 21 de Ag. de 2018
Do I understand correctly that you would like to pass in as p some indication of which y entry to use?
Would the code always be as simple as dydx being assigned y indexed at some fixed value?

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 21 de Ag. de 2018
p = 1;
[X,Y]=ode45(@(x,y)ode9(x, p, y), tspan, y0);
function derivatives = ode9(x, p, y)
derivatives = zeros(2,1);
derivatives(1) = y(p);
derivatives(2) = 2*y(p)- y(3-p);
end
Here I had to guess what you wanted. You subtract y for the second of the two derivatives, but y is a vector of two elements. I had to guess that you wanted the other y entry, the one not selected by p. When you have a p that is either 1 or 2, then 3-p would be 2 or 1, thereby selecting the other entry.

Más respuestas (1)

goutham baburaj
goutham baburaj el 9 de Jul. de 2019
thanks

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!

Translated by