Code needs to display:
Code is displaying a blank graph.
clear,clc
R=8.314; T1=60+273.15; PvapH=.7583;PvapT=.3843;HvapH=29000;HvapT=31000;P=.7;
fPvapH1=@(T2) PvapH*exp(-1*HvapH/R*((1./T2)-(1/T1)));
fPvapT1=@(T2) PvapT*exp(-1*HvapT/R*((1./T2)-(1/T1)));
fxH=@(x) (x*PvapH/P)+((1-x)*PvapT/P)-1;
xH=fzero(fxH,.7);
xT=1-xH;
fBPH=@(T2) (((xH*fPvapH1(T2))/P)+((xT*fPvapT1(T2))/P))-1;
BPH=fzero(fBPH,340);
yH=xH*fPvapH1(BPH)/P;
yT=xT*fPvapT1(BPH)/P;
T=linspace(55,80,100);
figure(1)
plot(xH,fBPH(T))
hold on
plot(yH,fBPH(T))
hold off
axis([0 1 55 80])

5 Comments

  • xH and yH are not vectors
  • this T should be in celcius or kelvin? it returns -1 -1 -1 -1...
R=8.314; T1=60+273.15; PvapH=.7583;PvapT=.3843;HvapH=29000;HvapT=31000;P=.7;
fPvapH1=@(T2) PvapH*exp(-1*HvapH/R*((1./T2)-(1/T1)));
fPvapT1=@(T2) PvapT*exp(-1*HvapT/R*((1./T2)-(1/T1)));
fxH=@(x) (x*PvapH/P)+((1-x)*PvapT/P)-1;
xH=fzero(fxH,.7)
xH = 0.8441
xT=1-xH;
fBPH=@(T2) (((xH*fPvapH1(T2))/P)+((xT*fPvapT1(T2))/P))-1;
BPH=fzero(fBPH,340);
yH=xH*fPvapH1(BPH)/P
yH = 0.9144
yT=xT*fPvapT1(BPH)/P;
T=linspace(55,80,100);
fBPH(T)
ans = 1×100
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
I attached the graphs that the code should display. I am unsure if I need for loops.
T should be Celsius
In the equation
fxH=@(x) (x*PvapH/P)+((1-x)*PvapT/P)-1;
all parameters are given constants except x.
But PvapH and PvapT should depend on T, I guess.
This is the question. I am pretty sure I need a for loop to display the graphs.

Sign in to comment.

 Accepted Answer

Torsten
Torsten on 10 Mar 2022
Edited: Torsten on 11 Mar 2022
R = 8.314;
T1 = 60 + 273.15;
PvapH = .7583;
PvapT = .3843;
HvapH = 29000;
HvapT = 31000;
P = .7;
fPvapH = @(T) PvapH*exp(-HvapH/R*(1./T - 1/T1));
fPvapT = @(T) PvapT*exp(-HvapT/R*(1./T - 1/T1));
XH = 0:0.01:1;
Tstart = 340;
for i=1:numel(XH)
xH = XH(i);
fun = @(T) xH*fPvapH(T)/P + (1-xH)*fPvapT(T)/P - 1;
T(i) = fzero(fun,Tstart);
Tstart = T(i)
end
YH = XH.*fPvapH(T)/P;
XT = 1-XH;
YT = XT.*fPvapT(T)/P;
T = T - 273.15;
figure(1)
plot(XH,T)
hold on
plot(YH,T)
hold off
axis([0 1 55 80])
figure(2)
plot(XT,T)
hold on
plot(YT,T)
hold off
axis([0 1 55 80])

More Answers (1)

Benjamin Thompson
Benjamin Thompson on 10 Mar 2022
xH, yH, and BPH are all scalar values. They must be the same length as fBPH(T). In this line to you mean to pass a vector argument to the fxH function handle?
xH=fzero(fxH,.7);

2 Comments

Yes I did. The graph is supposed to look like the graph on the left (image I attached). To make the image on the right I need to do yH(xH).
Image of graphs needed to display is attached.

Sign in to comment.

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products

Release

R2021b

Asked:

on 10 Mar 2022

Edited:

on 11 Mar 2022

Community Treasure Hunt

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

Start Hunting!