How to Graph more than one ODE on a plot

조회 수: 10 (최근 30일)
Will Jeter
Will Jeter 2020년 11월 4일
답변: Reshma Nerella 2020년 11월 10일
I can't get my two functions for my ODEs to graph on the same plot. I'm not sure how get these to work with each other.
Volume = [0,2500];
Conversion = [0];
[V, X] = ode45(@odefun3,Volume,Conversion);
figure
plot(V,X)
xlabel('Volume')
ylabel('Conversion')
legend('No Inlet','Medium Inlet')
function dXdV = odefun3(V,X)
CA0 = 2/0.082/1100;
CI0 = CA0;
Theta = 0;
FA0 = 10;
CA01 = (CA0+CI0)/(Theta+1);
e = 1/(1+Theta);
T0 = 1100;
dHrx = 80000;
CpA = 170;
CpI = 200;
T = (X*(-dHrx)+(CpA+Theta*CpI)*T0)/(CpA+Theta*CpI);
k = exp(34.34-(34222/T));
ra = -k*CA01*(1-X)*T0/(1+e*X)/T;
dXdV = -ra/FA0;
end
[V, X] = ode45(@odefun4,Volume,Conversion);
function dXdV = odefun4(V,X)
CA0 = 2/0.082/1100;
CI0 = CA0;
Theta = 0.1;
FA0 = 10;
CA01 = (CA0+CI0)/(Theta+1);
e = 1/(1+Theta);
T0 = 1100;
dHrx = 80000;
CpA = 170;
CpI = 200;
T = (X*(-dHrx)+(CpA+Theta*CpI)*T0)/(CpA+Theta*CpI);
k = exp(34.34-(34222/T));
ra = -k*CA01*(1-X)*T0/(1+e*X)/T;
dXdV = -ra/FA0;
end

답변 (1개)

Reshma Nerella
Reshma Nerella 2020년 11월 10일
Hi,
As per my understanding, you want to plot 2 ODEs on same graph. Use can use hold command to add many plots on existing axes.
You can do it this way:
[V, X] = ode45(@odefun3,Volume,Conversion);
plot(V,X);
xlabel('Volume');
ylabel('Conversion');
hold on % to add new plot to same axes
[V, X] = ode45(@odefun4,Volume,Conversion);
plot(V,X);
xlabel('Volume');
ylabel('Conversion');
hold off % to prevent other plots using the same axes
legend('No Inlet','Medium Inlet'); % You can add legends for the plots at a time.
Hope this helps!

카테고리

Help CenterFile Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by