Plot two lines on different graphs from integral
Show older comments
To=27+273.15; %%k
cao=0.1; %%mol/dm^3
k1=.01; %%dm^3/mol*s
tha=1;thb=1;
ha=-20000; hb=-15000; hc=-41000; %%cal/mol
cpc=30;cpa=15;cpb=15; %%cal/mol*k
sumtcp=tha*cpa+thb*cpb;
delcp=cpc-cpb-cpa;
dhrx=hc-hb-ha;
E=10000; %%cal/mol
R=1.987; %%cal/mol*k
vo=2;
fao=cao*vo;
cbo=cao;
ca=@(x) cao*(1-x);
cb=@(x) cbo*(1-x);
T=@(x) To+(-dhrx)*x/(sumtcp+delcp.*x) ;
k=@(x) k1*exp(E/R*(1/To-1/T(x)));
ra=@(x) -(k(x).*ca(x).*cb(x));
vpfr1=@(x) fao./(-ra(x));
vpfr=integral(vpfr1,0,.85);
>> xspan=0:.1:1;
>> plot(vpfr,xspan)
>>
I would like to plot x vs vpfr and T vs Vpfr on different graphs. With Vpfr being the x-axis
This gives me ablank graph
5 Comments
Rik
on 24 Apr 2020
Since vpfr is a scalar you are only plottin a single value. Is that what you mean?
Rodrigo Blas
on 24 Apr 2020
You have to convert your problem to as shown below. otherwise you will get only one value.
% Integrate the vector-valued function sin((1:5)*x) from 0 to 1:
Q = integral(@(x)sin((1:5)*x),0,1,'ArrayValued',true)
for plotting temp, just use the for loop:
T=@(x) To+(-dhrx)*x/(sumtcp+delcp.*x) ;
for i = 1:length(xspan)
Temp(i) = T(xspan(i)) ;
end
figure;plot(Temp,xspan);grid on;
Rik
on 24 Apr 2020
vpfr=integral(vpfr1,0,0.85,'ArrayValued',true);
That still returns a scalar.
@Rodrigo: you don't explain what you want to achieve, so it is difficult to give you good advice. How would you calculate the value of vpfr for a single value of xspan? Once that is clear we can help you extend it to an array.
Rodrigo Blas
on 24 Apr 2020
Accepted Answer
More Answers (0)
Categories
Find more on Mathematics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!