MATLAB: Optimize code using loop

loop functionMATLAB

clc; clear all; close all;
Tc = 369.8; % Propan critical Temp in K
funPr = @(Vr,Tr) 8/3 * Tr./(Vr – 1/3) – 3./(Vr.^2); % van der Waals equation of state for a gas
T = 300
Tr = T / Tc;
Vr = linspace(0.5,4,100);
Pr1 = funPr(Vr,Tr);
T = 310;
Tr = T / Tc;
Vr = linspace(0.5,4,100);
Pr2 = funPr(Vr,Tr);
T = 320;
Tr = T / Tc;
Vr = linspace(0.5,4,100);
Pr3 = funPr(Vr,Tr);
T = 330;
Tr = T / Tc;
Vr = linspace(0.5,4,100);
Pr4 = funPr(Vr,Tr);
% Plot the P_V Equaiton of State
figure; hold all
plot (Vr,Pr1)
plot (Vr,Pr2)
plot (Vr,Pr3)
plot (Vr,Pr4)
ylim([-0.5 2])
xlabel('V reduced')
ylabel('P reduced')

Best Answer

Check the comments within the code:
clc; clear all; close all;
Tc = 369.8; % Propan critical Temp in K
funPr = @(Vr,Tr) 8/3 * Tr./(Vr - 1/3) - 3./(Vr.^2); % van der Waals equation of state for a gas
T = 300:10:330; %start by creating vector which holds your temperatures
Vr = linspace(0.5,4,100); %there is no need to re-declare Vr every time in the code.
for i=1:length(T) %for loop cycles through all the temperatures stored in T
Tr = T(i)/Tc;
Pr(i,:) = funPr(Vr,Tr); %Pr(i,:) is a matrix that stores your results
end
plot(Vr,Pr); %plot
ylim([-0.5 2])
xlabel('V reduced')
ylabel('P reduced')
You can increase the T vector size (change 330 to 400 for example) to add more isotherms to plot for the van der Waals equation.