スマホ用は別頁
=== 読者が配色を変更したい場合 ===
◎外側の色を変えるには,次の色をクリック
◎内側の色を変えるには,次の色をクリック
標準文字色を変えるには,次の色をクリック

Excelの行列計算(1)--行列の積
(最終更新年月日 2022.05.11)
【1. はじめに】
 このページでは,Excelなどのスプレッドシート(表計算ソフト)を使って,行列の計算を行う方法を要約する.
 実際に使うものは,パソコン版の(スマホ版ではない)ブラウザやソフトとして,
(A)PCにインストールして使うMicrosoft OfficeのExcel 2007(32Bit), 2010(64Bit)など旧型のもの
(B)ブラウザから無料で使えるExcel Online
(C)ブラウザから無料で使えるGoogle スプレッドシート
(D)PCに無料でインストールして使えるwxMaxima
とする.各々正式なマニュアルがあるかもしれないが,必ずしも確かめていない.Excel2007のヘルプのように,サポートが終了している場合もある.
 以下に述べるのは,自分用のメモで,実際に使ってみた結果(実験レポート)の要約となっている.
 なお,変化の速い分野なので,最終更新年月日を見て,現在使えるかどうか判断してください.
【2. 行列の積】
 2つの行列の積を計算するには
《要約》
(A)のPC版Excelでは
(1)行列の積を書き込みたい範囲の左上端のセルに=MMULT()関数を使って,2つの行列の範囲を書き込む
(2)積の形の範囲をドラッグして反転表示させる
(3)数式バーと呼ばれる画面上の方のfxという記号の右にある枠内にマウスをポイントしてから,Ctrl+Shift+Enterとする(CTRLキーとShiftキーを押しながら,Enterキーを押す)
※(3)の操作は,行列の積という結果を1つの配列としてまとめあげるもので,慣れるまで難しいことがある.
 この作業は,=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列を空けて書く方が,「見やすく」「間違いが少なく」なる.

ABCDEFGH
12−325
241
(2) 積を求めたい2つの行列を,以上のようにワークシートに書き込んで準備をした上で,行列の積をG列,H列に出力することを目標とする.
(3) 行列の積を求めるために,(A)〜(C)で用いる関数は MMULT() で,Matrix MULTiplication(行列の積)の略でしょう.

(A)のPC版Excelでは
  1. セルG1に =MMULT(A1:B1, D1:E2) と書き込み,Enterキーを押す.
  2. これらは,いずれも半角英数字(1バイト文字)で書かなければならない.
  3. =MMULT( ) は,慣れてきたら手書きで書き込んでもよいが,Excelの上端にあるメニューの「数式→fx関数の挿入→数学/三角→MMULTと進んでもよい.
     いきなり,数式バーの左にあるfxをクリックして,→数学/三角→MMULTと進んでもよい.
  4. MMULTは,半角であれば大文字でも小文字でもよいが,小文字で書き込んでも大文字に変換される.セル範囲の(A1:B1, D1:E2)も,小文字で書き込んでも大文字に変換される.
  5. 元のそれぞれの行列を表す範囲はA1:B1のように,コロン(:)で区切り,範囲と範囲の間をカンマ(,)で区切る.
  6. 元のそれぞれの行列を表す範囲は,キーボードを使って書き込んでもよいが,「テキストカレット(テキスト入力の現在位置を示す | が点滅しているもの)が=MMULT(|)となっているときに,マウスでA1からB1までドラッグしてから,カンマを手書きする,マウスでD1からE2までドラッグしてから,Enterキーを押す」とよい.
  7. [重要]
    (1) 以上の作業では,結果の行列のうちで左上端の1つのセルの値が表示されるだけで,積の行列全体はまだ表示されていない.
    一般に,行列の積では,
    [k×m行列]と[m×n行列]の積は[k×n行列]になる
    この問題では,[1×2行列]と[2×2行列]の積は[1×2行列]になるという事実を知らないと,結果の形に応じた行列はできない.
    (2) 積の形は,G1:H1になると理解した上で,その範囲をドラッグして反転表示させる
    (3) 最後に,数式バーと呼ばれる画面上の方のfxという記号の右にある枠内にマウスをポイントしてから,Ctrl+Shift+Enterとする(CTRLキーとShiftキーを押しながら,Enterキーを押す) ※(3)の操作は,行列の積という結果を1つの配列としてまとめあげるもので,慣れるまで難しいことがある.
     この作業は,=MMULT()で求めた左上端の成分を結果の形に応じてコピー&ペーストしてもできない.
    ■PC版Excelでは,解となる積の形を誤って実際よりも大きな範囲を指定した場合,一般には解でない範囲のセルには#N/A(Not A Number=数値ではない)というエラーメッセージが書き込まれ,分かるようになっている.ただし,積の形が1×n行列の場合やn×1行列の場合に,2×n行列の場合やn×3行列を積の形に指定した場合,値の繰り返しで埋め合わせが行われるので注意.
    ⇒ 次の表のG2,H2のようになる.

    ABCDEFGH
    12−325−87
    241−87
    ■上記の意味では,PC版Excelで行列の積を計算するには,数学的に正しい結果の形を理解していることが要求されるとも言える.
  8. 行列の積を書き込む範囲(今の場合はG1, H1)にすでに何らかのデータが書き込まれている場合,=MMULT( )を実行すると,先に書き込まれていたデータが上書きされて消えてしまう.
  9. 上記の方法で,行列の積の結果がG1:H1の書き込まれた後に
    1. 左上端以外の要素(ここではH1)を手書きで書き換えようとしても,配列の一部を変更できませんというエラーメッセージが表示され,エラーになる.
    2. 左上端の要素(ここではG1)を手書きで書き換えたり,削除したりしても,同様に,配列の一部を変更できませんというエラーメッセージが表示され,エラーになる.
