专栏
标签
利用if语句和for循环计算离散变量时,当离散变量变化超出if规定边界值时,if仍然会参与计算
一般问题
发布于 2025-02-08 10:58:26
查看 23过去506天

for x in 1:x-1 loop
if x_out[x]>0 and x_out[x]<1
then
Xtt1[x]=((x_out[x])/(1-x_out[x]))^0.9*(rhor431a_L/rhor431a_G)^0.5*(yitar431a_G/yitar431a_L)^0.1;
else Xtt1[x]=1;
end if;
在这里 x_out[x]为出口干度,我想计算干度在0到1之间的值。程序在一开始时干度为0.8,可以正常计算,然而随着程序进行,干度会逐渐降到0以下,然而这时if语句仍然会判别干度大于0?仍然会参与计算,导致报错。微信截图_20250208105755.png

Error:pow error: pow(zhengqifashengqi_jianhua1.zhengqifashengqi_zhuti1.x_out[10]/(1-zhengqifashengqi_jianhua1.zhengqifashengqi_zhuti1.x_out[10]), 0.9) = pow(-0.01855787982613114, 0.9)

所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
系统建模
采纳的回答
发布于 2025-02-08 17:19:57

您好,可以使用noEvent避免负数开偶次方的情况发生,可将if方程修改如下:

Xtt1[x] = noEvent(if  x_out[x]>0 and x_out[x]<1 then ((x_out[x])/(1-x_out[x]))^0.9*(rhor431a_L/rhor431a_G)^0.5*(yitar431a_G/yitar431a_L)^0.1 else 1);

全部回答 1

发布于 2025-02-08 17:19:57

您好,可以使用noEvent避免负数开偶次方的情况发生,可将if方程修改如下:

Xtt1[x] = noEvent(if  x_out[x]>0 and x_out[x]<1 then ((x_out[x])/(1-x_out[x]))^0.9*(rhor431a_L/rhor431a_G)^0.5*(yitar431a_G/yitar431a_L)^0.1 else 1);
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天