行列(matrix) とは単に、次元のそろったベクトル群のベクトルです。 これは、行列を入力するにはネストしたカッコを使うということです。 また、セミコロン文字を使う方法もあります。 両方の方法をお見せしましょう。
1: [ [ 1, 2, 3 ] 1: [ [ 1, 2, 3 ] [ 4, 5, 6 ] ] [ 4, 5, 6 ] ] . . [[1 2 3] [4 5 6]] ' [1 2 3; 4 5 6] RET
この行列は後で再利用するので、ここで s 4 と打ってストアしておきましょう。
セミコロンは不完全ベクトル入力方式でも機能しますが、 代数的入力方式で使うほうが良いです(訳注: 何が良いのかは不明)。 2番目の例で、アポストロフィーを使った理由はそのためです。
2つの行列を掛けあわせるとき、左の行列の列数は右の行列の行数と同じでなければ なりません。その結果得られる行列の i 行 j 列要素は、 実質的に左行列 i 行ベクトルと右行列 j 列ベクトルの内積です。
上に挙げた行列を複製して同じ行列どうし掛けあわせようとしたら、 形状が合わないのでこの掛け算は実行できません。
1: [ [ 1, 2, 3 ] * [ [ 1, 2, 3 ] [ 4, 5, 6 ] ] [ 4, 5, 6 ] ] . RET *
ちょっと見にくいですが、これが2つの行列の積を表す式です。 `*' 演算子は間違ったオペランドを与えられたので、 演算は実行されずシンボル形式のまま残りました。
どちらか片方の行列を 転置(transpose) すれば掛けあわせることができます。
2: [ [ 1, 2, 3 ] 1: [ [ 14, 32 ] 1: [ [ 17, 22, 27 ] [ 4, 5, 6 ] ] [ 32, 77 ] ] [ 22, 29, 36 ] 1: [ [ 1, 4 ] . [ 27, 36, 45 ] ] [ 2, 5 ] . [ 3, 6 ] ] . U v t * U TAB *
行列の乗算は交換法則が成り立ちません。まさに一目瞭然! オペランドの順序を替えたら結果の行列の形状まで変わってしまいました。
ベクトルを行列と掛けあわせる時、ベクトルは1行または1列の行列として扱われます。 行ベクトルになるか、列ベクトルになるかは、 行列の左右どちらから掛けるかに依ります。 掛け算の結果はベクトルであって、これも行か列か適切に解釈されます。
2: [ [ 1, 2, 3 ] 1: [14, 32] [ 4, 5, 6 ] ] . 1: [1, 2, 3] . r 4 r 1 *
この例では、ベクトルを逆方向から掛けることはできません。 なぜなら、行列の行数がベクトルの要素数と合わないからです。
(*) 練習問題 1. `*' を使って上の 2×3 行列の行ごとの合計を計算し、[6, 15] を得なさい。 同様に、`*' を使って列ごとの合計を計算して [5, 7, 9] を得なさい。 行列 練習問題 1 解答「行の和と列の和」 参照 . (*)
単位行列(identity matrix) とは正方行列であって、 その(左上から右下の)対角線上の要素が 1 で他が 0 の行列です。 ある行列に対し、左右どちらから掛けようが、常に結果は元の行列のままです。
1: [ [ 1, 2, 3 ] 2: [ [ 1, 2, 3 ] 1: [ [ 1, 2, 3 ] [ 4, 5, 6 ] ] [ 4, 5, 6 ] ] [ 4, 5, 6 ] ] . 1: [ [ 1, 0, 0 ] . [ 0, 1, 0 ] [ 0, 0, 1 ] ] . r 4 v i 3 RET *
正方行列であれば、しばしばその 逆元(inverse) が存在します。 逆元は行列(逆行列)であって、元の行列と掛けあわせると単位行列となります。 &(逆数)キーは行列の逆元(逆行列)をも計算します。
1: [ [ 1, 2, 3 ] 1: [ [ -2.4, 1.2, -0.2 ] [ 4, 5, 6 ] [ 2.8, -1.4, 0.4 ] [ 7, 6, 0 ] ] [ -0.73333, 0.53333, -0.2 ] ] . . r 4 r 2 | s 5 &
縦棒 | は数値, ベクトル, 行列を一緒に 結合(concatenate) します。 ここでは、新しい行ベクトルを追加して正方行列にしました。
これら 2つの行列をどの順序で掛け合わせても単位行列になります。
1: [ [ 1., 0., 0. ] 1: [ [ 1., 0., 0. ] [ 0., 1., 0. ] [ 0., 1., 0. ] [ 0., 0., 1. ] ] [ 0., 0., 1. ] ] . . M-RET * U TAB *
逆行列は代数学における連立一次方程式に関連します。 次の方程式群があるとしましょう:
a + 2b + 3c = 6 4a + 5b + 6c = 2 7a + 6b = 3
これは行列の方程式に書替えることができて、
[ [ 1, 2, 3 ] [ [ a ] [ [ 6 ] [ 4, 5, 6 ] * [ b ] = [ 2 ] [ 7, 6, 0 ] ] [ c ] ] [ 3 ] ]
この連立方程式は、両辺に逆行列を掛けることによって解くことができます。 Calc はこの操作すべてを 1ステップで実行できます。
2: [6, 2, 3] 1: [-12.6, 15.2, -3.93333] 1: [ [ 1, 2, 3 ] . [ 4, 5, 6 ] [ 7, 6, 0 ] ] . [6,2,3] r 5 /
結果は方程式の解 [a, b, c] のベクトルです。 (正方行列で割ることは、逆行列を掛けることと同等です。)
この解を検証してみましょう:
2: [ [ 1, 2, 3 ] 1: [6., 2., 3.] [ 4, 5, 6 ] . [ 7, 6, 0 ] ] 1: [-12.6, 15.2, -3.93333] . r 5 TAB *
行列とベクトルを掛けあわせる順序には慎重であらねばなりませんでした。 もし違う順序で掛けたら、 Calc は形状を一致させるためにこのベクトルを行ベクトルと見なしてしまい、 答は間違ったものになってしまうところでした。 Calc があなたの入力したベクトルを都合良く解釈することに不安を覚えたら、 明示的に Nx1 や 1xN の形式で入力しましょう。 この場合、列ベクトルを入力するために `[[6], [2], [3]]' とか `[6; 2; 3]' とします。
(*) 練習問題 2. 代数的入力方式を利用すると、 変数を含むベクトルや行列が入力できます。 次の連立方程式を x と y について解き、 a および b の式で表しなさい。
x + a y = 6 x + b y = 10
行列 練習問題 2 解答「文字を含む連立方程式」 参照 . (*)
(*) 練習問題 3. 未知数の数より方程式が多い連立方程式は 「過剰決定」です。このような場合、 同時に全ての方程式を満たす解が得られないことがよくありますが、 それでも「ある程度」満たす近似解を求めることは有用です。 行列式で言えば、 方程式 A X = B が過剰決定の場合 A は正方行列ではないので、 直接解くことはできません。 逆行列は正方行列にしか存在しないからです。 一般的なコツは、両辺の左から A の転置行列を掛けることです。 `trn(A)*A*X = trn(A)*B'. これで trn(A)*A は正方行列になったので、解くことができます。 このようにして解いた X ベクトルは「最小二乗」解であって、 方程式群の「最善の」近似解とみなすことができます。 次の過剰決定系を、Calc を使って解きなさい。
a + 2b + 3c = 6 4a + 5b + 6c = 2 7a + 6b = 3 2a + 4b + 6c = 11
行列 練習問題 3 解答「過剰決定系」 参照 . (*)
Go to the first, previous, next, last section, table of contents.
利用度数