【第3回】

<内容>

1.        特殊な行列を作成する関数
 単位行列,零行列,対角行列,乱数行列の作成方法について学ぶ.

 

2.        統計計算を行う関数
 ベクトル要素の,最大値,最小値,平均,不偏分散の平方根(標準偏差),総和,総積,並べ替え(小さい順)を求める関数について学ぶ.

 

3.        条件判定・繰り返し
 条件判定(ifelseelseifswitch)と繰り返し(whilefor)を行う方法について学ぶ.

 

 

<演習>

1.特殊な行列を作成する関数

n次元の単位行列 X = I(n×n) を作る場合,

 X = eye(n,n)

とすればよい.あるいは,単位行列は正方行列であるので X = eye(n) とも書ける.

 

 

練習3-1

 eye(5)eye(5,5)eye(5,3)では,結果がどのようになるか確認してみよ.

 

 

全ての要素が0零行列Y = 0(n×m)を作る場合は

  Y = zeros(n,m)

とする.単位行列と同様に,n×nの正方行列の場合は Y = zeros(n) と書ける.

 

 全ての要素が1の行列Z(n×m)

  Z = ones(n,m)

で作ることができる.n×nの正方行列の場合は Z= ones(n) と書ける.

 

 

 対角行列

図面1.jpg

を入力する場合は,

  v = [1 8 4 5 2] もしくは v = [1; 8; 4; 5; 2]

  D = diag(v,0) もしくは D = diag(v)

と書けばよい.

 

 

問題3-1

 上記で,D=diag(v,1)D=diag(v,-1)D=diag(v,2)D=diag(v,-2)を実行し,diag関数の2番目の引数の意味を考えてみよ.

 

 

練習3-2

 eye関数を使わずに,onesdiag関数を使って5次元の単位行列を作ってみよ.

 

 

 乱数行列R(n×m)

  R = rand(n,m)     [0, 1]の一様分布乱数行列

  R = randn(n,m)      正規分布乱数行列

で生成される.

 

 

 始点と終点と要素数を与えて,区間を等分する点を与える関数がある.これには,リニアスケール対数スケールがあり,それぞれ,linspacelogspace関数を用いる.

 

 

練習3-3

 (1) 区間[-10, 10]を,2の増分幅で等分したベクトルtを求めてみよ.

 (2) 区間[10-4, 103]の対数グラフの横軸xを求めてみよ.

 

【答え】

 (1) t = [ -10  -8  -6  -4  -2  0  2  4  6  8  10 ]

 (2) x = [ 0.0001  0.001  0.01  0.1  1  10  100  1000 ]

 

 

2.統計計算を行う関数

 統計計算を行う関数を表にまとめておく.

 

関 数

意  味

 max

最大値

 min

最小値

 mean

平均

 std

不偏分散の平方根

 sum

総和

 prod

総積

 sort

並べ替え(小さい順)

 

 

練習3-4

教科書p.24p.25に記載してある上記関数の使用例を実行し,その動作を確認してみよ.

 

 

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

 

 

3.条件判定・繰り返し

31ifelseelseif

 ある条件を与えて,プログラムの流れを分岐させることができる.比較演算子論理演算子は次の通りである.Octave 4.2では,論理演算子のANDORは,それぞれ&&||である.

 

比較演算子

意 味

論理演算子

意 味

< 

&&

AND

<=

||

OR

> 

~

NOT

>=

 

 

==

~=

 

 

練習3-5

例題2.32.5(教科書p.25p.26)のMファイルを作成し,その実行結果を確認してみよ.

なお,プログラム中のendifendと記述すれば,Matlabとの互換性のあるプログラムとなる.

 

 

32switch

 ある参照する値によって,複数点への分岐を並列に行うことができる.

 

 

練習3-6

例題2.6(教科書p.26)のMファイルを作成し,その実行結果を確認してみよ.

なお,プログラム中のendswitchendと記述すれば,Matlabとの互換性のあるプログラムとなる.

 

 

33while

 ある条件が成立する限りwhile内の命令を実行し続けるwhileループはbreak文に当たるとループを抜ける.

 

 無限ループを実行する場合は,条件式が常に真,すなわち「1」とすればよい.すなわち,以下のようになる.

 

 while 1 % while (1) でも可

   statements

 endwhile

 

 

練習3-7

例題2.7(教科書p.28Mファイルを作成し,その実行結果を確認してみよ.

なお,プログラム中のendwhileendと記述すれば,Matlabとの互換性のあるプログラムとなる.

 

 

34for

 指標変数indexの初期値startから,増分幅incrementずつ値を増加させて,最終値endまで繰り返しを行う.増分幅を負とすれば,指標変数の値は減少していく.増分幅を指定しない場合は,デフォルトで1となる.for文もwhile文と同じく,break文が実行されるとそのループを終了する.

 

 

練習3-8

(1)   例題2.8(教科書p.28Mファイルを作成し,その実行結果を確認してみよ.

(2)   プログラム例ex3.m教科書p.29Mファイルを作成し,その実行結果を確認してみよ.

なお,プログラム中のendforendと記述すれば,Matlabとの互換性のあるプログラムとなる.

 

 

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

  RePORT(提出期限:51日(月)13:00