Subtracting the two resulting graghs of my ode program

5 vues (au cours des 30 derniers jours)
MA
MA le 6 Juil 2016
Commenté : MA le 7 Juil 2016
I have two second order differential equations. I solved them with Ode45, but I want to subtract the two resulting answers from each other and plot the subtraction of the one answer from another one. How can I do that???
function dy=function1(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=sin(t)-y(1);
end
function dy=function2(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=(t^2)-2*y(1)-y(2);
end
[T,Y]=ode45(@function1,[0 10],[0 0]);
[M,X]=ode45(@function2,[0 10],[0 0]);
plot(T,Y(:,1),M,X(:,1))
I want to plot X(:,1)-Y(:,1)???

Réponse acceptée

Kelly Kearney
Kelly Kearney le 6 Juil 2016
You can either change the second input of both ode45 calls to specify specific time values to output:
tspan = linspace(0,10,100);
[T,Y]=ode45(@function1,tspan,[0 0]);
[M,X]=ode45(@function2,tspan,[0 0]);
(Here, T, M, and tspan will be equal).
Or, you could keep your original input but interpolate both output timeseries to the same grid:
y2 = interp1(T, Y, tspan);
x2 = interp1(M, X, tspan);
plot(tspan, y2(:,1)-x2(:,1));

Plus de réponses (0)

Catégories

En savoir plus sur Mathematics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by