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