1

伝熱問題の連立方程式を解くためにModelicaを使用していますが、そのうちの1つは次のように記述された輻射です。

Ta^4-Tb^4 

誰かが次のように書かれた方程式でシステムを解くのが計算上速いかどうかを言うことができますか?

(Ta-Tb)(Ta+Tb)(Ta^2+Tb^2)

4

2 に答える 2

2

この質問に対する決定的な答えはあり得ません。これは、Modelica仕様が問題ステートメントを正式に定義するために使用されているが、ツールがそのような方程式をどのように解決するかについては何も述べていないためです。さらに、ほとんどのModelicaツールはとにかく記号操作を行うため、そのような方程式でどのような手順を踏むかを予測することは困難です。たとえば、ツールはこれを(手動の介入なしで)それ自体でホーナー多項式に非常によく変換する場合があります。

非線形システムなどの方程式で温度を解く場合は、負の温度の解に注意してください。「start」属性を調べて、これらの温度が非線形問題の反復変数である場合の初期(正)の推測を指定する必要があります。

于 2011-12-17T10:40:29.710 に答える
1

それを(Ta-Tb)(Ta + Tb)(Ta ^ 2 + Tb ^ 2)に分割するのが遅く、速くない理由は2つあると思います。

  1. (Ta ^ 2 + Tb ^ 2)には2回の乗算と加算が必要です。つまり、(Ta-Tb)(Ta + Tb)(Ta ^ 2 + Tb ^ 2)には4回の乗算と3回の加算が必要です。一方、Ta ^ 4-Tb ^ 4は次のように行われると思います:((Ta ^ 2)^ 2-(Tb ^ 2)^ 2)これは1つの加算と4つの乗算を意味します。

  2. Mathematicaは、より一般的なコンパイラのように、これらの非常に単純な式を最適化する方法をおそらくよく知っています。つまり、計算時間の観点から、簡単に推測して超効率的なマシンコードに変換できる単純なパターンを使用する方が一般的に安全です。

私は明らかに間違っているかもしれませんが、(Ta-Tb)(Ta + Tb)(Ta ^ 2 + Tb ^ 2)がより速くなる理由はわかりません。それが役に立てば幸い。

オスカー

于 2011-12-15T09:21:50.290 に答える