如果两个数组的声明
3视图(30天)
显示旧的评论
我编程的化学反应。我想确保产品生产的数量不超过可用的反应物的量(特别是反应物的量的赤字)。dS是产品生产的数量,cA的浓度,cB B的浓度,k1是速率常数,dt是第i个步骤的时间间隔。这是我迄今为止:
:dS (i + 1) = k1 * cA (i + 1:)。* cB * dt(我+ 1,);
如果:dS (i + 1) > cA(我+ 1)| cB(我+ 1,);
:dS (i + 1) = min (cA(我+ 1,),cB(我+ 1,);
结束
代码似乎产生正确的结果。但是有很多行和列在每个表,实际上对我来说很难检查每个单元中的结果。
如下的代码的意图。第一行第i个时间步计算dS。然后if语句检查以确保dS的计算值不超过限制反应物的量,这可能是一个或b。如果是这样,第三行代码替换值的细胞,这个overcalculation发生与cA的价值或cB取决于哪一个是反应物在赤字。
Overcalculation可能因为这是一个即时的酸和碱之间的反应。我会很感激如果有人能帮我验证这个代码匹配我的意图,即使这个代码不是最有效的。然而,建议更高效的代码肯定是受欢迎的
答案(1)
默罕默德·萨米
2021年6月22日
我不能评论化学工程方面。但是假设您的数据有多个列,你只是想取代列中的值的条件是正确的,你可以这样做。
:气孔导度= dS (i + 1) > cA(我+ 1)| dS (i + 1:) > cB(我+ 1,);
如果任何(电导率)
更换= min (cA(我+ 1,),cB(我+ 1,);
dS (i + 1,气孔导度)=替代(:,气孔导度);
结束