I need to write code for this problem in Octave, this is MathCad file.
I don't know how to code this part with Kvalues.
s = [0.3; 0.5; 0.2];
P = 10;
fi = 0.7;
n = 3;
A = [9.1058; 9.0580; 9.2131];
B = [1872.46; 2154.9; 2477.07];
C = [-25.16; -34.42; -39.94];
Tmin = [164; 195; 220];
Tmax = [249; 290; 330];
Pn = 10.^(A-B./(T+C));
K = Pn./P
f = @(T) (sum(s/(1+fi*(Kvrednost)-1)))-1 ;
Tguess = 50 ;
Temperatura = fzero(f, Tguess)

 Akzeptierte Antwort

Alan Stevens
Alan Stevens am 5 Dez. 2020

0 Stimmen

Like this perhaps:
s = [0.3; 0.5; 0.2];
P = 10;
fi = 0.7;
n = 3;
A = [9.1058; 9.0580; 9.2131];
B = [1872.46; 2154.9; 2477.07];
C = [-25.16; -34.42; -39.94];
Tmin = [164; 195; 220];
Tmax = [249; 290; 330];
f = @(T) sum(s./(1+fi*(Kfn(n,P,T,A,B,C)-1)))-1 ;
Tguess = 50 ;
Temperatura = fzero(f, Tguess);
disp(Temperatura)
function K = Kfn(n,P,T,A,B,C)
T = T + 273.15;
K = zeros(n,1);
for i = 1:n
Pn = A(i) - B(i)/(T + C(i));
Pn = exp(Pn);
K(i) = Pn/P;
end
end

Weitere Antworten (3)

David Vujic
David Vujic am 7 Dez. 2020

0 Stimmen

I have one more question. I can't get temp = 78.225, I always get 119.23. What is the problem ?
n = 3;
s = [0.3; 0.5; 0.2];
P = 10;
fi = 0.7;
Tnk = [231.1; 272.7; 309.2];
Tc = [369.8; 425.2; 469.7];
pc = [42.5; 38; 33.7];
function K = Kfn(n,P,T,Tnk,Tc,pc)
T = T + 273.15;
K = zeros(n,1);
for i = 1:n
Tr = T/Tc(i);
Tmk = Tnk(i)/Tc(i);
A = (Tmk/(1-Tmk))*log(pc(i)/1.01325);
lgPrsat = A*(1-(1/Tr));
Prsat = 10^lgPrsat;
Pn = Prsat*pc(i);
K(i) = Pn/P;
end
end
f = @(T) sum(s./(1+fi*(Kfn(n,P,T,Tnk,Tc,pc)-1)))-1 ;
Tguess = 90 ;
Temperatura = fzero(f, Tguess);
disp(Temperatura)

2 Kommentare

In Mathcad log is log to the base 10; in MATLAB it is log to the base e. Change
A = (Tmk/(1-Tmk))*log(pc(i)/1.01325);
to
A = (Tmk/(1-Tmk))*log10(pc(i)/1.01325);
David Vujic
David Vujic am 7 Dez. 2020
It works, thanks!

Melden Sie sich an, um zu kommentieren.

David Vujic
David Vujic am 21 Dez. 2020

0 Stimmen

How to code this in Matlab ?
I tried it, but errors occur always.
xF = [0.015;0.025;0.59;0.37];
F = 179;
f1 = @(D,B,xD,xB) D*xD+B*xB-F*xF;
Dguess = 100;
Bguess = 79;
xDguess = [0;0;0;0];
xBguess = [0;0;0;0];
((D*xD(2))/(F*xF(2))) = 0.89;
((B*xB(3))/(F*xF(3))) = 0.9995;
xD(4) = 0;
xB(1) = 0;
sum(xD) = 1;
sum(xB) = 1;
rez = fzero(f1,Dguess,Bguess,xDguess,xBguess)

2 Kommentare

fzero only allows you to find a single value.
The Mathcad calculation you have here is very heavy-handed! The parameters can be calculated in the following straightforward manner:
Fxf = 179*[0.015; 0.025; 0.59; 0.37];
DxD1 = Fxf(1);
DxD2 = 0.89*Fxf(2);
BxB2 = -DxD2 + Fxf(2) ;
BxB4 = Fxf(4);
BxB3 = 0.9995*Fxf(3);
DxD3 = -BxB3 + Fxf(3);
D = DxD1 + DxD2 + DxD3;
B = BxB2 + BxB3 + BxB4;
xD = [DxD1; DxD2; DxD3; 0]/D;
xB = [0; BxB2; BxB3; BxB4]/B;
disp(['D = ', num2str(D)])
disp(['B = ', num2str(B)])
disp('xD = '), disp(xD)
disp('xB = '), disp(xB)
David Vujic
David Vujic am 21 Dez. 2020
Thank you !

Melden Sie sich an, um zu kommentieren.

David Vujic
David Vujic am 1 Feb. 2021

0 Stimmen

New and last problem for this project.
I got Tvrh = 47.8817 and Tdno = 97.2349, I need this highlighted results. What is the problem ?
A = [9.2806; 9.3935; 9.3993; 9.3991];
B = [2788.51; 3096.52; 3272.47; 3328.57];
C = [-52.36; -53.67; -59.95; -63.72];
Pkljuc = @(s,T) sum(s.*exp(A.-B./((T+273.15)+C)));
Pkljuc(xD,45)
P = 0.17790;
Pvrha = 0.2;
Pdno = 0.28;
function K = Kfn(n,P,T,A,B,C)
T = T + 273.15;
K = zeros(n,1);
for i = 1:n
Pn = A(i) - B(i)/(T + C(i));
Pn = exp(Pn);
K(i) = Pn/P;
end
end
s = xD;
f1 = @(T) sum(s.*(Kfn(n,Pvrha,T,A,B,C)))-1;
T1guess = 50 ;
Tkljucanja = fzero(f1, T1guess);
T1 = Tkljucanja+273.15;
disp (["Temperatura kljucanja = ", num2str(Tkljucanja) , " deg C "]);
s = xB;
f2 = @(T) sum(s./(Kfn(n,Pdno,T,A,B,C)))-1 ;
T2guess = 50 ;
Trose = fzero(f2, T2guess);
T2 = Trose+273.15;
disp (["Temperatura rose = ", num2str(Trose) , " deg C "]);

4 Kommentare

Alan Stevens
Alan Stevens am 1 Feb. 2021
You haven't specified values for xD, xB or n as far as I can see!
xD = [0.39952; 0.59262; 0.00786; 0.00000];
xB = [0.00000; 0.00286; 0.61271; 0.38443];
I think you have your functions f1 and f2 defined with the wrong operator.
Instead of
f1 = @(T) sum(s.*(Kfn(n,Pvrha,T,A,B,C)))-1;
use
f1 = @(T) sum(s./(Kfn(n,Pvrha,T,A,B,C)))-1;
and instead of
f2 = @(T) sum(s./(Kfn(n,Pdno,T,A,B,C)))-1 ;
use
f2 = @(T) sum(s.*(Kfn(n,Pdno,T,A,B,C)))-1 ;
David Vujic
David Vujic am 2 Feb. 2021
Yes, that's it. Works perfect. Thanks.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu ThingSpeak finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by