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); } |