专栏
标签
函数没有办法识别输入的值?
一般问题
发布于 2024-12-09 12:45:30
查看 17过去567天

向函数输入焓值和压强,通过函数查表得到温度,粘度等参数。函数
T_r431a[1]:=50.000;
T_r431a[2]:=51.000;
T_r431a[3]:=52.000;
T_r431a[4]:=53.000;
T_r431a[5]:=54.000;
T_r431a[6]:=55.000;
T_r431a[7]:=56.000;
rho_r431a[1]:=502.62;
rho_r431a[2]:=499.92;
rho_r431a[3]:=497.15;
rho_r431a[4]:=494.33;
rho_r431a[5]:=52.247;
rho_r431a[6]:=51.688;
rho_r431a[7]:=51.153;
H_r431a[1]:=1409.4;
H_r431a[2]:=1418.3;
H_r431a[3]:=1427.1;
H_r431a[4]:=1436.1;
H_r431a[5]:=2178.1;
H_r431a[6]:=2185.7;
H_r431a[7]:=2193.1;

判别公式为
for j in 1:24 loop
if H_r431a[j]<=Hr431a and Hr431a<=H_r431a[j+1]
then beita:=(T_r431a[j+1]-Tr431a)/(T_r431a[j+1]-T_r431a[j]);
rhor431a := rho_r431a[j+1]*(1-beita)+rho_r431a[j]beita;
cpr431a := cp_r431a[j+1]
(1-beita)+cp_r431a[j]beita;
yitar431a := yita_r431a[j+1]
(1-beita)+yita_r431a[j]beita;
lamdar431a := lamda_r431a[j+1]
(1-beita)+lamda_r431a[j]beita;
Tr431a := T_r431a[j+1]
(1-beita)+T_r431a[j]*beita;
为了辨别焓值处于哪一个位置
所以加入了判断
elseif Hr431a>H_r431a[25]
then rhor431a := 26;
cpr431a := 2200;
yitar431a := 0.000074293;
lamdar431a := 0.030881;
Tr431a :=360;
elseif Hr431a<H_r431a[1]
then rhor431a := 26;
cpr431a := 2200;
yitar431a := 0.000074293;
lamdar431a := 0.030881;
Tr431a :=330;
else
rhor431a := 26;
cpr431a := 2200;
yitar431a := 0.000074293;
lamdar431a := 0.030881;
Tr431a :=300;
然而,当输入焓值为1409.4时,判断给出的是else。即使是1410也是else语句;这是因为什么啊?明明焓值处于H_r431a[j]<=Hr431a and Hr431a<=H_r431a[j+1]中啊
附件中用到的文件是test和R431a

所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
系统建模
附件 1 个附件(8kb)

全部回答 1

发布于 2024-12-09 16:51:28

您好,这跟函数的判断条件代码有关,如果按照图中的方式进行判断,那么函数会根据最后循环的值进行判断后再计算输出值,所以最后都是转到else分支上,建议您修改代码
image.png

用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天