主要内容

標準的振子:アルゴリズム関係の問題

この例では,推定アルゴリズムの選択が非線形グレーボックスモデルの推定にどのような影響を及ぼすかを説明します。ここでは,非線形振子システム(図1)で生成されたデ,タを使用します。ここでは特に,微分方程式ソルバ,が結果にどのような影響を及ぼすかを説明します。

図 1:標準的振子の概略図

出力デ,タ

出力デ,タ(時系列デ,タ)を読み込むことからモデル化作業を始めます。デ,タには1の出力yがあり,これは振子の角度位置[rad]です。角度は,振子が下向きの時はゼロで,反時計回りに増加していきます。データポイントのサンプル(シミュレーションを実行したもの)1001年はあり,サンプル時間は0.1秒です。振子は一定の重力の影響を受けますが,振子の動作はその他の外力の影響は受けません。この状況を調べるため,iddataオブジェクトを作成します。

负载(fullfile (matlabroot“工具箱”“识别”“iddemos”“数据”“pendulumdata”));Z = iddata(y, [], 0.1,“名字”“摆”);z.OutputName =“摆的位置”;z.OutputUnit =rad的;z.Tstart = 0;z.TimeUnit =“年代”

振子の角度位置(出力)をプロットウィンドウに表示します。

图(“名字”[z。的名字:输出数据]);情节(z);

図 2:振子の角度位置(出力)

振子のモデル化

次のステップは,振子システムのモデル構造を指定することです。このダesc escナミクスは多くの書籍や資料で取り上げられ,理解されています。振子の角度位置(rad)としてx1 (t),角速度(rad / s)としてx2 (t)を選択すると,次の種類の状態空間構造を簡単に設定できます。

