数値処理入門(長谷川 秀彦)



まずは画面の表示モードを変更します。デフォルトでは more off なので、
出力が多いと画面情報へ流れていってしまいます。 more on としておけば
1画面分の結果が表示されたところで画面がいったん止まります。
1行進ませるにはリターンキー、1画面分進めるにはスペースキーを押します。
途中で終えるには q と入力してください

	>> more on
	>> more off

コマンドを調べるには help を使います。 help とすれば使えるコマンドが
分類されて表示されます。分類 general に属するコマンドが知りたければ
help general, more コマンドについて知りたければ more help のように入力します。

	>> help

HELP topics:

matlab\general       -  一般的なコマンド
matlab\ops           -  演算子と特殊キャラクタ
matlab\lang          -  制御フロー
matlab\elmat         -  基本行列と行列操作
matlab\elfun         -  初等数学関数
matlab\specfun       - 
matlab\matfun        -  行列関数- 線形数値代数
matlab\datafun       -  データ解析とフーリエ変換
matlab\audio         -  オーディオサポート
matlab\polyfun       -  補間と多項式
matlab\funfun        -  関数を引数とする関数とODEソルバ
matlab\sparfun       -  スパース行列
matlab\graph2d       -  2次元グラフ
matlab\graph3d       -  3次元グラフ
matlab\specgraph     -  特殊グラフ
matlab\graphics      -  ハンドルグラフィックス
matlab\uitools       -  グラフィカルユーザインタフェースツール
matlab\strfun        -  キャラクタ文字列
matlab\iofun         -  ファイルの入出力
matlab\timefun       -  時間と日付 
matlab\datatypes     -  データタイプと構造体
matlab\verctrl       -  Version control.
matlab\winfun        -  Windows オペレーティングシステムインタフェースファイル (DDE/ActiveX)
matlab\demos         -  例題とデモ
toolbox\local        -  環境設定
toolbox\symbolic     -  Symbolic Math Toolbox.
matlabR12\work       -  (No table of contents file)

For more help on directory/topic, type "help topic".

	>> help ops

  演算子と特殊キャラクタ
 
  数値演算子
  plus       - 加算                              +
  uplus      - 単項加算                          +
  minus      - 減算                              -
  uminus     - 単項減算                          -
  mtimes     - 行列の乗算                        *
  times      - 配列の乗算                        .*
  mpower     - 行列のベキ乗                      ^ 
  power      - 配列のベキ乗                      .^ 
  mldivide   - バックスラッシュ、行列の左除算    \
  mrdivide   - スラッシュ、行列の右除算          /
  ldivide    - 配列の左除算                      .\
  rdivide    - 配列の右除算                      ./
  kron       - Kroneckerのテンソル積             kron
 
  比較演算子
  eq         - 等しい                             =  = 
  ne         - 等しくない                        ~ = 
  lt         - より小さい                        <
  gt         - より大きい                        >
  le         - より小さいまたは等しい            < = 
  ge         - より大きいまたは等しい            > = 
 
  論理演算子
  and        - 論理積                            &
  or         - 論理和                            |
  not        - 否定                              ~
  xor        - 排他的論理和
  any        - ベクトルに非ゼロ要素があるかどうかのテスト
  all        - ベクトルのすべての要素が非ゼロであるかどうかのテスト

 以下、省略。

>> help more

  MORE   コマンドウィンドウへのページ出力の制御
  
  MORE OFFは、MATLABコマンドウィンドウへのページ出力の制御を行いません。
  MORE ONは、MATLABコマンドウィンドウへのページ出力の制御を行います。
  MORE(N)は、ページのサイズとしてN行を指定します。
 
  MOREが使用可能で、出力がページ制御されているときには、RETURNキーを押し
  て、つぎの出力行に進んでください。つぎのページに進むには、スペースバー
  を押してください。現在の表示を終了するには、"q"を押してください。

メニューバーからヘルプ (H) を起動してチュートリアルをみることもできます。

>> helpwin

とすれば説明ウィンドウが表示されるので、それで必要な項目を
マウスで選択・ダブルクリックすればよい。

>> demo

 demo と入力すれば MATLAB のデモが見られます


 MATLAB が扱うのは実数(正確には倍精度浮動小数点数)です。整数も内部では
実数として扱われています。数値の内部表現をみるには

>> pi

ans =

    3.1416

>> format long
>> pi

ans =

   3.14159265358979

>> format hex
>> 2.0

