step_ss
連続時間線形系(状態空間表現)のステップ応答
<書式>
       {Y,X} = step_ss(A,B,C,D,iu,T)

          Matrix  X,Y;       //状態X,出力Y
          Matrix  A,B,C,D;   //状態空間表現の4つの行列
          Integer iu;        //単位ステップを入力する入力番号
          Matrix  T;         //時間列

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

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

Func void main()
{
	Matrix X,Y;       //状態X,出力Y
	Matrix A,B,C,D;   //状態空間表現の4つの行列
	Integer iu;       //単位ステップを入力する入力番号
	Matrix T;         //時間列

	A=[[-1,2][-1,-3]];
	B=trans([0,1]);
	C=[2,0];
	D=[0];
	iu=1;
	T=[0:0.1:10];     //0秒から0.1秒刻みで10秒までの時間列を生成

	{Y,X} = step_ss(A,B,C,D,iu,T);

	mgplot(1,T,X,{"state"});        //状態をプロット
	mgreplot(1,T,Y,{"output"});     //出力をプロット
	mgplot_grid(1);                 //グリッドの表示
}


step_tf
連続時間線形系(伝達関数の係数の対)のステップ応答
<書式>
       {Y,X} = step_tf(num,den,T)

          Matrix X,Y;       //状態X,出力Y
          Matrix num,den;   //伝達関数の分子,伝達関数の分母
          Matrix T;         //時間列

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

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

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

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

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

/*
  伝達関数G(s)= 1/(0.1s+1) からステップ応答を出力
*/

Func void main()
{
	Matrix X,Y;       //状態X,出力Y
	Matrix num,den;   //伝達関数の分子,伝達関数の分母
	Matrix T;         //時間列

	num=[0,1];         //伝達関数の分子の係数
	den=[0.1,1];       //伝達関数の分母の係数
	T=[0:0.001:1.0];   //0秒から0.001秒刻みで1.0秒までの時間列を生成

	{Y,X} = step_tf(num,den,T);

	mgplot(1,T,X,{"state"});     //状態をプロット
	mgreplot(1,T,Y,{"output"});  //出力をプロット
	mgplot_grid(1);              //グリッドを表示
}


step_tfn
連続時間線形系(伝達関数)のステップ応答
<書式>
       {Y,X} = step_tfn(g,T)

          Matrix   X,Y;       //状態X,出力Y
          Rational g;         //伝達関数
          Matrix   T;         //時間列

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

/*
  伝達関数G(s)= 1/(0.1s+1) からステップ応答を出力
*/

Func void main()
{
	Matrix     X,Y;       //状態X,出力Y
	Rational   g;         //伝達関数
	Matrix     T;         //時間列
	Polynomial s;         //ラプラス演算子

	s=Polynomial("s");    //sを変数宣言
	g=1/(0.1*s+1);        //伝達関数の定義
	T=[0:0.001:1.0];      //0秒から0.001秒刻みで1.0秒までの時間列を生成

	{Y,X} = step_tfn(g,T);

	mgplot(1,T,X,{"state"});     //状態をプロット
	mgreplot(1,T,Y,{"output"});  //出力をプロット
	mgplot_grid(1);              //グリッドを表示
}


step_tfm
連続時間線形系(伝達関数行列)のステップ応答
<書式>
       {Y,X} = step_tfm(G,iu,T)

          Matrix   X,Y;     //状態X,出力Y
          RaMatrix G;       //伝達関数行列
          Integer  iu;      //単位ステップを入力する入力番号
          Matrix   T;       //時間列

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

Func void main()
{
	Matrix     X,Y;            //状態X,出力Y
	Rational   g1,g2,g3,g4;    //伝達関数
	RaMatrix   G;              //伝達関数行列
	Matrix     T;              //時間列
	Integer    iu;             //単位ステップを入力する入力番号
	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);

	T=[0:0.1:10];      //0秒から0.1秒刻みで10秒までの時間列を生成
	iu=2;              //入力2にステップ関数を入力

	{Y,X}=step_tfm(G,iu,T);

	mgplot(1,T,X,{"state"});       //状態をプロット
	mgreplot(1,T,Y,{"output"});    //出力をプロット
	mgplot_grid(1);                //グリッドを表示
}


step_plot_ss
連続時間線形系(状態空間表現)のステップ応答のプロット
<書式>
	step_plot_ss(A,B,C,D,iu,T)

	   Matrix  A,B,C,D;   //状態空間表現の4つの行列
	   Integer iu;        //単位ステップを入力する入力番号
	   Matrix  T;         //時間列

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

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

Func void main()
{
	Matrix A,B,C,D;   //状態空間表現の4つの行列
	Integer iu;       //単位ステップを入力する入力番号
	Matrix T;         //時間列

	A=[[-1,2][-1,-3]];
	B=trans([0,1]);
	C=[2,0];
	D=[0];
	iu=1;
	T=[0:0.1:10];     //0秒から0.1秒刻みで10秒までの時間列を生成

	step_plot_ss(A,B,C,D,iu,T);
}


step_plot_tf
連続時間線形系(伝達関数の係数の対)のステップ応答のプロット
<書式>
	step_plot_tf(num,den,T)

          Matrix num,den;   //伝達関数の分子,伝達関数の分母
          Matrix T;         //時間列

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

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

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

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

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

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

	num=[0,1];         //伝達関数の分子の係数
	den=[0.1,1];       //伝達関数の分母の係数
	T=[0:0.001:1.0];   //0秒から0.001秒刻みで1.0秒までの時間列を生成

	step_plot_tf(num,den,T);
}


step_plot_tfn
連続時間線形系(伝達関数)のステップ応答のプロット
<書式>
	step_plot_tfn(g,T)

	   Rational g;       //伝達関数
	   Matrix   T;       //時間列

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

/*
  伝達関数G(s)= 1/(0.1s+1) からステップ応答を出力
*/

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

	s=Polynomial("s");    //sを変数宣言
	g=1/(0.1*s+1);        //伝達関数の定義
	T=[0:0.001:1.0];      //0秒から0.001秒刻みで1.0秒までの時間列を生成

	step_plot_tfn(g,T);
}


step_plot_tfm
連続時間線形系(伝達関数行列)のステップ応答のプロット
<書式>
	step_plot_tfm(G,iu,T)
	   RaMatrix G;       //伝達関数行列
	   Integer  iu;      //単位ステップを入力する入力番号
	   Matrix   T;       //時間列

備考:引数iuについて.
   複数入力を持つシステムの場合,どの入力にステップ関数を入力するか
      で結果が変わります.1入力のシステムであれば
    iu=1;
   としておけば良いです.
<プログラム例>
/*
  伝達関数G(s)= 1/(0.1s+1) からステップ応答を出力
*/

Func void main()
{
	Matrix     X,Y;       //状態X,出力Y
	Rational   g;         //伝達関数
	Matrix     T;         //時間列
	Integer    iu;        //単位ステップを入力する入力番号
	Polynomial s;         //ラプラス演算子

	s=Polynomial("s");    //sを変数宣言
	g=1/(0.1*s+1);        //伝達関数の定義
	T=[0:0.001:1.0];      //0秒から0.001秒刻みで1.0秒までの時間列を生成
	iu=1;

	step_plot_tfm([g],iu,T);
}