d / dt x1 (t) = x2 (t) d / dt x2 (t) = - (g / l) * sin (x1 (t))——(b / l ^ 2)) (m * * x2 (t)
Y (t) = x1(t)

パラメ,タ,(または定数)を次のように指定します。

g -重力常数[m/s^2] l -摆杆长度[m] b -粘性摩擦系数[Nms/rad] m -摆锤的质量[kg]

この情報を,次の内容のMATLABファescルpendulum_m。Mに入力します。

function [dx, y] = pendulum_m(t, x, u, g, l, b, m, varargin) % pendulum_m一个摆系统。
输出方程。Y = x(1);%角位置。
%状态方程。Dx = [x(2);...%角位置。- (g / l) * sin (x (1)) - b / (m * l ^ 2) * x(2)……%角速度。];

次のステップは,振子を記述する汎用idnlgreyオブジェクトを作成することです。また,入力,状態,出力,パラメ,タ,の名前と単位に関する情報も入力します。物理的な現実性を確保するため,すべてのモデルパラメ,タ,は正でなければなりません。これはすべてのパラメーターの“最低”プロパティを,MATLAB®で認識できる最小の正の値であるeps(0)に設定することで実現されます。

文件名=“pendulum_m”描述模型结构的文件。Order = [1 0 2];%模型订单[ny nu nx]。参数= [9.81;1;0.2;1);初始参数。InitialStates = [1;0);初始状态。Ts = 0;%时间连续系统。nlgr = idnlgrey(文件名,顺序,参数,InitialStates, Ts);nlgr。OutputName =“摆的位置”;nlgr。OutputUnit =rad的;nlgr。TimeUnit =“年代”;NLGR = setinit(NLGR,“名字”, {“摆的位置”“摆速度”});NLGR = setinit(NLGR,“单位”, {rad的“rad / s”});NLGR = setpar(NLGR,“名字”, {“引力常数”“长度”...的摩擦系数“质量”});NLGR = setpar(NLGR,“单位”, {“米/秒^ 2”“米”“Nms / rad”“公斤”});NLGR = setpar(NLGR,“最低”, {eps(0) eps(0) eps(0) eps(0)};%所有参数> 0。

初期の3の振子モデルの性能

パラメ,タ,の推定を始める前に,予測したパラメ,タ,値でシステムをシミュレ,トします。使用できる3つのソルバー,固定ステップ長の前進オイラー(ode1)適応ステップ長の龙格-库塔23 (ode23)適応ステップ長の龙格-库塔45(数值)について実行します。これらの3のソルバを使用して得られた出力が,プロットウィンドウに表示されます。

A.用一阶欧拉正向ODE求解器计算的模型。Nlgref = nlgr;nlgref.SimulationOptions.Solver =“ode1”%欧拉正向。fixedstep = z.Ts*0.1;步长。B.自适应龙格-库塔23 ODE求解器计算的模型。Nlgrrk23 = nlgr;nlgrrk23.SimulationOptions。解算器=“ode23”龙格-库塔23。用自适应龙格-库塔45 ODE求解器计算模型。Nlgrrk45 = nlgr;nlgrrk45.SimulationOptions。解算器=“数值”龙格-库塔45。比较(z, nlgref, nlgrrk23, nlgrrk45, 1,...compareOptions (“InitialCondition”“模型”));

図 3:3の初期振子モデルの実際の出力とシミュレションの出力の比較

見てわかるように,前進オイラー法(既定の設定で使用されるよりもグリッドは細かい)の結果は,龙格-库塔ソルバーからの結果と大幅に異なります。この場合,前進オイラーソルバーからは良好な結果(モデル一致の面から)が得られ,龙格-库塔ソルバーからの出力は多少制限されています。ただし,これは事実とは多少異なっており,後で説明しますが,粘性摩擦係数の開始値bは実際の2倍になっています。

パラメ,タ,推定

重力定数g,棒の長さl,振子玉の質量米は容易に測定でき,または推定しなくてもテーブルから取得できます。しかし,摩擦係数にはこれはあてはまらず,通常は推定しなければなりません。したがって,以前の3つのパラメーターをg = 9.81 l = 1, m = 1と固定して,bのみを自由パラメーターとします。

Nlgref = setpar(Nlgref,“固定”,{真真假真});Nlgrrk23 = setpar(Nlgrrk23,“固定”,{真真假真});Nlgrrk45 = setpar(Nlgrrk45,“固定”,{真真假真});

次に,3 b。前進オ▪▪ラ▪▪法に基づくモデル構造から始めます。

opt = nlgreyestOptions(“显示”“上”);Tef =时钟;Nlgref = nlgreyest(z, Nlgref, opt);进行参数估计。Tef = etime(时钟,Tef);

次に,龙格-库塔23ソルバ,(ode23)に基づくモデルに進みます。

Trk23 =时钟;Nlgrrk23 = nlgreyest(z, Nlgrrk23, opt);进行参数估计。Trk23 = etime(时钟,Trk23);

最後に,龙格-库塔45ソルバ,(ode45)を使用します。

Trk45 =时钟;Nlgrrk45 = nlgreyest(z, Nlgrrk45, opt);进行参数估计。Trk45 = etime(时钟,Trk45);

推定される3の振子モデルの性能

これらの3のソルバを使用した結果を,以下にまとめます。Bの実際の値は0.1で,ode 45から得られます。Ode23からは0.1に非常に近い値が返され,ode1は0.1から遠い値が返されます。

disp ('估计时间估计b值');流(' ode1: %3.1f %1.3f\n', tef, nlgref.Parameters(3).Value);流(' ode23: %3.1f %1.3f\n'参数(3).Value);流(' ode45: %3.1f %1.3f\n', trk45, nlgrrk45.Parameters(3).Value);

ただし,これによってシミュレ,ションの出力が実出力とは異なるということにはなりません。異なる微分方程式ソルバ,から生じる誤差は,通常推定手順で考慮されているからです。3の推定された振子モデルをシミュレトすることで,この事実がすぐにわかります。

比较(z, nlgref, nlgrrk23, nlgrrk45, 1,...compareOptions (“InitialCondition”“模型”));

図 4:3の推定された振子モデルの実際の出力とシミュレションの出力の比較

この図から予期されたとおり,これらのモデルの最終予測誤差(fpe)基準値も互いに近いものです。

Fpe (nlgref, nlgrrk23, nlgrrk45);

これに基づき3つのすべてのモデルで振子のダイナミクスを表現でき,前進オイラー法に基づくモデルは基礎となる物理現象をあまり反映していないことがわかります。“物”理的な性能を向上させるには,ソルバーのステップ長を減らすほかありませんが,これによって計算時間も大幅に長くなります。この実験では,精度と計算速度の両方の点で,龙格-库塔45ソルバーがノンスティッフ問題については最適なソルバーであることが示されています。

まとめ

龙格-库塔45ソルバー(数值)は比較的高速で高品質の結果を返すことが多く,この理由により,IDNLGREYにおける既定の微分方程式ソルバーとして選択されています。帮帮idnlgrey。SimulationOptions”と入力すると,使用可能なソルバーについての詳細が提示され,“帮助nlgreyestOptions”と入力するとIDNLGREYモデリングに使用できるさまざまな推定オプションについての詳細が提示されます。

その他の情報

系统辨识工具箱™を使った動的システムの同定の詳細については,系统识别工具箱製品の情報ペ,ジを参照してください。