結果:次の赤字の部分が書き込まれる.
[1×2行列]と[2×2行列]の積で[1×2行列]になる.

ABCDEFGH
12−325−87
241
(B)のExcel Onlineでは
  1. セルG1に =MMULT(A1:B1, D1:E2) と書き込み,Enterキーを押す.
  2. これらは,いずれも半角英数字(1バイト文字)で書かなければならない.
  3. =MMULT( ) は,慣れてきたら手書きで書き込んでもよいが,Excel Onlineの上端にあるメニューの「数式→fx関数の挿入→MMULTと進んでもよい.
  4. MMULTは,半角であれば大文字でも小文字でもよいが,小文字で書き込んでも大文字に変換される.セル範囲の(A1:B1, D1:E2)も,小文字で書き込んでも大文字に変換される.
  5. 元のそれぞれの行列を表す範囲はA1:B1のように,コロン(:)で区切り,範囲と範囲の間をカンマ(,)で区切る.
  6. 元のそれぞれの行列を表す範囲は,キーボードを使って書き込んでもよいが,「テキストカレット(テキスト入力の現在位置を示す | が点滅しているもの)が=MMULT(|_)となっているときに,マウスでA1からB1までドラッグしてから,カンマを手書きする,マウスでD1からE2までドラッグしてから,Enterキーを押す」とよい.
  7. [重要] 一般に,行列の積では,
    [k×m行列]と[m×n行列]の積は[k×n行列]になる
    が,その事実を知らなくても,Googleスプレッドシートでは,積の左上端のセル番号を決めれば,結果の形に応じた行列となって表示される.
     したがって,上記の方法で,セルG1に=MMULT(A1:B1, D1:E2) と書き込むと,[1×2行列]となる結果が,G1:H1の範囲に書き込まれる.
  8. 行列の積を書き込む範囲(今の場合はG1, H1)にすでに何らかのデータが書き込まれている場合,=MMULT( )を実行すると,先に書き込まれていたデータが上書きされて消えてしまうので,#スピル!というエラーメッセージが表示され,エラーになる.
    spill-spilled-spilled(英), spill-spilt-spilt(米)でこぼれる,あふれるという意味になる・・・高校1年で暗記させられて以来,忘れていた英語:It is no use crying over spilt milk.は「覆水盆に返らず」「後悔先に立たず」などと訳される.
  9. 上記の方法で,行列の積の結果がG1:H1の書き込まれた後に
    1. 左上端以外の要素(ここではH1)を手書きで書き換えようとしても,#スピル!というエラーメッセージが表示され,エラーになる.
    2. 左上端の要素(ここではG1)を手書きで書き換えたり,削除したりすると,積の結果が(H1も含めて)なくなる
