高等学校情報/情報I/モデル化とシミュレーション

世の中には、何かを確かめるために実験しようにも、本番で実験しようとすると、費用が掛かる、時間がかかる、命にかかわる、などの理由で、本番で実験するのが難しいことが多くあります。また、スポーツの試合とか手術は、そもそ本番は一度しか出来ません(※数研、東京書籍)。
そのような場合の対応を練習したり予測したりするため、実物・本番に似せたものを作って、代わりにそれで、実験または計算などを行うことがあり、そのような実物の代わりのものをモデルと言います(※日本文教出版ほか、)。
完全に実物そっくりではなく、知りたい事に関係のない、必要のない特徴については、似せません。
たとえば、駅の入り口にある路線図を考えてください。実際の地図上での長さと、路線図の長さは、まったく違います(※東京書籍など)。
そういう必要のない情報まで似せてしまうと、分析が難しくなってしまう場合もあるので、モデルでは、なるべく簡単に作ります。
このように、モデルを作る際は、単純化をします。単純化とは、その問題で本質的な部分だけを取り出し、他の部分の情報を省略することです(日本文教出版I、東京書籍I、第一学習社I)。
建築のモデルハウスの実物大の家なんかも、その名の通り、モデルです。モデルハウスのように、実物大のモデルのことを実物大モデルと言います(日本文教出版)。
自動車や航空機などの空気抵抗を調べる場合などは、なるべく実物大で行いますので(※数研出版)、このような抵抗実験における、代わりの実物大の模型も実物大モデルです。 、 実際より小さいミニチュアのモデルもよくあります。地図や地球儀などもそうです(日本文教出版)。
理科などの数式も、モデルの一種です。数式によるモデルを、数式モデルまたは数理モデルなどと言います(第一学習社、日本文教出版)。
たとえば、物理の運動方程式を考えるときは、その材質がビー玉かとか鉄球とか材質は無視して、単に質量が ××グラム の小さな硬い球を転がして、別の質量△△の四角い物体にブツけたらどうなるか、みたいに、予想に関係のない情報は省略して考えますが、このような省略もモデル化の特徴です。
なにも理科だけでなく、お金の計算もそうです(日本文教出版I)。
「毎月、貯金が1万3000円ずつ増えるとき、18か月後にどうなってるか?」という予想を考えるとき、どんな理由で貯金してるのかとか、誰が貯金してるのかとか、それは答えに関係ありません。
この運動方程式や貯金の予想などのように、検証したいことと関係の無いことが分かっている情報については、モデルでは再現しないのが一般的です。
化学の分子模型もモデルです(※開隆堂、数研、日本文教出版)。分子模型のように、ミクロの世界を拡大したモデルなど、実物より大きなモデルのことを拡大モデルと言います(※日本文教出版、)。
そもそも模型は英語で model (モゥデル)です。プラモデルもプラスチック模型。模型の「模」の字は、模倣・模擬の「模」。なお、一般的なプラモデルはミニチュアなので縮小モデルです(第一学習社)。
駅の入り口にある運賃の路線図も、あれもモデルです(※第一学習社)。実際の駅と駅どうしの距離と、あの図での駅と駅の距離は、まったく比例していません。駅の入り口のあの図で知りたい情報は、「どの路線にどの駅があって運賃がいくらか」といった情報なので、それ以外の情報は省略しているのです。
だから、駅の入り口のあの運賃のある路線図もモデルです。
なお、路線図やフローチャートなど、対象を図で表したモデルのことを「図的モデル」と言います
また、災害などは、命にもかかわるし(※数研出版)、道徳的にも理論を確認するために本番の災害を起こすのは問題ありますので、そのような分野でも、モデルは有用です。


