![]() ![]() *** 大区分 *** 数Ⅰ・A数Ⅱ・B数Ⅲ高卒・大学初年度 *** 中区分 *** ベクトル・行列連立方程式複素数関数・数列微分積分微分方程式統計maxima ※高卒から大学初年度向け「連立方程式」について,このサイトには次の教材があります.
この頁へGoogleやYAHOO ! などの検索から直接来てしまったので「前提となっている内容が分からない」という場合や「この頁は分かったがもっと応用問題を見たい」という場合は,他の頁を見てください. が現在地です. ↓表計算オートフィルの使い方 ↓Excelの行列計算(1) 行列の積-現在地 ↓未知数がn個で逆行列を用いて解く場合 ↓クラメールの公式で解く場合 ↓クラメールの公式[問題] ↓wxMaximaで解く場合 ↓不能解・不定解が出る場合 ↓同(固有ベクトル) ↓行基本変形と掃き出し法による場合 ↓同(不定解) ↓連立方程式(まとめ) 2次2次連立形 |
=== 読者が配色を変更したい場合 ===
◎外側の色を変えるには,次の色をクリック
Excelの行列計算(1)--行列の積
(最終更新年月日 2022.05.11)
【1. はじめに】このページでは,Excelなどのスプレッドシート(表計算ソフト)を使って,行列の計算を行う方法を要約する. 実際に使うものは,パソコン版の(スマホ版ではない)ブラウザやソフトとして,
(A)PCにインストールして使うMicrosoft OfficeのExcel 2007(32Bit), 2010(64Bit)など旧型のもの
とする.各々正式なマニュアルがあるかもしれないが,必ずしも確かめていない.Excel2007のヘルプのように,サポートが終了している場合もある.(B)ブラウザから無料で使えるExcel Online (C)ブラウザから無料で使えるGoogle スプレッドシート (D)PCに無料でインストールして使えるwxMaxima 以下に述べるのは,自分用のメモで,実際に使ってみた結果(実験レポート)の要約となっている. なお,変化の速い分野なので,最終更新年月日を見て,現在使えるかどうか判断してください. |
【2. 行列の積】 2つの行列の積を計算するには 《要約》 (A)のPC版Excelでは
(1)行列の積を書き込みたい範囲の左上端のセルに=MMULT()関数を使って,2つの行列の範囲を書き込む
※(3)の操作は,行列の積という結果を1つの配列としてまとめあげるもので,慣れるまで難しいことがある.(2)積の形の範囲をドラッグして反転表示させる (3)数式バーと呼ばれる画面上の方のfxという記号の右にある枠内にマウスをポイントしてから,Ctrl+Shift+Enterとする(CTRLキーとShiftキーを押しながら,Enterキーを押す) この作業は,=MMULT()で求めた左上端の成分を結果の形に応じてコピー&ペーストしてもできない. 配列としてできたものの一部を,後から手書きで書き換えたり,削除したりしようとすると,エラーメッセージが表示されて,一部書き換えはできないようになっている. (B)のExcel Onlineでは
(1)行列の積を書き込みたい範囲の左上端のセルに=MMULT()関数を使って,2つの行列の範囲を書き込む
の操作だけで完了し,上記(2)(3)の操作は不要.したがって,2つの行列の積の結果として得られる行列の型が分からなくても,自動的に結果として示される.ただし,積の行列を書き込むべき範囲に他のデータが先に書き込まれている場合は,#スピル!というエラーになる.(#SPILL! エラーは,ワークシートの範囲を超えた書き込みをしようとした場合に表示されるメッセージ)※行列の積の結果を表す配列の一部を,後から書き換えようとした場合,ア)左上端の成分以外を書き換えたり,削除しようとした場合には,無視される.イ)左上端の成分を書き換えたり削除しようとした場合には,結果を表す行列がなくなる. (C)のGoogleスプレッドシートでは
(1)行列の積を書き込みたい範囲の左上端のセルに=MMULT()関数を使って,2つの行列の範囲を書き込む
の操作だけで完了し,上記(2)(3)の操作は不要.したがって,2つの行列の積の結果として得られる行列の型が分からなくても,自動的に結果として示される.ただし,積の行列を書き込むべき範囲に他のデータが先に書き込まれている場合は,#REF!というエラーになる.(結果の配列が先に書かれているデータを上書きするため展開されなかったというメッセージが表示される)※行列の積の結果を表す配列の一部を,後から書き換えようとした場合,ア)左上端の成分以外を書き換えたり,削除しようとした場合には,無視される.イ)左上端の成分を書き換えたり削除しようとした場合には,結果を表す行列がなくなる. (D)のwxMaximaでは
上記の(A)(B)(C)の表計算ソフトでは,成分が「整数」「分数」「小数」のような複素数以外の定数ならば,行列の積が計算できるが,行列の成分に複素数やa, b, x, yのような文字式が含まれる場合は,行列の積を計算できない.行列の成分に「複素数」やa, b, x, yのような「文字式」が含まれる場合は,wxMaximaを使えばよい. |
《具体例》 以下においては,(A)(B)(C)について,2つまで詳しく解説し,他は練習用の問題と解答のみ示す.
【例1】
《数学の答案の書き方》《スプレッドシート,表計算ソフトでの計算》 (1) 次の表のように,ワークシートのセルA1, B1に左から掛ける行列の成分,2, −3を書き込み,D1~E2に右から掛ける行列の成分,2,5,4,1を書き込む.
• A1, B1でなければならない訳ではなく,A2, B2のように左右に隣り合っていればよい.
• 同様に,D1~E2でなければならないことはなく,左右上下に2個ずつ隣り合っていればよい. • 通常,1つのデータは1つの範囲に書くので,別の行列は,次の例のようにC列を空けて書く方が,「見やすく」「間違いが少なく」なる.
(3) 行列の積を求めるために,(A)~(C)で用いる関数は MMULT() で,Matrix MULTiplication(行列の積)の略でしょう. |
(A)のPC版Excelでは
[1×2行列]と[2×2行列]の積で[1×2行列]になる.
|
(B)のExcel Onlineでは
[1×2行列]と[2×2行列]の積で[1×2行列]になる.
|
(C)のGoogleスプレッドシートでは
[1×2行列]と[2×2行列]の積で[1×2行列]になる.
|
次の行列の積を,ワークシートのA7~B8の範囲に書き込んでください. |
当然のことですが,ワークシート上で左に見えるか右に見えるかは,行列の積にとって関係なく,=MMULT(第1引数, 第2引数)という形でMMULT関数の第1引数に書き込む範囲が,数学的には左から掛ける行列に対応し,第2引数に書き込む範囲が,数学的には右から掛ける行列に対応する. (1) A7のセルに =MMULT(A1:B2,A4:B5)と書き込む
(B)のExcel Online, (C)のGoogleスプレッドシートの場合は,以上の(1)で完了し,A7:B8の範囲に2×2行列の積が表示される.
(A)のPC版Excelでは,
結果:右の表のように表示される.
(2) 次にA7~B8の範囲をドラッグして,反転表示にする. (3) さらに,数式バーにマウスをポイントしてから,Ctrl+Shift+Enterとする(CTRLキーとShiftキーを押しながら,Enterキーを押す) |
【例3】・・・問題と解答のみ [問題3-1]
右の表において,セルF1に =MMULT(A1:B1,D1:D2) と記入する. ⇒ セルF1に右の表のように値が入る [解答] (10) ※ 1×1型の行列は,単なる数になるので,行列を表すかっこはなくてもよい. [問題3-2]
右の表において,セルF1に =MMULT(A1:A2,C1:D1) と記入する. (A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する. ⇒ セルF1:G2に右の表のように値が入る [解答] |
[問題3-3]
右の表において,セルG1に =MMULT(A1:B1,D1:E2) と記入する. (A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する. ⇒ セルG1:H1に右の表のように値が入る [解答] [問題3-4]
右の表において,セルG1に =MMULT(A1:B2,D1:E2) と記入する. (A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる. ⇒ セルG1:H2に右の表のように値が入る [解答] |
[問題3-5]
右の表において,セルH1に =MMULT(A1:C2,E1:F3) と記入する. (A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する. ⇒ セルH1:I2に右の表のように値が入る [解答] [問題3-6]
右の表において,セルH1に =MMULT(A1:B3,D1:F2) と記入する. (A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する. ⇒ セルH1:J3に右の表のように値が入る [解答] |
【例4】 行列の成分が「小数」「分数」「累乗根」「文字式」であるとき 1. 行列の成分が「小数」であるとき
Excelなどの表計算ソフトでは,整数や小数を使って作業することがほとんどで,読者も慣れていると考えられるので,ここでは細かな説明は行わずに,表示する小数点以下の桁数を変更する方法のみ示す.
(A)のPC版Excel(~2010まで確認)では
画面上端のメニューを使って「書式→セルの初期設定→数値→小数点以下の桁数」により,小数点以下の桁数を変更できる.
(B)ブラウザから無料で使えるExcel Onlineでは
画面上端のメニューを使って「
(C)ブラウザから無料で使えるGoogle スプレッドシートでは
画面上端のメニューを使って「.0←」「.00→」のうちの右側を何回かクリックすると変更できる(「123▼」からカスタム数値を選んでもよい).
以上の方法で小数点以下の見える範囲を変更できるが,実際には倍精度浮動小数点型(double型)の範囲までが有効な範囲となるようである.
例えば,数学的には,1/3=0.33333333333333333・・・と無限に続く小数は,上記のメニューを使って小数点以下の桁数を16桁以上にすると,0.333333333333333000のように16桁目以下は丸められて0となる.したがって,実際には10進法で有効数字は15桁程度と考えておくとよい.それ以上の桁は表示されていても,怪しい可能性がある. |
2. 行列の成分が
《一覧》「分数」「無理数」「複素数」「文字式」であるとき
|
(D)については,別途説明する. (A)(B)(C)について,まとめて述べる. ⅰ) 分数の場合 次の表のように,掛ける行列の成分が分数である場合も,積として得られる行列の成分を分数で表示したい場合も,いずれも可能
(A)のPC版Excelでは
「(メニューから)書式→セルの書式設定→表示形式:分数→3桁増加」
(B)のExcel Onlineでは
「(メニューの上の段を「ホーム」としておいて)メニューの2段目で中央付近にあるセレクトメニューから「その他の表示形式」→表示形式:分数→3桁増加」を選ぶ
(C)のGoogleスプレッドシートでは
●2---筆者の考える結論のみ示し,理由は後に述べる.(分数表示にしたい範囲を選択し,反転表示にしておいてから)「表示形式→数字→カスタム数値形式→# ???/???→適用」を選ぶ または 「123▼カスタム数値形式→# ???/???→適用」でもよい.
ア) 整数÷整数で表される分数の分母が3桁以下で「正確な値」になるときは,(A)(B)(C)のどれで行っても,同じ結果が得られる.
【例】
イ) 整数÷整数で表される分数を「正確な値」として表示するための分母の桁数よりも,(A)(B)(C)で指定する分母の桁数が少ない場合,上記の表1において,セルG1, H1, H2の値は,(A)(B)(C)のどれで行っても,同じ結果になる 多くの場合に(A)(B)(C)は「その桁数で表すことのできる最良の近似分数」として同じ分数を示すが,
【例】
食い違いがある場合は,(C)の方がよい値を示しているようである.
【例】
なお,(A)(C)は分母の整数の桁数を4桁,5桁・・・と増やすことができるが,(B)は「ユーザー定義の表示形式の作成は,現在webバージョンのExcelではサポートされていません」となっているので,4桁以上に変更することはできない.
上記の表1において,セルG2の値は,「正確な値」は分母が4桁の分数 173/1176(≒0.14710884354)であるが,(A)(B)で分母が3桁までの近似分数の最良値とすると84/571(≒0.14711033275)になり,(C)で分母が3桁までの近似分数の最良値とすると89/605(≒0.14710743802)となって,(C)の方がよい近似になっている. |
ⅱ) 無理数の場合 次の表2のように,(A)(B)(C)のどれで行っても,掛ける行列の成分が無理数であることは可能であるが,積として得られる行列の成分は小数になり,それがどのような無理数を表しているのかは,明らかにならない.
(A)(B)(C)のどれも,掛ける行列の成分が複素数の場合,手書き入力で3+4iのように(虚数単位をiかjのどちらかに揃えて)書き込んでもよく,=COMPLEX(3,4,"i")のように複素数専用の入力関数を用いて書き込んでもよい. 行列の積を直接表現する関数は見当たらず,「複素数の積」「複素数の商」「複素数の累乗」を関数を使って個別に計算し,次に「複素数の和」「複素数の差」を求めることはできる.(表1で工夫と書いたのはそういう意味である)
• 複素数の積:=IMPRODUCT(複素数1, 複素数2, ・・・) • 複素数の和:=IMSUM(複素数1, 複素数2, ・・・) 上記の表3のセルF1には,次の関数を書き込む. IMSUM(IMPRODUCT(A1,D1),IMPRODUCT(B1,D2)) セルF2には,次の関数を書き込む. =IMSUM(IMPRODUCT(A2,D1),IMPRODUCT(B2,D2)) |
ⅳ) 文字式の場合 行列の成分に文字式が含まれる場合の行列計算は,(A)(B)(C)ではできず,(D)のwxMaximaでは可能である. 【例】
メニューから「代数→手入力による行列の作成」と進み 行数2,列数2,タイプは一般のまま,変数名をAなどとする
• 空欄をキーボードを使って埋めて行く.マウスでポイントして空欄を移動してもよいが,タブキーを使って次のセルに移動してもよい.
行数2,列数2,タイプは一般のまま,変数名をAなどとする• 数学と違って,2xは,アスタリスクを使って2*xなどと書く点が注意.その他,累乗や割り算は表計算ソフトと同様に2^(x+1), x/yなどと書く. 2つの行列A,Bの積(行列としての積)を求めるには A.B のようにドット(.)を使う.この後,Shift+Enterで行列の式が表示される.(表4のようなセルはなく,テキスト画面上に表示される.) |
【3. 近似分数】(補足説明)
● ここから下は,筆者独自の考えを述べたもので,どこか他の記事で確かめられるものではない.
● 怪しい話,眉つばものかもしれないとお考えの方は,読み飛ばしてください.
《要点》
小数を近似分数で表すときに,(A)(B)のExcel画面の「1桁増加」「2桁増加」「3桁増加」という用語に戸惑う人が多いと思う.英語版で Up to one digitは「1桁まで」「最大で1桁」,Up to two digitsは「2桁まで」「最大で2桁」・・・と訳せばよく,「増加」はExcel97頃から引きずってきた誤訳だと思う.(A)PCにインストールして使うExcelや(B)Excel Onlineで数値の分数表示を選ぶとき「1桁増加」「2桁増加」「3桁増加」という書式を選ぶことになるが,この「増加」はたぶん誤訳で「1桁まで」「2桁まで」「3桁まで」と書く方がよい. 分数で1桁まで表示されているときに「1桁増加」を選んでも,桁数は何も増加しない.Up to~は「~まで」という意味で,incrementと同じではない.反対語として Down to~という用語はない.
《要点》
分数や小数を分母の桁数を限った整数÷整数の分数で近似する場合,上記の(A)(B)よりも(C)の方が最良近似となっていることが多い. (1) 具体例で問題点を示す
【例1】x=11/13(≒0.8461538462・・・)を分母が1桁までの分数で近似する場合,
(A)(B)では,
以上から,(C)の方が良い近似値になっている.5/6(≒0.8333333333・・・)となり,真の値xとの差の絶対値は,0.01282051282・・・ (C)では 6/7(≒0.8571428571・・・)となり,真の値xとの差の絶対値は,0.01098901099・・・ 【例2】 x=π(≒3.141592654・・・)を分母が1桁,3桁までの分数で近似する場合,
(A)(B)(C)とも,
【例3】3 1/7, 3 16/113となり,近似値は同じになる.(仮分数ではなく帯分数で示される) x=
(A)(B)では,
以上から,(C)の方が良い近似値になっている.2 72/305(≒2.236065574・・・)となり,真の値xとの差の絶対値は,0.000002403729298・・・ (C)では 2 233/987(≒2.236068896・・・)となり,真の値xとの差の絶対値は,0.0000009181435741・・・ |
(2) 小数を分数に直す方法
小中学校で習うように,分数を小数に直すには,必要な桁数まで小数点以下の割り算をすればよい.逆に,小数,例えば0.67を分数に直すには, ここまでは,小中学校で習うが,【例1】のように,x=11/13(≒0.8461538462・・・)を分母が1桁までの分数で近似する場合,最良の近似分数は何か?という問題に対して,M社は5/6と答え,G社は6/7と答えていることとなり,判断が分かれている. ところで,数学で近似分数を求めるのに,連分数展開を利用する方法がある. 【例4】 次の分数を「分母に1桁の分数までを使って」近似分数で表すという場合 ここで, また, また, 【例5】 次の分数を「分母に2桁の分数までを使って」近似分数で表すという場合 [M]ここで, ![]() [G] また, [T] また, ※|G-T|の方が|M-T|よりも小さくなるが,実はこれらの間に がある. 【例6】 [M]ここで, [G] また, [S] また, [A1] また, 真の値[T]は,[S]よりも少し小さいので,近似値[A1]は[M]に」負けている. |
(3) M社とG社で異なる近似分数となる幾つかの例
|
【問題】 次の各数について,指定された桁数以下の分母を使って整数÷整数の近似分数で表してください.(1よりも大きい分数は帯分数で表すものとします)
(1) 17/14 (1桁)
[解答を見る](2) 19/17 (1桁) (3) 110/107(2桁) (4) 101/110(2桁) (5) (6)
(5)は4桁なので,現在Excel onlineではできない.(6)は(A)(B)(C)とも同じ結果になる.
以下は,(C)のGoogle スプレッドシートで得られる結果です. 2桁程度なら,前述の方法で筆算でもできる. (1) 1 2/9 , (2) 1 1/9 , (3) 1 2/71 , (4) 56/61 , (5) 4 2889/6119 , (6) 8 163/302 |
■このサイト内のGoogle検索■ |