【第10回】

<内容>

1.  ブロック線図を等価変換するための関数T

 現在のシステム(制御用パッケージcontrol ver.2.8.5)では,tffeedback等の関数において,非プロパーな伝達関数(分子多項式の次数が分母多項式の次数より大きい)も扱えるようになった.しかし,様々なMファイルの作成方法を学習するため,以下の関数を作成する.今回は,syssub1.m までを作成する.

·       tf1.m:伝達関数を分子・分母多項式の係数により入力する関数tfという関数が存在するので,教科書のtf.mtf1.mで作成する.】

·       zpk1.m:伝達関数を零点・極・ゲインにより入力する関数zpkという関数が存在するので,教科書のzpk.mzpk1.mで作成する.】

·       tfinv.m:伝達関数の逆数を求める関数

·       reduce.m:伝達関数を約分する関数(この関数には最大公約数GCDをユークリッドの互除法(教科書p.45)で求める関数euclid.mが必要)

·       sysmult1.m:伝達関数の直列結合を求める関数

·       sysadd1.m:伝達関数の並列結合(和)を求める関数(この関数には多項式の和を求める関数polyadd.mが必要)

·       polyadd.m:多項式の和を求める関数

·       syssub1.m:伝達関数の並列結合(差)を求める関数(この関数には多項式の和を求める関数polyadd.mが必要)

·       feedback1.m:フィードバック結合を求める関数

 

表1 伝達関数入力およびブロック線図の等価変換のための関数

内  容

システム既存の関数

作成する関数

伝達関数入力(分子・分母多項式)

tf

tf1

伝達関数入力(零点・極・ゲイン)

zpk

zpk1

伝達関数の零点・極・ゲイン算出

zpkdata

なし

伝達関数の直列結合

series

sysmult1

伝達関数の並列結合(和)

parallel

sysadd1

伝達関数の並列結合(差)

parallel

syssub1

フィードバック結合

feedback

feedback1

 

 

<演習>

1.ブロック線図を等価変換するための関数T

 ここで作成した関数を用いて得られる伝達関数は,分子・分母多項式の形でのみ表示される.

 

※システム既存の関数tfzpkを用いて入力した伝達関数に対し,ここで作成した伝達関数の結合に関する関数は適用できない点に注意せよ.

 

 

11.伝達関数の入力

【分子・分母の係数を入力する方法】

伝達関数の分子・分母多項式に係数を用いて入力する関数tf1を作成する. Octaveでは,sys構造体C言語プログラミング関連の本を参照)として扱われる.簡単に言えば,sys.numが伝達関数sysの分子多項式numnumerator:分子)を表し,sys.denが伝達関数sysの分母多項式dendenominator:分母)を表す.システム既存の伝達関数の入力関数tfを用いて,下記のことを確認してみよ.

>> sys1 = tf( [ 1  1 ] ,  [ 1  2  3 ] ) ;

>> sys1.num

ans =

{

   [1, 1] =

1  1

  }

>> sys1.den

ans =

{

[1, 1] =

1  2  3

  }

 

 

練習10-1

 Mファイルtf1.m(教科書p.109tf.m)を作成し,例題3.18(教科書p.110)を行い,結果を確認せよ.

(注)tf.mではなくtf1.mで作成し,実行時にはtfではなくtf1を使用すること.

 

 

【極・零点・ゲインを入力する方法】

 伝達関数の極・零点・ゲインを与えて,伝達関数を入力する関数zpk1を作成する.ここで用いられている関数は

 ・length:ベクトルの要素数を求める関数(教科書p.32参照)

 ・conv:多項式の掛け算を行う関数(教科書p.42の表2.7参照)

である.

 

また,[ 1  -z(i) ] ( s – z(i) ) を,[ 1  -p(i) ] ( s – p(i) ) を表しており,零点・極の値から分子・分母多項式を計算するために用いている.

 

 

練習10-2

Mファイルzpk1.m(教科書p.110)を作成し,例題3.19(教科書p.111)を行い,結果を確認せよ.

(注)zpk.mではなくzpk1.mで作成し,実行時にはzpkではなくzpk1を使用すること.

 

 

12.伝達関数の逆数

 伝達関数の逆数を求める関数tfinvを作成する.入力された,分子と分母多項式を逆にするだけである.

 

 

練習10-3

 Mファイルtfinv.m(教科書p.111)を作成し,例題3.20(教科書p.111)を行い,結果を確認せよ.

(注)実行する際,tfではなくtf1で伝達関数を入力すること.

 

 

―――――――――――――――――――――――――――――――――――――――――――――――――――――――

 

 

13.伝達関数の約分

 伝達関数を約分して簡単にする関数reduceを作成する.伝達関数の分子と分母多項式の最大公約数GCD)を求め,GCDで分子と分母を割ることで約分が行われる.

 

 なお,この関数中にGCDを求める関数euclidを使用しているので,euclid.m(教科書p.112)を定義しておく必要がある.このアルゴルズムは以前に学習している(教科書p.45を参照).

 

 

練習10-4

 Mファイルeuclid.m(教科書p.112)とreduce.m(教科書p.112)を作成し,例題3.21(教科書p.113)を行い,結果を確認せよ.

(注)実行する際,tfではなくtf1で伝達関数を入力すること.

 

 

14.伝達関数の直列結合

 伝達関数を直列結合する関数sysmult1を作成する.

 

 

練習10-5

 Mファイルsysmult1.m(教科書p.114)を作成し,例題3.22(教科書p.114)を行い,結果を確認せよ.

(注)sysmult1.mの下から3行目は,tfではなくtf1とすること.実行する際は,tfではなくtf1で伝達関数を入力すること.

 

 

15.伝達関数の並列結合

【並列結合(和)】

 伝達関数の並列結合(和)を求める関数sysadd1を作成する.なお,並列結合を行う関数において,多項式の和を求める関数polyaddを使用しているので,polyaddを定義しておく必要がある.

 

多項式の足し算をする際,各多項式の次数(ベクトルの次元)が等しくないと「p1+p2」が実行できない.ここで,多項式は,ベクトルとして扱われている点に注意せよ.したがって,次数の小さい方に,他方と同じ次数になるように高次の係数に0を付けて補う必要がある(教科書p.115polyadd.mを参照).

 

 

【並列結合(差)】

 伝達関数の並列結合(差)を求める関数syssub1を作成する.並列結合(和)を求めるsysadd1.mの分子を求める部分が「polyadd(b1,-b2)」となっただけである.

 

 

練習10-6

 Mファイルpolyadd.m(教科書p.115),sysadd1.m(教科書p.115),syssub1.m(教科書p.116)を作成し,例題3.23(教科書p.116)を行い,結果を確認せよ.

(注)sysadd1.msyssub1.mの下から3行目は,tfではなくtf1とすること.実行する際は,tfではなくtf1で伝達関数を入力すること.

 

 

【レポート課題(9)(授業終了後にアップロード)

  RePORT