勉強できない技術者の勉強ノート

勉強のアウトプット用に作成しています。

因果モデルと非因果モデル

因果モデルとは

 原因と結果の関係、いわゆる「因果関係」がはっきりしているモデル。

 代入操作によって、計算する順番が決まっているモデル。

 BasicやCなどのプログラミング言語はこの方式。実際に手計算で問題を解くのもこっちの考え方。

 

非因果モデルとは

 計算する順番が決まっていないモデル。

 等号で表現された方程式で作られたモデル。

 因果モデルと異なり、入出力の関係を明示する必要がないため、接続がしやすく、作成した部品を再利用しやすいのが特徴。

 Modelicaの処理系はこちらの「非因果モデル」。

 ※因果モデルが作れないわけではない。

 

 非因果モデルはどうやって計算される?

 コンピュータで計算する場合、因果モデルと同様に入出力を明確にする必要がある。

 

具体的には、既知変数(入力)と未知変数(出力)の判定をしている

  1. 時間関数で定義された変数、積分演算の状態変数は既知変数
  2. 既知変数を使って唯一の変数が解ける式がある場合、その変数は未知変数。
  3. 2.の未知変数が他の式で使われる場合、その式では既知変数とする
  4. ある変数がただ一つの式のみに表れる場合、未知変数。

当たり前だけど、方程式の数に対して、未知変数の数が多い場合は数学的に解けない

 

こうやって整理すると、非因果モデルはモデリングをしやすくするためのテクニックのように感じる。