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