Subtracting the two resulting graghs of my ode program

조회 수: 1 (최근 30일)
MA
MA 2016년 7월 6일
댓글: MA 2016년 7월 7일
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)???

채택된 답변

Kelly Kearney
Kelly Kearney 2016년 7월 6일
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));

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by