如何解决两个函数有两个未知变量和一组知道变量使用fsolve函数吗?

4视图(30天)
大家好。
我试图让下面的代码来解决未知变量(x(1),(2)在不同温度(T)。我可以解决系统使用fsolve函数只有当我走进T值马努Psat_f作用。然而,我想做一个循环为T的范围计算,可以得到一个表的发现在每一个温度。
我新的matlab。我感谢任何帮助的技巧在这方面。
我的代码是:
%确定饱和蒸汽压,饱和液体压力,&
%在不同温度下饱和压力。
%条件:
% P_sat = = P_l = = P_v (F (1)) & & fugacity_l = = fugacity_v (F (2))。
R = 8.3145;%通用气体常数MPa.cm3 / (K.mol)
一个= 553661.24;就是secu * tanu减去vdW %常数MPa.cm6 / mol2水
b = 30.49;就是secu * tanu减去vdW %常数b为水立方厘米/摩尔
Tc = 8 * a / b (27 * * R);
电脑= a / b (27 * ^ 2);
T = 274: 1: 674
x0 = [32 3000];
有趣= @Psat_f;
x = fsolve(有趣,x0);
六世= x (1,1);
vv = x (1、2);
P_l = R * T / (vl-b) /(六世^ 2);
P_v = R * T / (vv-b) / (vv ^ 2);
流(临时的凯西:% d,液体压力:% 4.4 f,蒸汽压:% 4.4 f,液体体积:% 4.4 f,蒸汽体积:% 4.4 f '六世,T P_l P_v vv);
结束
函数F = Psat_f (x)
R = 8.3145;
一个= 553661.24;
b = 30.49;
F (1) = (R * T / (x (1) - b) - a / (x (1) ^ 2)) - - - (R * T / (x (2) - b) - a / (x (2) ^ 2));
F (2) = ((1 / (1 - (b / x (1)))——/ (R * T * x(1))) 1 -日志((1 / (1 - (b / x (1)))——/ (R * T * x (1))) (((b * (R * T / (x (1) - b) - a / (x (1) ^ 2))) / (R (T))) (((* (R * T / (x (1) - b) - a / (x (1) ^ 2))) / (R * T) ^ 2) / (1 / (1 - (b / x (1)))——/ (R * T * x (1))))) ((1 / (1 - (b / x (2)))——/ (R * T * x(2))) 1 -日志((1 / (1 - (b / x (2)))——/ (R * T * x (2))) (((b * (R * T / (x (2) - b) - a / (x (2) ^ 2))) / (R (T))) (((* (R * T / (x (2) - b) - a / (x (2) ^ 2))) / (R * T) ^ 2) / (1 / (1 - (b / x (2)))——/ (R * T * x (2))));
结束

接受的答案

明星黾
明星黾 2021年6月24日
“Psat_f” 函数需要作为参数——“T”
%确定饱和蒸汽压,饱和液体压力,&
%在不同温度下饱和压力。
%条件:
% P_sat = = P_l = = P_v (F (1)) & & fugacity_l = = fugacity_v (F (2))。
R = 8.3145;%通用气体常数MPa.cm3 / (K.mol)
一个= 553661.24;就是secu * tanu减去vdW %常数MPa.cm6 / mol2水
b = 30.49;就是secu * tanu减去vdW %常数b为水立方厘米/摩尔
Tc = 8 * a / b (27 * * R);
电脑= a / b (27 * ^ 2);
T = 274: 100: 674
T = 1×5
274 374 474 574 674
k = 1:元素个数(T)
x0 = [32 3000];
有趣= @ (x) Psat_f (x, T (k));
x = fsolve(有趣,x0);
六世= x (1,1);
vv = x (1、2);
P_l = R * T / (vl-b) /(六世^ 2);
P_v = R * T / (vv-b) / (vv ^ 2);
流(临时的凯西:% d,液体压力:% 4.4 f,蒸汽压:% 4.4 f,液体体积:% 4.4 f,蒸汽体积:% 4.4 f '六世,T P_l P_v vv);
:十五(k) = x;
结束
方程解决。fsolve完成因为函数值接近于零的向量的值函数的宽容,问题出现普通的梯度。
临时在K: 274年,液体压力:374.0000,蒸汽压:474.0000,液体体积:574.0000,蒸汽体积:674.0000 K温度:1.813924 e-01,液体压力:158.3925,蒸汽压:316.6036,液体体积:474.8147,蒸汽体积:633.0258 K温度:1.813924 e-01,液体压力:0.2489,蒸汽压:0.3164,液体体积:0.3840,蒸汽体积:0.4515 K温度:3.574532 e + 01,液体压力:12343.1820,蒸汽压:
方程解决。fsolve完成因为函数值接近于零的向量的值函数的宽容,问题出现普通的梯度。
临时在K: 274年,液体压力:374.0000,蒸汽压:474.0000,液体体积:574.0000,蒸汽体积:674.0000 K温度:-9.623121 e + 01,液体压力:1.5385,蒸汽压:99.3083,液体体积:197.0780,蒸汽体积:294.8477 K温度:1.084431 e + 00,液体压力:1.5385,蒸汽压:1.9926,液体体积:2.4467,蒸汽体积:2.9008 K温度:3.899417 e + 01,液体压力:1861.5139,蒸汽压:
方程解决。fsolve完成因为函数值接近于零的向量的值函数的宽容,问题出现普通的梯度。
临时在K: 274年,液体压力:374.0000,蒸汽压:474.0000,液体体积:574.0000,蒸汽体积:674.0000 K温度:-1.173422 e + 02,液体压力:-55.8955,蒸汽压:5.5512,液体体积:66.9979,蒸汽体积:128.4446 K温度:2.506300 e + 00,液体压力:4.0288,蒸汽压:5.5512,液体体积:7.0737,蒸汽体积:8.5961 K温度:4.402124 e + 01,液体压力:576.6152,蒸汽压:
解算器过早地停止。fsolve停止,因为它超过了极限迭代,选择。MaxIterations = 4.000000 e + 02。
临时在K: 274年,液体压力:374.0000,蒸汽压:474.0000,液体体积:574.0000,蒸汽体积:674.0000 K温度:-6.608626 e + 01,液体压力:-41.6430,蒸汽压:-17.1998,液体体积:7.2434,蒸汽体积:31.6866 K温度:7.072990 e-01,液体压力:0.9880,蒸汽压:1.2687,液体体积:1.5494,蒸汽体积:1.8301 K温度:6.450556 e + 01,液体压力:2992.5234,蒸汽压:
方程解决。fsolve完成因为函数值接近于零的向量的值函数的宽容,问题出现普通的梯度。
临时在K: 274年,液体压力:374.0000,蒸汽压:474.0000,液体体积:574.0000,蒸汽体积:674.0000 K温度:8.711441 e-01,液体压力:1.2247,蒸汽压:1.5782,液体体积:1.9318,蒸汽体积:2.2853 K温度:8.712676 e-01,液体压力:1.2249,蒸汽压:1.5785,液体体积:1.9321,蒸汽体积:2.2857 K温度:2.382269 e + 03,液体压力:2381.8948,蒸汽压:
十五
十五= 5×2
1.0 e + 04 * 0.0036 1.2343 0.0039 0.1862 0.0044 0.0577 0.0065 0.2993 0.2382 0.2382
函数F = Psat_f (x, T)
R = 8.3145;
一个= 553661.24;
b = 30.49;
F (1) = (R * T / (x (1) - b) - a / (x (1) ^ 2)) - - - (R * T / (x (2) - b) - a / (x (2) ^ 2));
F (2) = ((1 / (1 - (b / x (1)))——/ (R * T * x(1))) 1 -日志((1 / (1 - (b / x (1)))——/ (R * T * x (1))) (((b * (R * T / (x (1) - b) - a / (x (1) ^ 2))) / (R (T))) (((* (R * T / (x (1) - b) - a / (x (1) ^ 2))) / (R * T) ^ 2) / (1 / (1 - (b / x (1)))——/ (R * T * x (1))))) ((1 / (1 - (b / x (2)))——/ (R * T * x(2))) 1 -日志((1 / (1 - (b / x (2)))——/ (R * T * x (2))) (((b * (R * T / (x (2) - b) - a / (x (2) ^ 2))) / (R (T))) (((* (R * T / (x (2) - b) - a / (x (2) ^ 2))) / (R * T) ^ 2) / (1 / (1 - (b / x (2)))——/ (R * T * x (2))));
结束
我缩短了 “T” 向量,以便它不会暂停在线运行特性。我还保存的值 “x” “十五” 矩阵。

更多的答案(0)

类别

找到更多的在流体动力学帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!