実際の問題の予想や解決策を探すなどの目的で、なるべく実際に近いモデルを使って試行することをシミュレーションと言います(※数研など)。
コンピュータの無い時代からシミュレーションはあります(※数研)。たとえば、大地震が起きたときの感覚を体験する地震体験車もシミュレーションです(※第一学習社)。
コンピュータを用いたシミュレーションの場合、モデル化されたデータやプログラムをもとに、乱数を用いてシミュレーションできます(※ 東京書籍)。

たとえば、家を建築する際、いきなり建築するのではなく、現代では事前に3DーCGで建築結果の予想を表示できます。(※開隆堂、東京書籍)
また、家主・注文主に見立てたキャラクターの主観視点で、CGの家の中を歩き回って、観察することもできます(※開隆堂、東京書籍)。
自動車の免許をとるための教習所には、普通、自動車の運転シミュレーターがあります。初心者が自動車の事故を起こしては大変なので、最初の練習などとして運転シミュレーターが教習所ではよく使われている(東京書籍I)。
他にも、航空業界では飛行機のパイロット訓練用などのフライトシミュレーターがあります。これは、パソコンゲームの「フライトシミュレーター」とは全く(まったく)の別に、実際の航空機のコクピットを模した大型のフライトシミュレーターというものもあり、航空業界ではパイロットの訓練に用いられています(※第一学習社、数研)。
失敗してもパイロットの命が安全です(※第一学習社)。
※ あと、第一学習社は述べていませんが、飛行機はとても値段が高く、たとえば数億円~数十億円もしますので(※あまり値段をwiki著者がきちんと調べてない)、節約にもなります。たとえコクピットを模したシミュレーターに1億円くらいかかろうが、それでも実際の航空機の数十億円とかと比べたら安上がりです。
ほか、電車の運転士のための運転シミュレーターもあります(※数研)。
また、洪水などの災害予測でも、コンピュータを用いたシミュレーションが行われており、ハザードマップはこういったシミュレーションの成果で作られています(第一学習社)。
なお、気象の予測もシミュレーションです。気象の予測では、とても多くの要素を含んだ計算を行うため、大型のコンピュータ(スーパーコンピューター)が必要です(東京書籍I)。
自動車の空気抵抗の、コンピュータによるシミュレーションでも、スーパーコンピューターが一般には用いられます(※東京書籍I)。
「未来の人口予測」とか、ああいったのもシミュレーションです(日本文教出版I)。
道徳上、どうしても実物を使った実験ができないものもあり、そういう分野ではシミュレーションが問題の解明のためのヒントになります。
手術のシミュレータというのもあります(※ 数研、東京書籍 I )。なお、手術シミュレータは3D-CGを使う方式です(※ 数研)。
シミュレーションは、あくまで与えられた条件下での検証でしかないので、ほかの条件でも正しいとは限りません(※開隆堂)。よほど単純な現象をシミュレーションしている場合でもない限り、一般的にモデルは現実の一部しか反映していないため、得られるシミュレーション結果には誤差(ごさ)があります(数研出版)。
シミュレーションの誤差は何も科学技術や製造業などの分野だけでなく、たとえば衣料品の分野でも、マネキンに衣装を着せてみて問題なくても、実際に人間が袖を通すと途中で引っかかったりすることがあったりもします(※開隆堂)。
なので、シミュレーションをすべて正しいと考えることは危険です。
シミュレーションそのものを検証するための方法として、下記のような方法があります。
などです。
たとえば自動車会社では、まず形状などのデザインの設計時には粘土で実物大のモデルを作ったりします(※数研)。
また、強度の検証には、実際に、実物と同じ素材の車を作成し、それで衝突実験をします。
そうした実物大や実物での実験もしたうえで、並行・併行(※ともに「へいこう」と読む)して自動車会社ではコンピュータによる力学的な3Dシミュレーションも行っています(※開隆堂)。また、この強度シミュレーション用の自動車3Dモデルは、空気抵抗などを調べる空力シミュレーションにも転用されます(※東京書籍)。
前提として、自動車の3Dモデルを作る人が必要です。3D-CAD(スリーディー・キャド)と言われるソフトを使って、CADオペレーターなどと呼ばれる職種の人が、その3Dモデルを制作しています。
CADとは、Computer aided Design の略です。ここでいうDesign (デザイン)とは機械設計などの意味です。英語では設計もDesignです(美術的な意味がなくても英語では Design と言うこともあります)。
また、空気抵抗のシミュレーションのほかにも、精密な強度計算をする際も、事前に3D-CADでモデルを作る必要がある場合もあります(数研出版の傍注の図)。 (※ 有限要素法(FEM解析)っぽいシミュレーションの図だが、高校生には有限要素法は分かりっこないので詳細は省略。理系の大学の工学部の機械工学・土木工学の研究室くらいのレベルなので。理系大卒でも生物系とか情報系とか電気電子工学だと分からないレベルの難しさの内容。)
自動車会社は、開発費用を削減するためと、その上で製品の安全性や信頼性などを確保した設計をするため、実験に基づいた精度の高いシミュレーションを開発して活用しています(※数研)。