結果:次の赤字の部分が書き込まれる.
[1×2行列]と[2×2行列]の積で[1×2行列]になる.

ABCDEFGH
12−325−87
241

(C)のGoogleスプレッドシートでは
  1. セルG1に =MMULT(A1:B1, D1:E2) と書き込み,Enterキーを押す.
  2. これらは,いずれも半角英数字(1バイト文字)で書かなければならない.
  3. =MMULT( ) は,慣れてきたら手書きで書き込んでもよいが,Googleスプレッドシートの上端(3行目)にあるメニューの右から2つ目にあるΣ→配列→MMULTと進んでもよい.
  4. MMULTは,半角であれば大文字でも小文字でもよい.セル範囲の(A1:B1, D1:E2)は,小文字で書き込んでも大文字に変換される.
  5. 元のそれぞれの行列を表す範囲はA1:B1のように,コロン(:)で区切り,範囲と範囲の間をカンマ(,)で区切る.
  6. 元のそれぞれの行列を表す範囲は,キーボードを使って書き込んでもよいが,「テキストカレット(テキスト入力の現在位置を示す | が点滅しているもの)が=MMULT(|_)となっているときに,マウスでA1からB1までドラッグしてから,カンマを手書きする,マウスでD1からE2までドラッグしてから,Enterキーを押す」とよい.
  1. [重要] 一般に,行列の積では,
    [k×m行列]と[m×n行列]の積は[k×n行列]になる
    が,その事実を知らなくても,Googleスプレッドシートでは,積の左上端のセル番号を決めれば,結果の形に応じた行列となって表示される.
     したがって,上記の方法で,セルG1に=MMULT(A1:B1, D1:E2) と書き込むと,[1×2行列]となる結果が,G1:H1の範囲に書き込まれる.
  2. 行列の積を書き込む範囲(今の場合はG1, H1)にすでに何らかのデータが書き込まれている場合,=MMULT( )を実行すると,先に書き込まれていたデータが上書きされて消えてしまうので,#REF!というエラーメッセージが表示され,エラーになる.
  3. 上記の方法で,行列の積の結果がG1:H1の書き込まれた後に
    1. 左上端以外の要素(ここではH1)を手書きで書き換えようとしても,無視される
    2. 左上端の要素(ここではG1)を手書きで書き換えたり,削除したりすると,積の結果が(H1も含めて)なくなる
結果:次の赤字の部分が書き込まれる.
[1×2行列]と[2×2行列]の積で[1×2行列]になる.

ABCDEFGH
12−325−87
241


AB
113
202
3

41−1
523
6

7

8

【例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行列の積が表示される.

AB
113
202
3

41−1
523
6

778
846
 (A)のPC版Excelでは,
(2) 次にA7〜B8の範囲をドラッグして,反転表示にする.
(3) さらに,数式バーにマウスをポイントしてから,Ctrl+Shift+Enterとする(CTRLキーとShiftキーを押しながら,Enterキーを押す)
結果:右の表のように表示される.

【例3】・・・問題と解答のみ
[問題3-1]


ABCDEFG
1342
10
21
[記入例]
 右の表において,セルF1に
=MMULT(A1:B1,D1:D2) と記入する.
⇒ セルF1に右の表のように値が入る
[解答]
  (10)
※ 1×1型の行列は,単なる数になるので,行列を表すかっこはなくてもよい.
[問題3-2]


ABCDEFG
12
34
68
21

34
[記入例]
 右の表において,セルF1に
