next up previous contents index
Next: 連続系システムのシミュレーション Up: 例題 Previous: 線形システムの伝達関数行列

     
線形システムのボードとナイキスト周波数応答

与えられた線形システムの伝達関数のボード線図とナイキスト線図を描くための データを計算する。 以下は,リストの説明である。      




   Func void main()
   {
     Polynomial s;
     Rational G;
05:  Array w, ga, ph, re, im;
     List Bode(...), Nyquist(...);
   
     s = $;                      // 多項式変数
     G = (s^2 + 3*s + 4)/(s^3 + 5*s^2 + 6*s + 7);
10:                              // 伝達関数
     w = logspace(0.01, 100.0);  // 周波数の範囲
     {ga, ph} = Bode(G, w);      // ゲインと位相
     {re, im} = Nyquist(G, w);   // 実部と虚部

15:  print [[w][re][im]] >> "nyquist.mat"; // データ保存
     print [[w][ga][ph]] >> "bode.mat";    // データ保存
   }
   
   Func List Bode(G, w)
20:  Rational G;
     Array w;
   {
     Complex j;
     Array data, ga, ph;
25:   
     j = (0,1);                    // 虚数単位
     data = eval(G, j*w);          // G(j*w)
     ga = 20.0 * log10(abs(data)); // ゲイン [dB]
     ph = arg(data) * 180.0 / PI;  // 位相  [degree]
30:  return {ga, ph};
   }
   
   Func List Nyquist(G, w)
     Rational G;
35:  Array w;
   {
     Complex j;
     Array data;

40:  j = (0,1);                    // 虚数単位
     data = eval(G, j*w);          // G(j*w)
     return {Re(data), Im(data)};  // 実部と虚部
   }



List 4:    ボード線図とナイキスト線図



Masanobu KOGA 平成10年8月19日