H3 = det(H2) H4 = inv(H2)と入力します。``H1- H2'', ``H1 + H2'', ``H1 * H2'' は、削除しておいても 結構です。
新しいファイル名''ex_2.m''等のファイル名で保存しましょう。
実行してみてください。
octave ex_2.m GNU Octave, versi.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. H1 = 1 2 3 4 5 6 7 8 9 H2 = 12 12 13 14 15 16 17 18 19 H3 = -3.0000 H4 = 1.00000 -2.00000 1.00000 -2.00000 -2.33333 3.33333 1.00000 4.00000 -4.00000 >
ちなみに、``H1''の行列式は''0''に なるので、``H1''の逆行列は求まりません。
求めた逆行列が本当に正しいかどうかを確かめてみましょう。 そう、2つの行列の積を計算し、単位行列になるかどうか調べてみます。
以下は実行結果です。
> octave ex_3.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. H1 = 1 2 3 4 5 6 7 8 9 H2 = 12 12 13 14 15 16 17 18 19 H3 = -3.0000 H4 = 1.00000 -2.00000 1.00000 -2.00000 -2.33333 3.33333 1.00000 4.00000 -4.00000 ans = 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000 >確かに計算結果が単位行列になっていることが分かります。
![]() |
(3) |
ここで、式の両辺に左辺の逆行列を乗算します。
![]() |
(4) |
![]() |
(5) |
今の手順を``Octave''で行ってみましょう。
新しいファイルを作成し実行してみましょう。
ここでは、ファイル名``ex_4.m''で保存したと仮定します。 それでは実行してみます。
> octave ex_4.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. A = 3 4 -2 -12 8 -6 15 -6 8 B = 24 -35 33 C = 0.137255 -0.098039 -0.039216 0.029412 0.264706 0.205882 -0.235294 0.382353 0.352941 X = 5.4314 -1.7647 -7.3824 >
いとも簡単に答がでてしまいました。
つまり
octave:45> A =[1 2 3 4 5] A = 1 2 3 4 5 octave:46> B = [ 5 4 3 2 1 ] B = 5 4 3 2 1 octave:47> C=A*B error: operator *: nonconformant arguments (op1 is 1x5, op2 is 1x5) error: evaluating assignment expression near line 47, column 2エラーになってしまう。
実は ``*'' ではなく ``.*''を利用します。すなわち、ドットをつけて下さい。
octave:47> C=A.*B C = 5 8 9 8 5
それでは全ての要素を3乗するにはどうするか?
octave:48> D = A.*A.*A D = 1 8 27 64 125または、
octave:49> D=A.**3 D = 1 8 27 64 125
[nisimiya]$ gedit gyouretsu_1.m &試しに以下のように打ち込んでみましょう。
保存して実行してください。
[nisimiya]$ octave gyouretsu_1.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. ans = 15 ans = 55 ans = 50``Octave''では、行列も関数と同じように扱うことができる。 n個目の要素はA(n)などとすれば取り出せる。 ここで、行列のサイズと各要素の和を求める関数も確認しておきましょう。 それぞれ ``size(A), sum(A)''と打ち込みます。
実行してみて下さい。
[nisimiya]$ octave gyouretsu_1.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. ans = 15 ans = 55 ans = 50 okisa = 1 9 goukei = 525sizeが1行9列、各要素の合計が525となりました。
次にn行m列の行列の場合はどうすればよいか。
![]() |
B = [11 12 13 14; 21 22 23 24; 31 32 33 34; 41 42 43 44] B(1,3) B(3,2) B(3,3) + B(1,4) ookisa = size(B)これは、エディター上のリストです。 ファイル名を ``gyouretsu_2.m''などとして、保存してみましょう。 実行は以下のようにします。
[nisimiya]$ octave gyouretsu_2.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. B = 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 ans = 13 ans = 32 ans = 47 ookisa = 4 4それぞれ1行3列、3行2列など、表示されています。 行列のサイズも表示されています。
最小値 | min(x) |
最大値 | max(x) |
総和 | sum(x) |
平均 | mean(x) |
標準偏差 | std(x) |
総積 | prod(x) |
例えば、以下の行列の要素の最大値、最小値、総和、平均、標準偏差、総積を求 めてみよう。
A = [2 4 6 8 10 12 14 16] saidai = max(A) saisho = min(A) souwa = sum(A) heikin = mean(A) hensa = std(A) souseki = prod(A) (実行結果) A = 2 4 6 8 10 12 14 16 saidai = 16 saisho = 2 souwa = 72 heikin = 9 hensa = 4.8990 souseki = 10321920
(解答例 1) A = [1 2 3 4 5 6 7 8 9 10] B=sum(A) (解答例 2) A = 1:1:10 sum(A)"A = 1:1:10" と言うのは、A = [1 2 3 4 5 6 7 8 9 10] とまったく同じ意味になります。 すなわち、``1''からスタートし ``1'' きざみで ``10''までの行列(1行の)を作る ときのコマンドです。
B = [11 12 13 14; 21 22 23 24; 31 32 33 34; 41 42 43 44] C = B'上記リストをエディターで作成し、実行させると転置行列が求まる。 下記の実行例は、ファイル名``gyouretsu_3.m''で保存した場合です。
[nisimiya]$ octave gyouretsu_3.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. B = 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 C = 11 21 31 41 12 22 32 42 13 23 33 43 14 24 34 44
(解答例)
リスト: A=[2 4 6 8]; B=[ 4 8 10 7]; A * B' 実行例: [nisimiya]$ octave ex_vec1.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. ans = 156
(解答例)
######### program ############### A=[2 4 6 8 9 -7] B = A * A' sqrt(B) ################################# 実行例: [nisimiya]$ octave ex_vec2.m GNU Octave, version 2.0.16 (i386-vine-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton. This is free software with ABSOLUTELY NO WARRANTY. For details, type `warranty'. B = 250 ans = 15.811