=MMULT(A1:A2,C1:D1) と記入する.
(A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する.
⇒ セルF1:G2に右の表のように値が入る
[解答]

[問題3-3]


ABCDEFGH
12−325−87
214
[記入例]
 右の表において,セルG1に
=MMULT(A1:B1,D1:E2) と記入する.
(A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する.
⇒ セルG1:H1に右の表のように値が入る
[解答]

[問題3-4]


ABCDEFGH
11−220−6−2
23541265
[記入例]
 右の表において,セルG1に
=MMULT(A1:B2,D1:E2) と記入する.
(A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.
⇒ セルG1:H2に右の表のように値が入る
[解答]


[問題3-5]


ABCDEFGHI
1213−13018
20412084
304
[記入例]
 右の表において,セルH1に
=MMULT(A1:C2,E1:F3) と記入する.
(A)のPC版Excelでは,この後さらに,配列にするための操作が必要になる.(B)(C)では,これで完了する.
⇒ セルH1:I2に右の表のように値が入る
[解答]

[問題3-6]


ABCDEFGHIJ
1−13213−2110
22 0041426
30 4 0164
[記入例]
 右の表において,セル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. 行列の成分が
「分数」「無理数」「複素数」「文字式」であるとき
《一覧》
@) 分数 掛ける行列の成分積の行列の成分
(A)PC版Excel 可能可能
(B)Excel online 可能可能
(C)Googleスプレッドシート可能可能
(D)wxMaxima 可能可能

A) 無理数 掛ける行列の成分積の行列の成分
(A)PC版Excel 可能不可
(B)Excel online 可能不可
(C)Googleスプレッドシート可能不可
(D)wxMaxima 可能可能
B)複素数掛ける行列の成分積の行列の成分
(A)PC版Excel 可能工夫
(B)Excel online 可能工夫
(C)Google スプレッドシート可能工夫
(D)wxMaxima 可能可能

C)文字式掛ける行列の成分積の行列の成分
(A)PC版Excel 不可不可
(B)Excel online 不可不可
(C)Google スプレッドシート不可不可
(D)wxMaxima 可能可能

(D)については,別途説明する.
(A)(B)(C)について,まとめて述べる.
@) 分数の場合
 次の表のように,掛ける行列の成分が分数である場合も,積として得られる行列の成分を分数で表示したい場合も,いずれも可能
- 表1 -

ABCDEFGH
11/33/41/42/5−1/4223/60
25/63/7−1/71/384/57110/21
●1---(A)(B)(C)いずれの場合も,初めから1/3などと入力すると後から手直しするのが大変なので,行列計算を行う範囲(上の表ではA1〜H2まで)を初めに分数表示にしてから,数値を入力するとよい.
(A)のPC版Excelでは
「(メニューから)書式→セルの書式設定→表示形式:分数→3桁増加」
(B)のExcel Onlineでは
「(メニューの上の段を「ホーム」としておいて)メニューの2段目で中央付近にあるセレクトメニューから「その他の表示形式」→表示形式:分数→3桁増加」を選ぶ
(C)のGoogleスプレッドシートでは
 (分数表示にしたい範囲を選択し,反転表示にしておいてから)「表示形式→数字→カスタム数値形式→# ???/???→適用」を選ぶ
または
123カスタム数値形式→# ???/???→適用」でもよい.
●2---筆者の考える結論のみ示し,理由は後に述べる.
ア) 整数÷整数で表される分数の分母が3桁以下で「正確な値」になるときは,(A)(B)(C)のどれで行っても,同じ結果が得られる.
【例】
 上記の表1において,セルG1, H1, H2の値は,(A)(B)(C)のどれで行っても,同じ結果になる
イ) 整数÷整数で表される分数を「正確な値」として表示するための分母の桁数よりも,(A)(B)(C)で指定する分母の桁数が少ない場合,
多くの場合に(A)(B)(C)は「その桁数で表すことのできる最良の近似分数」として同じ分数を示すが,
【例】
 を分母が3桁の分数で近似する場合,(A)(B)(C)のどれで行っても,同じ結果 2 396/881 が得られる(整数部分を2とする帯分数で表示される).
食い違いがある場合は,(C)の方がよい値を示しているようである.
【例】
 上記の表1において,セルG2の値は,「正確な値」は分母が4桁の分数 173/1176(≒0.14710884354)であるが,(A)(B)で分母が3桁までの近似分数の最良値とすると84/571(≒0.14711033275)になり,(C)で分母が3桁までの近似分数の最良値とすると89/605(≒0.14710743802)となって,(C)の方がよい近似になっている.
