|
|
|
|
|
|
|
|
|
|
|
Matlab/Octaveによる制御系の設計 CD-ROM付き |
|
吉田 和信 著 |
|
6,000円 |
|
A5 320頁 |
|
4-87653-317-2 C3055 |
|
|
|
|
|
|
|
|
|
|
|
|
本書は,Octaveを用いて古典制御理論,現代制御理論,非線形制御の実例を平易に解説したものである.
本書の著者が本書を著そうとした動機は,学長裁量経費プロジェクト「次期教育用計算機システム仕様策定準備のための調査研究」において,MatlabライクなフリーソフトであるGNU Octaveを用いて教育する場合の可能性を検討するために,「Octaveによる動的システムシミュレーション入門」という教材を作成し,その有用性に目を見張ったことにある.
基本言語の部分はほぼMatlab互換であり,開発中バージョン2.1.35では,制御工学関係の関数(計算ライブラリ)も充実したものとなっている. 高性能低価格のパソコンが出回り,Octaveの内容も実用に供するものとなった今,この計算ツールを使って古典制御および現代制御を平易に,例題と演習問題を交え,実際のOctaveプログラムリストや実行結果も添えて解説した本書の上梓は正にタイムリーであるといえる.
本書の構成は次のとおりである.
1.はじめに
2.Octaveによる計算プログラミング
3.Octaveによる古典制御
4.Octaveによる現代制御
5.Octaveによる非線形制御
6.付録
7.演習問題解答
1.では,Octaveの概要とインストールの方法を説明している.インストールするOSとしてはLinuxとWindowsを想定する.また,パソコンではWindowsが圧倒的に多いことを考え,特にWindowsへのインストールについて詳しく説明している.本節で示した方法はOctaveのソースコードからのインストールである.Octaveの最新バージョンはソースコードで提供されるので,ソースコードからのインストール方法を知っておくメリットは大きい.しかしながら,ソースコードからのインストールは時間がかかるため(Pentium 800MHz相当で約1.5時間),読者の便を考え,Windows用にインストールするためのバイナリファイルをCD-ROMにて提供する.
2.では,Octaveの基本言語によるプログラミングを説明する.3.以降の学習のために,Octaveの基本的使い方と数値計算プログラミングの基礎を学習することが本章の目的である.Octaveの初心者が,抵抗無くOctaveプログラミングに入っていけるように基礎的事項から説明している.本章の内容は次のようである.
2.Octaveによる計算プログラミング
2.1 Octaveの起動と終了
2.2 数値の入出力
2.3 行列の入出力
2.4 行列の和・差・積・転置・べき乗
2.5 行列関数
2.6 単位行列・零行列・対角行列
2.7 条件判定・繰り返し
2.7.1 if,else,elseif
2.7.2 switch
2.7.3 while
2.7.4 for
2.8 種々の行列の作成法
2.8.1 行列要素の指定
2.8.2 行列のサイズ
2.8.3 行列の結合と削除
2.9 数学的関数
2.10 多項式に関する関数
2.10.1 多項式の表現,零点,特性方程式
2.10.2 多項式曲線のあてはめ
2.11 一般関数のかき方
2.12 ファイルに対する入出力
2.13 シミュレーションの基礎
2.14 オイラー法
2.15 ルンゲクッタ法
2.16 lsode関数の利用
2.17 位相面図の描き方
例題を通してOctaveの使い方を説明するというスタイルをとる.また,各節の終わりに演習問題を設けて読者の自学自習を促す.数値や行列の入出力,行列演算方法,行列に関する基本的な計算関数を紹介した後,プログラミングでは重要な,条件判定と繰り返し構文の書き方を説明する.いわゆるプログラムのフロー制御法である.従来のMatlab/Octaveの解説書は,既存の関数を使うという立場で書かれたものがほとんどで,このような基本的プログラミングに関する説明は本書の特色の一つとなっている.次に,種々の行列の作成法として,制御計算でしばしば必要となる行列作成プログラムを説明する.数学的関数についての説明も行う.すなわち,sin(x), cos(x), atan2(x),...などの関数が用意されていることを紹介する.ここで,例題として,周期関数のフーリエ級数展開表現を取り上げている.CやFORTRANを用いて計算する場合,ある程度,プログラムのステップ数が必要となるこの種の問題でも,Octaveを使えば意外なほど短いプログラムで計算できることが理解できる.多項式関数を一通り紹介し,多項式関数の表現,零点から多項式の係数を計算する方法,行列から特性方程式の係数を得る方法を説明する.また,最小二乗法で与えられたデータを内挿する方法も紹介する.そして,ユーザ定義関数の作り方も簡単な例題(n個のデータを与え平均と分散を計算する関数)によって説明する.データをファイルとやり取りしたい場合がしばしばあるので,ファイルに対する入出力法にも言及している.また,シミュレーションの基礎として,常微分方程式の解法として基本的なオイラー法とルンゲクッタ法を紹介する.Octaveには常微分方程式ソルバとして,lsode関数が用意されており,通常はlsodeを使用すればよいのであるが,初心者にとって,数値計算法によるプログラミングを一度は経験することが学習上望ましいし,ソルバを使わないプログラミングの方が高いフレキシビリティを持つという利点もある.もちろん,lsode関数を使えばより短いプログラムで常微分方程式を解くことができるので,この関数の使用方法についても説明する.最後に,位相面図の描き方を紹介する.これは,特に,非線形制御問題における位相面解析で役立つプログラムとなる.
3.では,古典制御理論を解説する.理論的説明は平易に努め,一入力一出力線形システムに限定して,古典制御の本質的な考え方を新しいスタイルで紹介する.古典制御においても,ラプラス変換,ブロック線図の等価変換,過渡応答,周波数応答,制御系設計などとOctaveが活躍する場は豊富にあり,随所にOctaveによる例題と演習問題を設ける.これにより,読者は,比較的複雑な問題でもOctaveを用いて容易に解を求めることができ,効率的に制御工学の学習を進めることができる.本章の内容は以下のようである.
3.Octaveによる古典制御
3.1 ラプラス変換
3.2 動的システムのモデリング
3.3 線形常微分方程式と伝達関数
3.4 基本伝達関数
3.5 ブロック線図と等価変換
3.6 過渡応答
3.6.1 インパルス応答
3.6.2 ステップ応答
3.7 周波数応答
3.7.1 ベクトル軌跡
3.7.2 ボード線図
3.8 ラウス・フルビッツの安定判別法
3.9 ナイキストの安定判別法
3.9.1 フィードバック制御系の安定条件
3.9.2 位相余裕とゲイン余裕
3.10 制御系の特性と性能評価
3.10.1 定常特性と制御系の型
3.10.2 極と過渡応答による制御系の評価
3.10.3 閉ループ周波数応答による性能評価
3.10.4 開ループ周波数応答による評価
3.11 制御系の設計法
3.11.1 根軌跡法による設計
3.11.2 ループ整形法による設計
3.11.3 PID補償
3.11.4 フィードバック補償
3.1でラプラス変換の公式を確認し,ラプラス変換表を示す.ラプラス逆変換を行う際に,Octaveのresidue関数が利用できることを例題で紹介する.3.2では,簡単な機械系および電気回路系を例とし,物理法則を用いて動的システムの数学モデルである微分方程式を求める方法について説明する.3.3では,微分方程式から伝達関数を求める方法を解説する.3.4では,基本伝達関数をシステムの例とともに紹介する.3.5では,ブロック線図の等価変換法について説明する.ここで,Octaveの伝達関数入力関数(tf2sys,zp2sys),ブロック結合関数(sysmult,sysadd,syssub,buildssic)を用いた例題と演習問題を与える.3.6では,過渡応答の計算法について説明する.Octaveではimpulse,stepという関数が用意されており,これらを用いてインパルス応答とステップ応答を求めるプログラムを示す.3.7では,伝達関数の周波数応答の計算法について解説する.Octaveのnyquist,bodeという関数を用いてナイキスト線図とボード線図を描くプログラムを紹介する.3.8では,古典的なラウス・フルビッツの安定判別法を説明する.両者とも,計算機のない時代に開発された方法で,特性方程式の係数に巧みなアルゴリズムを適用することによって,少ない計算量で制御系の安定性を判定できるものである.これらの方法でも,系の次数が高くなるとすぐに手計算では手におえない計算量になってしまう.ラウス・フルビッツの安定判別のOctaveプログラムを示し,安定判別の例題を説明する.3.9では,ナイキストの安定判別法について述べる.この安定判別法は安定判別のみならず位相余裕・ゲイン余裕という制御系の安定度を計る尺度も与えるもので,制御系設計でよく利用される.制御系の安定判別と位相余裕・ゲイン余裕を求める例題をOctaveのプログラムとともに示す.3.10では,制御系の特性と性能評価について説明する.極,過渡応答,閉ループ周波数応答,開ループ周波数応答を求める際に,Octaveプログラムがいかに利用されるかを紹介する例題を与える.3.11では,古典制御の締めくくりとして,制御系設計法について述べる.根軌跡法においては,rlocus関数,ループ整形法,PID補償,フィードバック補償では,伝達関数表現関数,ブロック結合関数他,bode,nyquist,step等のOctave関数が活躍する.
4.では,状態空間法に基づく制御理論,いわゆる現代制御理論を解説する.本来,現代制御理論は多入力多出力系を対象とするものであるが,初心者の理解を容易にするため,原則として一入力一出力系で話を進める.行列論を基礎とする現代制御理論にとって,ベクトル・行列計算を得意とするOctaveは必要不可欠な計算ツールであり,状態軌道の計算,可制御性・可観測性の判定,状態方程式の各種正準系への変換,極配置や最適レギュレータによる制御系設計などほとんどのテーマにおいてOctaveプログラミングが本質的な仕事をすることが理解できる.本章の内容は次のようである.
4.Octaveによる現代制御
4.1 状態方程式
4.1.1 状態方程式と伝達関数
4.1.2 状態方程式の解と状態推移行列
4.1.3 s領域解
4.1.4 時間領域解
4.2 安定性
4.2.1 安定性と固有値
4.2.2 リアプノフの安定判別法
4.3 座標変換と可制御性・可観測性
4.3.1 座標変換とシステムの等価性
4.3.2 可制御性・可観測性
4.3.3 対角正準形式と可制御性・可観測性
4.3.4 伝達関数と極−零点消去
4.3.5 可制御正準形式,可観測正準形式とその応用
4.4 安定化の基礎理論
4.4.1 状態フィードバック制御と安定化
(1) 状態フィードバックによる極配置
(2) 最適レギュレータ
4.4.2 オブザーバによる安定化
(1) オブザーバを用いない状態推定
(2) 同一次元オブザーバ
(3) 最小次元オブザーバ
4.1では,状態方程式とその解について解説する.時間領域解(状態軌道)を求めるためのOctaveプログラムが示される.4.2では,安定性について述べる.安定性と固有値の関係を明らかにし,リアプノフの安定判別法を説明する.また,固有値を計算するためのOctave関数(eig),リアプノフ方程式の求解関数(lyap)を使う例題を扱う.4.3では,可制御性・可観測性と各種正準系について述べる.ここで,可制御性・可観測性を判定するプログラム,各種正準系への座標変換行列を計算するプログラムを紹介する.4.4では,状態フィードバックによる制御問題を考える.極配置と可制御性の関係,極配置アルゴリズム,最適レギュレータの定式化と解法について解説し,状態が直接測定できない場合に使用する状態推定器(オブザーバ)の理論を紹介する.また,place関数を用いた極配置,lqr関数による最適レギュレータ設計などのプログラムを示す.
5.では,研究室レベルの実験として有名な二つの振り子系の制御問題を取り扱う.内容は次のようである.
5.Octaveによる非線形制御
5.1 ブランコの振動制御
5.2 倒立振り子の振り上げ安定化制御
5.1では,重心移動による振り子系の振動制御問題を定式化し問題の解法を紹介する.また,シミュレーションのためのOctaveプログラムも示す.5.2では,台車移動幅の制限を考慮できる倒立振り子の振り上げ安定化制御則を求め,シミュレーションのためのOctaveプログラムを解説する.これら二つの問題は,制御の分野で長く検討されてきた難問であったが,最近,著者らによって,シンプルな制御則で制御系を構成できることが明らかにされた.理論は,すでに論文[1][2]で発表しているが,これらのプログラムを公開するのは本書が初めてである.
6.では付録(数学的基礎,証明)を収録する.
7.では,演習問題解答を掲載するが,読者の自学自習を促す意味で一部は略解とする. |
|
|
|
|
|
|
|