nyquist_ss
連続時間線形系(状態空間表現)のナイキスト応答
<書式>
      {re,im} = nyquist_ss(A,B,C,D)
      {re,im} = nyquist_ss(A,B,C,D,iu)
      {re,im} = nyquist_ss(A,B,C,D,iu,w)

         Array   re,im;       //実軸,虚軸
         Matrix  A,B,C,D;     //状態空間表現の4つの行列
         Integer iu;          //入力を与える入力番号
         Array   w;           //角周波数

備考1:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
    のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.

備考2:状態空間表現は次のような式であらわされます.
    上で用いている記号(x,y,A,B,C,D)と同じです.
       	.
       	x = Ax + Bu
       	y = Cx + Du

備考3:引数iuについて.
    複数入力を持つシステムの場合,どれに入力を与えるか
        で結果が変わります.1入力のシステムであれば
     iu=1;
    としておけば良いです.
<プログラム例>

Func void main()
{
	Array   re,im;       //実軸,虚軸
	Matrix  A,B,C,D;     //状態空間表現の4つの行列
	Integer iu;          //入力を与える入力番号
	Array   w;           //角周波数

	A=[[-1,2][-1,-3]];
	B=trans([0,1]);
	C=[2,0];
	D=[0];
	iu=1;
	w=logspace(-3.0,3.0,5000); //0.001〜1000[rad/s]を対数等間隔で
	                           //5000分割したベクトルを生成

	{re,im} = nyquist_ss(A,B,C,D,iu,w);

	mgplot(1,re,im);                //ナイキスト線図のプロット
	mgplot_xlabel(1,"Re");          //横軸のラベル
	mgplot_ylabel(1,"Im");          //縦軸のラベル
	mgplot_grid(1);                 //グリッドの表示
}


nyquist_tf
連続時間線形系(伝達関数の係数の対)のナイキスト応答
<書式>
      {re,im} = nyquist_tf(num,den)
      {re,im} = nyquist_tf(num,den,w)

         Array  re,im;     //実軸,虚軸
         Matrix num,den;   //伝達関数の分子,伝達関数の分母
         Array  w;         //周波数

備考1:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
    のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.

備考2:引数numとdenについて.
    伝達関数を分子(numerator)と分母(denominator)にわけています.

                   num(s) 
           G(s) = --------
                   den(s)

    numとdenはそれぞれMatrix型になっていて,分子・分母の多項式の係数
    を用いて表現します.

    例えば伝達関数がつぎのような場合,
    
    このようになります.

    num=[0,1,d];
    den=[a,b,c];
<プログラム例>


/*
 2次遅れ系の伝達関数
                      1
       G(s)= --------------------
               0.1s^2 + 0.7s +1

 のナイキスト線図を出力する.
*/

Func void main()
{
	Array  re,im;     //実軸,虚軸
	Matrix num,den;   //伝達関数の分子,伝達関数の分母
	Array  w;         //周波数

	num=[0,0,1];           //伝達関数の分子の係数
	den=[0.1,0.7,1];       //伝達関数の分母の係数

	w=logspace(-3.0,3.0,5000); //0.001〜1000[rad/s]を対数等間隔で
	                           //5000分割したベクトルを生成

	{re,im} = nyquist_tf(num,den,w);

	mgplot(1,re,im);                //ナイキスト線図のプロット
	mgplot_xlabel(1,"Re");          //横軸のラベル
	mgplot_ylabel(1,"Im");          //縦軸のラベル
	mgplot_grid(1);                 //グリッドの表示
}


nyquist_tfn
連続時間線形系(伝達関数)のナイキスト応答
<書式>
      {re,im} = nyquist_tfn(g)
      {re,im} = nyquist_tfn(g, w)

         Array     re,im;   //実軸,虚軸
         Rational  g;       //伝達関数
         Array     w;       //角周波数

備考:引数のgは有利多項式型(Rational)の伝達関数です.
   定義の仕方などはプログラム例を参考にしてください.
<プログラム例>

/*
  伝達関数
                       1
          G(s)=-----------------
                (1+0.5s)(1+0.7)

  からナイキスト応答を出力
*/

Func void main()
{
	Array      re,im;     //実軸,虚軸
	Rational   g;         //伝達関数
	Array      w;         //角周波数
	Polynomial s;         //ラプラス演算子

	s=Polynomial("s");             //sを変数宣言
	g=1/((1+0.5*s)*(1+0.7*s));     //伝達関数の定義

	w=logspace(-3.0,3.0,5000);     //0.001〜1000[rad/s]を対数等間隔で
	                               //5000分割したベクトルを生成

	{re,im} = nyquist_tfn(g, w);

	mgplot(1,re,im);                //ナイキスト線図のプロット
	mgplot_xlabel(1,"Re");          //横軸のラベル
	mgplot_ylabel(1,"Im");          //縦軸のラベル
	mgplot_grid(1);                 //グリッドの表示
}


nyquist_tfm
連続時間線形系(伝達関数行列)のナイキスト応答
<書式>
      {re,im} = nyquist_tfm(G)
      {re,im} = nyquist_tfm(G, w)

         Array    re,im;  //実軸,虚軸
         RaMatrix G;      //伝達関数行列
         Array    w;      //周波数

備考:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
   のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.
