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)

 採用された回答

Alan Stevens
Alan Stevens 2020 年 12 月 5 日

0 投票

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

1 件のコメント

David Vujic
David Vujic 2020 年 12 月 6 日
Thanks a lot ! You saved me.

サインインしてコメントする。

その他の回答 (3 件)

David Vujic
David Vujic 2020 年 12 月 7 日

0 投票

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 件のコメント

Alan Stevens
Alan Stevens 2020 年 12 月 7 日
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 2020 年 12 月 7 日
It works, thanks!

サインインしてコメントする。

David Vujic
David Vujic 2020 年 12 月 21 日

0 投票

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 件のコメント

Alan Stevens
Alan Stevens 2020 年 12 月 21 日
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 2020 年 12 月 21 日
Thank you !

サインインしてコメントする。

David Vujic
David Vujic 2021 年 2 月 1 日

0 投票

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 件のコメント

Alan Stevens
Alan Stevens 2021 年 2 月 1 日
You haven't specified values for xD, xB or n as far as I can see!
David Vujic
David Vujic 2021 年 2 月 1 日
xD = [0.39952; 0.59262; 0.00786; 0.00000];
xB = [0.00000; 0.00286; 0.61271; 0.38443];
Alan Stevens
Alan Stevens 2021 年 2 月 1 日
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 2021 年 2 月 2 日
Yes, that's it. Works perfect. Thanks.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeThingSpeak についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by