ans =

   4000000000000000

とします。long は 15 桁、 hex は 16 進数で表示します。標準に戻すには
 format short または format と入力します。
 pi, realmin, realmax, eps などの特殊な数もあります。

 数、横ベクトル、縦ベクトル行列の入力は以下のようにします。
 b=0; のように行末にコロン ; をつけると結果は表示されません。
横ベクトルは c=[ 0 0.5 1] のように入力します。ベクトル・行列を入力する際は
かぎかっこ [ ] を使います。グラフを書くときなど、 0 から 0.5 おきに 1.0 まで
というときには 0:0.5:1.0 のように初期値、増分、終値をコロン : で
区切って書きます。結果は横ベクトルになります。
縦ベクトルや行列など、次の行のデータを入力する場合はセミコロン ; で区切ります。
 = の左辺がない場合は、 ans という変数に格納されます。

 help ops の例で示した演算子を組み合わせた式なども同様に入力します。
転置演算子 ' ダッシュを利用して横ベクトルと縦ベクトルの変換もできます。

>> a=1

a =

     1

>> b=2;
>> c=0:0.5:1

c =

         0    0.5000    1.0000

>> d=[1;2;3]

d =

     1
     2
     3

>> d'

ans =

     1     2     3

 現状の作業領域にどのような変数が作られているかの一覧を調べるには
 who, whos を使います。それらの変数の内容をみるには変数名を入力します。

>> who

Your variables are:

a  b  c  d  

>> whos
  Name      Size         Bytes  Class

  a         1x1              8  double array
  b         1x1              8  double array
  c         1x3             24  double array
  d         3x1             24  double array

Grand total is 8 elements using 64 bytes

 これから、関数の計算をしましょう。現状の作業領域にどのような変数が

>> x=0:0.1:3;
>> y=sin(x);
>> plot(x,y);

のようにすれば、 x には 0 から 0.1 刻みで 3.0 までの値 31 個からなる
横ベクトルができます。 y には sin(x) に対応した同じく 31 個の要素の
横ベクトルができます。これをグラフに表示するには plot(x,y); のように
します。 plot の結果は別ウインドウとして次のように表示されます。



ファイルへ保存、プリント、キャプションをつける、グラフを回転するなどの
操作はウインドウのメニューでできます。

横ベクトル x に対して x^2 を計算するには x.^2 とします。 x の直後に
ピリオド . があることに注意してください。

 MATLAB でプログラムを作るなら、 xxx.m という M-ファイルに一連の
手続きを記述します。 % から始まる行はコメントです。あとは MATLAB の
コマンドをならべるだけです。下の例では、 A, alpha を受け取って
計算をする gyaku という関数が定義されています。 while を除けば、
これまでの説明で十分に理解できる内容のはずです。

xxx.m の内容:

function gyaku(A,alpha)
% Compute Eigenvalue by Inverse Iteration Method
%               for Numerical Analysis at Chiba University
%               H. Hasegawa; 1999, Jan. 10
I = eye(5); xx = rand(5,1); k= 0; res =1;
while ( res > 1.0e-12)
   k = k+1;
   x = xx/norm(xx,2);
   xx = (A-alpha*I) \ x;
   mu = x'*xx;
   res = norm(xx-mu*x,2);
   lambda = alpha+1/mu;
   out = [k lambda res]; disp(out)
end
 
これを実行するには、MATLAB のウインドウでファイル (F), 開く (O) と
選択し、エディタのウインドウが開いたらデバッグ (D), 実行 (R) とします。
what で用意されている M-ファイルの一覧、help gyaku1 としたとき、
関数 gyaku1 のコメント部分( % から始まる行)が表示されます。
入力方法と出力の受け取り型に少しだけ工夫が必要です。

 現在のディレクトリにあるファイルの一覧、あるいは M-ファイルの一覧を
みるには ls, what などを使います。

>> ls

.            Errors.doc   NA1999.xls   gyaku1.m     
..           F.doc        Report2.doc  loop.m       
Chiba1.doc   F0201        eigshow.bmp  
E.doc        F0202        gyaku.m      

>> what

M-files in the current directory C:\Documents and Settings\???

gyaku     gyaku1    loop      

>> help gyaku1

  Compute Eigenvalue by Inverse Iteration Method
                for Numerical Analysis at Chiba University
                H. Hasegawa;  Jan. 10, 1999



2変数関数のグラフ(のごく初歩)


2001年06月14日 21時18分35秒