1

Modelica には、(a、b、c) に依存する変数 x があります。与えられたシミュレーション時間に対して、そのプロット (x,time) は滑らかで連続的に見えます。a、b、または c に関する偏導関数に関するエラーが発生するため、der(x) を明示的に微分する必要なく、この曲線の勾配を取得したいと考えています。これは可能ですか?言い換えれば、背後にあるものを区別することなく、最終出力の勾配が必要です。

4

2 に答える 2

2

Modelica.Blocks.Continuous.Derivative x_dot(start=1) これは導関数の近似を提供します。入力として x を指定し、導関数として x_dot.y を問題なく取得しました。

于 2014-05-11T15:11:30.973 に答える
2

インテグレータや前回などにアクセスできないため、Modelica 自体でこのようなことを行うことはできません。サンプリングを使用して Modelica コードで近似値を取得できますが、これによりシミュレーション結果がわずかに変化し、パフォーマンスのボトルネックになる可能性があります。

model M Real signal = time; Real approx_der(start=0); discrete Real x(start=0); discrete Real t(start=0); equation when sample(0.1,0.1) then x = signal; t = time; approx_der = (x-pre(x)) / (t-pre(t)); end when; end M;

単純に後処理を使用する方が簡単です。結果ファイルをオクターブ、matlab、または同様の形式でロードし、近似導関数をプロットします。 plot(time(2:length(time)),diff(y) ./ diff(time))

于 2014-05-10T08:26:07.593 に答える