なお,(A)(C)は分母の整数の桁数を4桁,5桁・・・と増やすことができるが,(B)は「ユーザー定義の表示形式の作成は,現在webバージョンのExcelではサポートされていません」となっているので,4桁以上に変更することはできない.

A) 無理数の場合
 次の表2のように,(A)(B)(C)のどれで行っても,掛ける行列の成分が無理数であることは可能であるが,積として得られる行列の成分は小数になり,それがどのような無理数を表しているのかは,明らかにならない.
- 表2 -

ABCDEF
1=SQRT(5)=SQRT(3)=SQRT(2)5.660327193
2=6^(3/2)=7^(-1/2)=3^(1/3)21.32972879
B) 複素数の場合
 (A)(B)(C)のどれも,掛ける行列の成分が複素数の場合,手書き入力で3+4iのように(虚数単位をiかjのどちらかに揃えて)書き込んでもよく,=COMPLEX(3,4,"i")のように複素数専用の入力関数を用いて書き込んでもよい.
 行列の積を直接表現する関数は見当たらず,「複素数の積」「複素数の商」「複素数の累乗」を関数を使って個別に計算し,次に「複素数の和」「複素数の差」を求めることはできる.(表1で工夫と書いたのはそういう意味である)
- 表3 -

ABCDEF
13+4i2-3i2-i9
21+i1-i1-i3-i
 複素数の計算に使える関数は(A)(B)(C)とも,「関数の挿入→エンジニアリング」で表示される一覧表から選べる.関数名がIM・・・で始まる特徴がある.
• 複素数の積:=IMPRODUCT(複素数1, 複素数2, ・・・)
• 複素数の和:=IMSUM(複素数1, 複素数2, ・・・)
 上記の表3のセルF1には,次の関数を書き込む.
  IMSUM(IMPRODUCT(A1,D1),IMPRODUCT(B1,D2))
セルF2には,次の関数を書き込む.
  =IMSUM(IMPRODUCT(A2,D1),IMPRODUCT(B2,D2))
C) 文字式の場合
 行列の成分に文字式が含まれる場合の行列計算は,(A)(B)(C)ではできず,(D)のwxMaximaでは可能である.
【例】
- 表4 -

ABCDEFGH
12x1x−1y+2x2−x
2y3yxxy+3y3x−y
● wxMaximaで表4の計算を行うには,
メニューから「代数→手入力による行列の作成」と進み
 行数2,列数2,タイプは一般のまま,変数名をAなどとする
• 空欄をキーボードを使って埋めて行く.マウスでポイントして空欄を移動してもよいが,タブキーを使って次のセルに移動してもよい.
• 数学と違って,2xは,アスタリスクを使って2*xなどと書く点が注意.その他,累乗や割り算は表計算ソフトと同様に2^(x+1), x/yなどと書く.
 行数2,列数2,タイプは一般のまま,変数名をAなどとする
 2つの行列A,Bの積(行列としての積)を求めるには
A.B
のようにドット(.)を使う.この後,Shift+Enterで行列の式が表示される.(表4のようなセルはなく,テキスト画面上に表示される.)

【3. 近似分数】(補足説明)
● ここから下は,筆者独自の考えを述べたもので,どこか他の記事で確かめられるものではない.
● 怪しい話,眉つばものかもしれないとお考えの方は,読み飛ばしてください.
《要点》
 (A)PCにインストールして使うExcelや(B)Excel Onlineで数値の分数表示を選ぶとき「1桁増加」「2桁増加」「3桁増加」という書式を選ぶことになるが,この「増加」はたぶん誤訳で「1桁まで」「2桁まで」「3桁まで」と書く方がよい.
 小数を近似分数で表すときに,(A)(B)のExcel画面の「1桁増加」「2桁増加」「3桁増加」という用語に戸惑う人が多いと思う.英語版で Up to one digitは「1桁まで」「最大で1桁」,Up to two digitsは「2桁まで」「最大で2桁」・・・と訳せばよく,「増加」はExcel97頃から引きずってきた誤訳だと思う.
 分数で1桁まで表示されているときに「1桁増加」を選んでも,桁数は何も増加しない.Up to〜は「〜まで」という意味で,incrementと同じではない.反対語として Down to〜という用語はない.
