\t\tRO参数方式

RO参数方式很多种,可以采用简单类型参数、也可以采用RO特有的复合类型参数,也可以采用TParams方式。如果考虑统一入参和出参的话,建议使用复合类型参数或TParams参数。

使用复合类型参数的好处是,RO可以自动帮你序列化参数,将来使用Web Service接口,可以直接WSDL转换为不同平台语言。

使用TParams参数方式,优点是比较高效,可直接赋值给数据集TParams参数,可以使用DBClient.PackParams和DBClient.UnPackParams转换TParams参数和Olevariant格式。在实际应用中,最好将Olevariant再转换Binary参数。缺点是只能给delphi或BCB语言调用,不能直接给Web Service接口使用。

为什么下列代码算不出最终结果:%定义参数 A1=0.0318219 A2=-0.000050416 A3=-0.0071296 A4=0.0026517 B1=6.18881 B2=1.26706 C1=-0.203312 C2=1.8395 C3=-4.69069 D1=3.82918 D2=0.02369 D3=0.04495 Tro=3.2515 PrO=2.1410 hgro=26.6392 sgro=8.29281 hlro=5.20916 slro=1.70201 E1=25.5087 E2=0.493500 E3=-0.0115994 E4=-165.343 E5=-2.57351 E6=256.593 E7=3.25854 E8=-149.857 E9=1.60532 E10=0.284681 E11=-0.0053865 E12=-0.784621 E13=-0.775995 E14=0.378720 E15=0.0225936 E16=9.00572 Tb=100 Pb=1000000 R=8.314 %输入参数T与P T=100 P=2 %参数转换 T=T+273.15 P=P*100000 %定义无因次对比态 Tr=T/Tb Pr=P/Pb %液体G计算 %对数运算%更改计划为把求导求积分部分直接算出来再带入 cprl=B1+B2*Tr; F1=B1*(Tr-Tro)+B2*(Tr^2-Tro^2)/2 F2= B1*log(Tr/Tro)+B2*(Tr-Tro) %公式计算 Grl=hlro-Tr*slro+F1-Tr*F2+(A1+A3*Tr+A4*Tr^2)*(Pr-PrO)+A2*(Pr^2-PrO^2)/2 %气体G计算 %对数运算与指数运算 cprg=D1+D2*Tr+D3*Tr^2 F3= D1*(Tr-Tro)+D2*(Tr^2-Tro^2)/2+D3*(Tr^3-Tro^3)/3 F4= D1*log(Tr/Tro)+D2*(Tr-Tro)+D3*(Tr^2-Tro^2)/2 f5=Pr/PrO F5=log(f5) %公式计算 Grg=hgro-Tr*sgro+F3-Tr*F4+Tr*F5+C1*Tr*(Pr-PrO)+C2*(Pr-PrO)+C3*(Pr/Tr+Tr*PrO/Tro^2-2*PrO/Tro) %超额G计算 fr1=E1+E2*Pr+E3*Pr^2+(E4+E5*Pr)/Tr+(E6+E7*Pr^2)/Tr^2+E8/Tr^3 fr2=E9+E10*Pr+E11*Pr^2+(E12+E13*Pr)/Tr fr3=E14+E15*Pr+E16/Tr %氨与水气相摩尔分数 syms X Y Tr Pr eq1 = exp((Grl+Tr*log(X)+X*(1-X)*(fr1+fr2*(2*X-1)+fr3*(2*X-1)^2)+(1-X)*(2*(1-2*X)*fr1+(6*X-6*X^2-1)*fr2+(-10*X+24*X^2-16*X^3+1)*fr3)-Grg)/Tr)==Y; % 方程1 eq2 = exp((Grl+Tr*log(1-X)+X*(1-X)*(fr1+fr2*(2*X-1)+fr3*(2*X-1)^2)-X*(2*(1-2*X)*fr1+(6*X-6*X^2-1)*fr2+(-10*X+24*X^2-16*X^3+1)*fr3)-Grg)/Tr)==1-Y; % 方程2 known_Tr =T/Tb; known_Pr =P/Pb; eq1 = subs(eq1, [Tr, Pr], [known_Tr, known_Pr]); eq2 = subs(eq2, [Tr, Pr], [known_Tr, known_Pr]); solution = vpasolve([eq1, eq2], [X, Y]); % 显示结果 disp('解得:'); disp(['X = ', num2str(solution.X)]); disp(['Y = ', num2str(solution.Y)]);
06-05
下面代码报错:A1=0.0318219 A2=-0.000050416 A3=-0.0071296 A4=0.0026517 B1=6.18881 B2=1.26706 C1=-0.203312 C2=1.8395 C3=-4.69069 D1=3.82918 D2=0.02369 D3=0.04495 Tro=3.2515 PrO=2.1410 hgro=26.6392 sgro=8.29281 hlro=5.20916 slro=1.70201 E1=25.5087 E2=0.493500 E3=-0.0115994 E4=-165.343 E5=-2.57351 E6=256.593 E7=3.25854 E8=-149.857 E9=1.60532 E10=0.284681 E11=-0.0053865 E12=-0.784621 E13=-0.775995 E14=0.378720 E15=0.0225936 E16=9.00572 Tb=100 Pb=1000000 R=8.314 %输入参数T与P T=100 P=2 %参数转换 T=T+273.15 P=P*100000 %定义无因次对比态 Tr=T/Tb Pr=P/Pb %液体G计算 %对数运算%更改计划为把求导求积分部分直接算出来再带入 cprl=B1+B2*Tr; F1=B1*(Tr-Tro)+B2*(Tr^2-Tro^2)/2 F2= B1*log(Tr/Tro)+B2*(Tr-Tro) %公式计算 Grl=hlro-Tr*slro+F1-Tr*F2+(A1+A3*Tr+A4*Tr^2)*(Pr-PrO)+A2*(Pr^2-PrO^2)/2 %气体G计算 %对数运算与指数运算 cprg=D1+D2*Tr+D3*Tr^2 F3= D1*(Tr-Tro)+D2*(Tr^2-Tro^2)/2+D3*(Tr^3-Tro^3)/3 F4= D1*log(Tr/Tro)+D2*(Tr-Tro)+D3*(Tr^2-Tro^2)/2 f5=Pr/PrO F5=log(f5) %公式计算 Grg=hgro-Tr*sgro+F3-Tr*F4+Tr*F5+C1*Tr*(Pr-PrO)+C2*(Pr-PrO)+C3*(Pr/Tr+Tr*PrO/Tro^2-2*PrO/Tro) %超额G计算 fr1=E1+E2*Pr+E3*Pr^2+(E4+E5*Pr)/Tr+(E6+E7*Pr^2)/Tr^2+E8/Tr^3 fr2=E9+E10*Pr+E11*Pr^2+(E12+E13*Pr)/Tr fr3=E14+E15*Pr+E16/Tr %氨与水气相摩尔分数 syms X Y Tr Pr eq1=exp((Grl+Tr*log(X)+X(1-X)*(fr1+fr2*(2*X-1)+fr3*(2*X-1)^2)+(1-X)*(2*(1-2*X)*fr1+(6*X-6*X^2-1)*fr2+(-10*X+24*X^2-16*X^3+1)*fr3)-Grg)/Tr)==Y; % 方程1 eq2=exp((Grl+Tr*log(1-X)+X*(1-X)*(fr1+fr2*(2*X-1)+fr3*(2*X-1)^2)-X*(2*(1-2*X)*fr1+(6*X-6*X^2-1)*fr2+(-10*X+24*X^2-16*X^3+1)*fr3)-Grg)/Tr)==1-Y; % 方程2 known_Tr =T/Tb; known_Pr =P/Pb; eq1=subs(eq1, [Tr, Pr], [known_Tr, known_Pr]); eq2=subs(eq2, [Tr, Pr], [known_Tr, known_Pr]); solution=vpasolve([eq1, eq2], [X, Y]); % 显示结果 disp('解得:'); disp(['X = ', num2str(solution.X)]); disp(['Y = ', num2str(solution.Y)]);
06-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值