Equationでゼロ割対策(TRNSYS-USERSより)
2018年8月30日
2021年10月22日
ちょっとした計算に便利なEquationですが、値の組み合わせでゼロ割エラー(ゼロで除す割り算)が発生するケースがあります。
[TRNSYS-users] equation solver problem
この例ではType9から読み込んだ値を使って、A/Bのような式を計算しているとエラーが発生しています。エラーメッセージは、
“The TRNSYS Program attempted to evaluate an equation that has a division by zero”
ということなんですが、典型的なゼロ割エラーですね。読み込んでいる元データに0が含まれているようです。これはEquationに用意されている関数を使ったちょっとした工夫で対応できます。例えば、
A/(MAX(0.0001,B)
MAX関数を使って、受け取ったBの値と0.0001を比べて大きな方を使って計算を行っています。Bの値に0が来たら0.0001へ置き換えて計算するのでゼロ割エラーを避けることができます。(ただし、Bの値が正負両方の値が想定される場合は問題が発生するので、別の対策が必要です)
Equationの使い方についてはドキュメントの以下のセクションが参考になります。
- 2.7. Equations (基本的な操作方法)
- 6.3.9. The EQUATIONS Statement (用意されている関数等)
動作環境
以下の環境で動作を確認しています。
- Windows10 Pro(64bit, 1803)
- TRNSYS18.00.0019(64bit)