そのほか、借金が数年後に利息でどんだけ増えるかのような、数学の教科書の文章題にあるような問題も、シミュレーションと言えます(第一学習社)。コンピュータを使えば、対数関数表とか使わなくても表計算ソフトとかだけで計算できます。
モンテカルロ法とは、乱数をもちいて偶然性を再現して、それでシミュレーションを行うことです。コンピュータの乱数機能を用いて、モンテカルロ法のシミュレーションをできます。たとえばEXCELのRAND関数でもモンテカルロ法を出来る場合もあります(※実教出版)。歴史的には、コンピュータを使わなくても、サイコロや、トランプのシャッフルなどを使ってモンテカルロ法をしていた時代もありました(数研出版)。
一度だけの実験だと、片寄りがあるかもしれないので、モンテカルロ法では最低でも10回くらいは実験して、全体的な結果を分析します(実教I、数研、開隆堂)。
なお、数学の確立論の用語で「大数(たいすう)の法則」といって、おおむね「試行回数が多いほど、その確率予想の精度が良い」という感じの法則が知られています(詳しくは数学Aを調べてください)。モンテカルロ法で1回だけでなく何回も実験するのは、大数の法則を前提にしています。
・モンテカルロ法と円周率
実教出版と開隆堂の例ですが、モンテカルロ法を使って面積の近似値を求めることもできます。たとえば、90度の扇形の面積を実教Iは求めています。
「扇の範囲内の面積」:「扇の外の面積」 ∝ 「扇の範囲内に入る確率」;「扇の外に出る確率」
の関係を利用しています。なお、扇の内部か外かの判定は、ピタラスの定理を使った距離の計算で、できます。
この結果を用いて、円周率の近似値を求めることも、よく情報系の教育書では行われます。
VBAマクロ無しの表計算ソフトでも円周率のモンテカルロ法は可能ですが(実教がマクロ無し)、もしかしたらVBAマクロでプログラミングしたほうがラクかもしれません(開隆堂はマクロありで求めている)。
VBAの数値データを使う際、VBAのinteger(整数型、 -32768~32767) や Long (長整数、 -2147483648~2147483647)や Single(単精度浮動小数点数型) や Double(倍精度浮動小数点型) などのデータ型を勉強する必要があります。
たとえば、「変数 x を整数型で宣言したい」という場合は、
のように記述することになります。
他の言語だと、少数も整数も区別しないでも使える言語もありますが、しかしコンピュータでは小数は精度があまり良くないので、なので本来なら整数型と小数型を区別するのが、数値の精度の良い言語です。
たとえば、OSなどを作るのにつかわれるC言語でも、整数型と小数型とは区別しています。

モデルを数式で作る際、次数を増やしすぎたり、変数を増やしすぎたりすると、見当違いの結果が出やすくなることが知られており、これを過剰適合(かじょう てきごう、over fitting)やオーバーフィッティングなどと言います(東京書籍、日本文教出版の『情報II』)。