<プログラム例>

Func void main()
{
	Array      re,im;          //実軸,虚軸
	RaMatrix   G;              //伝達関数行列
	Array      w;              //周波数
	Rational   g1,g2,g3,g4;    //伝達関数
	Polynomial s;              //ラプラス演算子

	s=Polynomial("s");     //sを変数宣言
	g1=2/(s+1);            //伝達関数の定義
	g2=3/(s+2);
	g3=4/(s+3);
	g4=5/(s+4);

	G=[[g1,g2][g3,g4]];   //伝達関数行列
	print(G);

	w=logspace(-3.0,3.0,5000);     //0.001〜1000[rad/s]を対数等間隔で
	                               //5000分割したベクトルを生成

	{re,im} = nyquist_tfm(G, w);

	mgplot(1,re,im);                //ナイキスト線図のプロット
	mgplot_xlabel(1,"Re");          //横軸のラベル
	mgplot_ylabel(1,"Im");          //縦軸のラベル
	mgplot_grid(1);                 //グリッドの表示
}


nyquist_plot_ss
連続時間線形系(状態空間表現)のナイキスト線図
<書式>
      nyquist_plot_ss(A,B,C,D)
      nyquist_plot_ss(A,B,C,D,iu)
      nyquist_plot_ss(A,B,C,D,iu,w)

         Array   re,im;       //実軸,虚軸
         Matrix  A,B,C,D;     //状態空間表現の4つの行列
         Integer iu;          //入力を与える入力番号
         Array   w;           //角周波数

備考1:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
    のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.

備考2:状態空間表現は次のような式であらわされます.
    上で用いている記号(A,B,C,D)と同じです.
       	.
       	x = Ax + Bu
       	y = Cx + Du

備考3:引数iuについて.
    複数入力を持つシステムの場合,どれに入力を与えるか
        で結果が変わります.1入力のシステムであれば
     iu=1;
    としておけば良いです.
<プログラム例>

Func void main()
{
	Matrix  A,B,C,D;     //状態空間表現の4つの行列

	A=[[-1,2][-1,-3]];
	B=trans([0,1]);
	C=[2,0];
	D=[0];

	nyquist_plot_ss(A,B,C,D);   //ナイキスト線図のプロット
}


nyquist_plot_tf
連続時間線形系(伝達関数の係数の対)のナイキスト線図
<書式>
      nyquist_plot_tf(num, den)
      nyquist_plot_tf(num, den, w)

         Matrix num,den;   //伝達関数の分子,伝達関数の分母
         Array  w;         //周波数

備考1:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
    のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.

備考2:引数numとdenについて.
    伝達関数を分子(numerator)と分母(denominator)にわけています.

                   num(s) 
           G(s) = --------
                   den(s)

    numとdenはそれぞれMatrix型になっていて,分子・分母の多項式の係数
    を用いて表現します.

    例えば伝達関数がつぎのような場合,
    
    このようになります.

    num=[0,1,d];
    den=[a,b,c];
<プログラム例>

/*
 2次遅れ系の伝達関数
                      1
       G(s)= --------------------
               0.1s^2 + 0.7s +1

 のナイキスト線図
*/

Func void main()
{
	Matrix num,den;   //伝達関数の分子,伝達関数の分母

	num=[0,0,1];           //伝達関数の分子の係数
	den=[0.1,0.7,1];       //伝達関数の分母の係数

	nyquist_plot_tf(num, den);
}



nyquist_plot_tfn
連続時間線形系(伝達関数)のナイキスト線図
<書式>
      nyquist_plot_tfn(g)
      nyquist_plot_tfn(g, w)

         Rational  g;       //伝達関数
         Array     w;       //角周波数

備考1:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
    のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.

備考2:引数のgは有利多項式型(Rational)の伝達関数です.
    定義の仕方などはプログラム例を参考にしてください.
<プログラム例>

/*
  伝達関数
                       1
          G(s)=-----------------
                (1+0.5s)(1+0.7)

  からナイキスト線図を出力
*/

Func void main()
{
	Rational   g;         //伝達関数
	Polynomial s;         //ラプラス演算子

	s=Polynomial("s");             //sを変数宣言
	g=1/((1+0.5*s)*(1+0.7*s));     //伝達関数の定義

	nyquist_plot_tfn(g);
}


nyquist_plot_tfm
連続時間線形系(伝達関数行列)のナイキスト線図
<書式>
      nyquist_plot_tfm(G)
      nyquist_plot_tfm(G, w)

         RaMatrix G;      //伝達関数行列
         Array    w;      //周波数

備考:ナイキスト線図とは,フィードバック系における一巡伝達関数G(s)H(s)
   のベクトル軌跡をω=-∞〜∞の範囲で描いたものです.

<プログラム例>

Func void main()
{
	RaMatrix   G;              //伝達関数行列
	Rational   g1,g2,g3,g4;    //伝達関数
	Polynomial s;              //ラプラス演算子

	s=Polynomial("s");     //sを変数宣言
	g1=2/(s+1);            //伝達関数の定義
	g2=3/(s+2);
	g3=4/(s+3);
	g4=5/(s+4);

	G=[[g1,g2][g3,g4]];   //伝達関数行列
	print(G);

	nyquist_plot_tfm(G);
}