《要点》
 分数や小数を分母の桁数を限った整数÷整数の分数で近似する場合,上記の(A)(B)よりも(C)の方が最良近似となっていることが多い.
(1) 具体例で問題点を示す
【例1】
 x=11/13(≒0.8461538462・・・)を分母が1桁までの分数で近似する場合,
(A)(B)では,
5/6(≒0.8333333333・・・)となり,真の値xとの差の絶対値は,0.01282051282・・・
(C)では
6/7(≒0.8571428571・・・)となり,真の値xとの差の絶対値は,0.01098901099・・・
以上から,(C)の方が良い近似値になっている.
【例2】
 x=π(≒3.141592654・・・)を分母が1桁,3桁までの分数で近似する場合,
(A)(B)(C)とも,
3 1/7, 3 16/113となり,近似値は同じになる.(仮分数ではなく帯分数で示される)
【例3】
 x=を分母が3桁までの分数で近似する場合,
(A)(B)では,
2 72/305(≒2.236065574・・・)となり,真の値xとの差の絶対値は,0.000002403729298・・・
(C)では
2 233/987(≒2.236068896・・・)となり,真の値xとの差の絶対値は,0.0000009181435741・・・
以上から,(C)の方が良い近似値になっている.

(2) 小数を分数に直す方法
 小中学校で習うように,分数を小数に直すには,必要な桁数まで小数点以下の割り算をすればよい.
 逆に,小数,例えば0.67を分数に直すには,とすればよい.
 ここまでは,小中学校で習うが,【例1】のように,x=11/13(≒0.8461538462・・・)を分母が1桁までの分数で近似する場合,最良の近似分数は何か?という問題に対して,M社は5/6と答え,G社は6/7と答えていることとなり,判断が分かれている.
 ところで,数学で近似分数を求めるのに,連分数展開を利用する方法がある.
【例4】 次の分数を「分母に1桁の分数までを使って」近似分数で表すという場合

ここで,の部分を「全部捨てる」とM社の近似分数となって


また,の2の部分から「1だけ捨てる」とG社の近似分数となって

また,の部分を「全部残す」と元の分数になって(分母を1桁の分数で表すという条件を満たさない)

【例5】 次の分数を「分母に2桁の分数までを使って」近似分数で表すという場合

[M]ここで,の部分を「全部捨てて」0にするとM社の近似分数となって

[G] また,の部分を「一部捨てて」にするとG社の近似分数となって

[T] また,の部分を「全部残して」にすると元の真の値になるが,分母が3桁となって条件に合わない

※|G-T|の方が|M-T|よりも小さくなるが,実はこれらの間にの部分を「一部捨てて」にすると,Gよりも小さく,Tとの差の絶対値がGとMの中間となる近似分数

がある.
【例6】 を「分母に3桁の分数までを使って」近似分数で表すという場合

[M]ここで,の部分を「全部捨てて」0にするとM社の近似分数となって

[G] また,の部分を「一部捨てて」にするとG社の近似分数となって

[S] また,の部分を「ほとんど残して」にすると,分母が4桁となって条件に合わない

[A1] また,の部分を「一部捨てて」にすると独自の近似分数となって

真の値[T]は,[S]よりも少し小さいので,近似値[A1]は[M]に」負けている.

(3) M社とG社で異なる近似分数となる幾つかの例

真の値近似分母の桁数M社G社良い方
13/171桁まで3/47/9G社
17/111桁まで1 1/21 5/9G社
107/1032桁まで1 1/261 3/77G社
104/1072桁まで35/3669/71G社
3桁まで3 37/2283 154/949G社
3桁まで3 120/3793 259/818G社
【問題】 次の各数について,指定された桁数以下の分母を使って整数÷整数の近似分数で表してください.(1よりも大きい分数は帯分数で表すものとします)
(1) 17/14 (1桁)
(2) 19/17 (1桁)
(3) 110/107(2桁)
(4) 101/110(2桁)
(5)   (4桁)
(6)  (3桁)
[解答を見る]
●==メニューに戻る