数理解析研究所講究録
第 1780 巻 2012 年 32-39

32

大学院授業における数学ソフトウェアの活用

藤井 利江子 (Rieko Fujii)
戸塚 英臣 (Hideomi Totsuka)
鈴木 潔光 (Kiyomitsu Suzuki)
College of Science and Technology,
Nihon University

日本大学・理工学部

1

はじめに

本稿では日本大学大学院理工学研究科物理学専攻で，筆者らが実践している “ 数理情報学特論” の講義内容の一部を紹介する．大学院教育はもちろん研究指導が主であるが，同時に多様化した大学院入学生の研究遂行にあたり，講義も重要な役割を担ってきている．ここで紹介する “ 数理情報学特論” の主な目的は数値計算法の修得である．従
来の数値計算法の講義は積分や微分方程式の数値解法の説明を行ったり，輪講したりするものが主であった．これらの講義は数値計算法を理解するうえで重要ではあるが，物理学を専攻する学生は，数値計算法を開発するよりむしろ利用したいという学生の方が多いのが現状である．また IT 機器の普及により，大学でも学生が 1 人 1 台のコンピュータを利用しながら講義を受講できるような環境が整ってきた．そこで筆者らは大学院授業においても 1 人 1 台のコンピュータを利用した実習形式での講義を行ってみることにした．

この講義は 2 つの目標をもって行っている．ひとつは毎回読み切りを目指すということである．大学院生は研究の関係上，外部研究機関で実験等を行っていることも多く，1 回欠席したために講義の流れが全くわからなくなるという事態を避けるのが目的である．そのためには論文等配布資料もエッセンスだけを切り抜き，1 回で内容が閉じるようにする等の工夫が必要になる．もうひとつの目標は，世の中にあるコンピュータソフト (道具) のうち，どれを利用するのが一番便利であるかを理解させることである．すなわち，以前の数値計算はほとんど Fortran 等のプログラミングを利用していたが，昨今は表計算ソフト数式処理ソフト等が出現し，プログラミングすることなく計算結果を得られるようになった．よって，これらのうちどの道具を利用すれば最も効率よく結果が得られるのかを見つけ出す能力を養うことが目的である．しかし，これらの便利なブラックボックス的ソフトも，数値計算法を理解しないで利用すると間違った結果を出す危険性がある．よってこれらの危険性もあわせて理解できるような工夫を行っている．
以下 2 章では本学で実施している学部における数値計算の講義の概要と大学院講義への接続について，3 章では偏微分方程式 (拡散方程式) について，4 章ではモンテカルロ法による積分について，5 章では本学でのコンピュータ導入の歴史について記述し，まとめを 6 章に記述する．

33
2

学部講義と大学院講義の接続 [1]

本学の数値計算に関する実習は，1 人 1 台のコンピュータを利用して，学部の 1 年次から 3 年次まで毎年設置されている．このうち 1 年次に設置されている講義は，表計算ソフト (Excel) と数式処理ソフト(Mathematica) を利用した高校教育の復習および導入教育である．内容としては，特に三角関数の物理学への応用に力を入れている．例えば $y=\sin x,$ $y=2\sin x,$振動数をそれぞれ$A,$$k,$$y=\sin 2x$$\omega$

等の簡単なグラフ描画から始まり，振幅・波数・角としたときの，波動を表す式 $y=A\sin(kx-\omega t)$ のアニメーションを行うことにより，グラフと各パラメータ変数との関係や，波の進む向きを理解させる教育実践を行っている (図 1). またニュートン法やカオス等，非線形性をもっ漸化式の収束等にも触れている．ただし上記はかなり難しい内容も含んでいるため，1年次での講義ではできるだけ定性的な理解を目指し，2 年次以降に定量的な理解ができ$@-$るような目標設定をしている．

日$\mathfrak{Q}u\backslash 7_{c^{\rangle}}’|-$

図 1: Mathematica による 1 次元波動のアニメーション．波の進む向き等を定性的に理解するのに有効である．

2 年次に設置されている講義は，Mathematica を利用した基礎数学の復習に関する講義である．本学では 2 年次でほぼ大学における基礎数学 (線形代数微分積分微分方
程式ベクトル解析複素解析・フーリエ解析等) を履修し終わるため，これらの復習を特にグラフィックを利用して行っている．例えばフーリエ級数では低周波から和をとる項数を増やすことにより元の関数に近づくわけであるが，このグラフを黒板に描くのは難しいため，Mathematica を利用して描画することにより，フーリエ級数の意味を理解させることを試みている (図 2). またベクトル解析では接平面の方程式等を計算させた後 Mathematica の 3 次元グラフにより描画させ，結果の正否を確かめさせている(図 3). これらの実践は黒板に描きにくいグラフをコンピュータにより描画することにより，理解を深めさせることを目的としている．また 3 年次のプログラミングの講義の準備として，ネットワーク関連の授業において JavaScript に関する実習も行っている．

34

図 2: Mathematica による $f(x)=x$ のフーリエ級数展開のグラフ．低周波から和をとる項を増やすと，元の関数に近づくことが読み取れる．

$(t4\{\{17)-$I(1.0

図 3: Mathematica による球面上の接平面のグラフ．グラフを描くことにより，手計算による計算結果が正しいかどうかを一目瞭然に判断できる．

35
3 年次に設置されている講義は，プログラミング (Fortran および 言語) である．それぞれ半期 15 週の講義であるため，ソフトの利用法および文法の説明が主になり，数値計算の詳細まで説明するのはかなり難しい．また学生にプログラミングをさせた場合，$C$

エラーを出さずに結果を出すことが主な目的になってしまい，数値計算法の理解にまではなかなか到達しないのが現状である．

これらの内容を履修した後に学生は大学院に入学してくるわけであるが，大学院の講義のはじめの数週間は学部時代に勉強してきた内容の復習を実践している．現在はニュートン法をテーマに，Excel を利用した解法，Mathematica を利用した解法，Fortran を利用した解法， 言語を利用した解法に加え，学部では扱っていなかった Excel VBA を利用した解法を扱っている．ニュートン法を扱ったのは，比較的アルゴリズムが簡単であることと，漸化式を扱うことにより，これも学部では扱っていなかった再帰呼び出しの説明がしやすいからである．講義では誤差論やオーバーフロー．アンダーフロー等の説明も行い，道具の利用法の復習を通じて，コンピュータやソフトの特徴も理解できるような工夫をしている．ニュートン法を利用してソフトの復習を終えた後は，偏微分方程式，モンテカルロ法，検索，補間，フーリエ解析，ランダムウォーク，量子力学の固有値問題等を様々なソフトを利用して解説しているが，本稿ではこのうち偏微分方程式とモンテカルロ法およびコンピュータ史に関する講義について記述する．
$C$

3

偏微分方程式に関する教育実践

偏微分方程式の解法は，数値計算を扱う研究者にとって 1 回は必ず勉強する内容であろう．そこで 1 回読み切りの講義で扱う内容として，方程式系が閉じている 1 次元拡散方程式$\partial u/\partial t=\kappa\partial^{2}u/\partial x^{2}$を扱っている．内容としては文献 [2] 等の内容をプリント 2 枚程度に切り抜き，方程式の離散化 (差分法). 打切り誤差・安定性等の説明をした後，どのようなソフトを利用して解けばよいかを考えさせている．文献 [2] には Fortran を利用した 100 行程度のプログラムが掲載されている．しかしこの 100 行もある Fortran のプログラムを入力して答えが出たとしても，グラフを描くのは別のソフトが必要になる
し，プログラムの中でどの部分が方程式を解いている本質で，安定性に寄与しているのかを探すのも大変である．そこで Fortran のプログラムを利用する代わりに，Excel とMathematica を利用して解を求めさせている．
図 4 に初期条件を $u(x, 0)=\sin x$ , 境界条件を $u(0, t)=u(\pi, t)=0$ とおき，Excel を利用した拡散方程式の差分解が不安定性をおこしている例を示す．空間 1 次元，時間 1次元程度の拡散方程式なら Excel のセルに式を入力し，セルをコピーするだけで簡単に解くことができ，さらにこの図のように不安定性を実感することができる．また図 5 には Mathematica を利用した解のグラフが示されている．Mathematica を利用すると，方程式の離散化や，安定性，誤差等を全く考慮せずに解のグラフを得ることができる．しかし Mathematica だけを利用して解を得て，それ以上何もしないのは数値計算の教育としてあまりよいとは思えない．数値計算には様々な解法があり，Mathematica がどのような方法で解いているのかをマニュアルから読ませたり，上記の安定性等の理解をさせたりすることも必要であろうと考える．しかし，2 3 行しかないこの Mathematica$\sim$

36の命令を，マニュアルを調べて自分で書くのは，慣れないと通常のプログラミングより難しいことを体験させられていることは，道具の使いこなしという意味での教育効果にはなっていると考えられる．

図 4: Excel による拡散方程式の解が不安定性をおこしているときのグラフ．セルをコピーするだけで解を得ることができ，差分方程式の解の不安定性を実感できる．

図 5: Mathematica による拡散方程式の解のグラフ．不安定性等は全く考慮せずに解を得ることができる．

4モンテカルロ法に関する教育実践

モンテカルロ法の講義は文献 [3] に基づいている．ここでもエッセンスをプリント 1枚程度に切り抜いて配布している．文献 [3] では Buffon の針の方法による の近似値を，Excel を利用して求めている．その方法は $-1\leq x\leq 1$ , $-1\leq y\leq 1$ の範囲で 2 つ$\pi$

37の乱数を発生させ，If 文によりその 2 つの乱数の 2 乗の和が 1 以下ならば 1, そうでなければ を記入するセルを作る．これはすなわち発生させた乱数が，単位円の中にあるかどうかを判定していることになる．これらを 1 セットにして 10000 セルほどセルのコピーを行い，2 つの乱数の 2 乗の和が 1 以下であるセルの合計値を計算し，あとは比例計算で 7’ の近似値を計算するというものである．講義では一通りこの作業をさせ，計算方法を理解させている．しかしこの方法は 10000 行ものコピーを伴ううえ，結果として利用するのは最後の合計値のみである．こういった単純な繰り返し計算はやはりプログラミングの方が便利である．講義では Excel VBA を利用し，テキストボックスに計算固数を指定することにより， の近似値を計算させている．また， の計算だけでは積分を行っているという感覚があまりおきないので，応用としてガウス積分$0$$\sqrt{x^{2}+y^{2}}\leq 1$$\pi$$)_{0}^{\infty}\exp(-x^{2})dx$$\pi$の近似値をモンテカルロ法で計算させている (図 6). ガウス積分は無限大までの積分であるから， 方向の積分範囲を有阪に定めなければならない．範囲を$x$どこまでにするかは誤差と関連するが，範囲をどのように決めるかに関しても $\exp(-x^{2})$がどの程度 O に近くなるかを判断して決めさせている．これも実習を含めた講義ならでは実践できる内容である．

図 6: Excel VBA によるモンテカルロ法を利用したガウス積分の近似計算のプログラム．

繰り返し誹算には VBA が有効であることを認識させている．

図 7: Mathematica によるモンテカルロ法のプログラム．命令は短いが，正しいプログラムを入力するのはかなり困難である．

Mathematica を利用したモンテカルロ法の計算もさせている (図 7). この命令もたっ38
た 2 行ではあるが，慣れないと入力するのは難しい．Mathematica は NIntegrate 命令で積分の近似値を簡単に計算できるが，数値積分も Mathematica のマニュアルにあるように，様々な方法があることを確認させている．

5

コンピュータ史に関する教育実践 [4]

本学に初めて大型計算機が導入されたのは昭和 34 年 (1959 年) のことであった．またこの計算機 $(Facoml28B)$ は富士通株式会社沼津工場内の池田記念館で現在も稼働している (図 8). 大学院の講義ではこの計算機に関しても若干触れている．この計算機はたたみ 40 畳ほどの大きさで，性能概略表によれば加減乗除の計算速度は O.1 秒程度，記憶容量は 80 語と記述されており，この計算機を利用すると 20 元連立方程式を解くのに約 1 時間かかる．このような昔の計算機を大学院の講義で紹介するのには以下のような理由がある．まずこの計算機を利用して，4 章で扱ったモンテカルロ法による の近似値の計算を行ったという記述が記載されていることである．また，ニュートン法ルンゲクッタ法等の計算例も同様に記載されている [5]. さらに国産最初の旅客機 YS-II の設計にも利用されたという記録も残っている [6]. すなわちメモリが数十しかない計算機でもそのような計算ができたわけである．また，数値計算の手法も現在とそれほど変わっているわけでもない．なんでもいいから大きな配列をとって計算するのではなく，工夫をしながら計算をすればそれほど性能の高いコンピュータでなくても様々な計算ができるということである．昨今はコンピュータに関してあまりにも贅沢になりすぎているので，効率のいい利用方法やソフトの選択の必要性を伝えるために，あえてこのような計算機を紹介している．
$\pi$

図 8: 昭和 34 年に本学に導入されたリレー式計算機 Facom $128B$社で稼働している．

. 現在も富士通株式会

396

まとめ

本稿では，本学で実践している実習を含んだ大学院授業に関する紹介を行った．コンピュータが高速かつ安価になり，便利なソフトが数多く出現した現在はそれを使える能力を身につけるべきであろうと思う．しかし，やはり数値計算の基本にも立ち返る必要があると考えている．例えばニュートン法で答えが得られても，“ ニュートン法は収束する値が初期値に依存している” という事実を知らないと，本当に求めたい解が得られているかどうかはわからない．また実際に研究で作成したプログラムの相談を受けると，副プログラムごとに配列を宣言し，メモリ不足になるようなプログラムを作成している学生も見られる．そこで，講義ではあえてマニュアルを読ませたり，昔の計算機の紹介をしたりしているわけである．ただ講義では例しか示すことができないため，いかに学生自身の研究の実践に役立てる教育ができるかが課題である．すなわち大学院の講義は試験を行っていないため，学生たちにどれくらい教育効果が上がったかどうかを測定する方法の検討も必要であると考えている．

参考文献[1] 藤井利江子，戸塚英臣，鈴木潔光 :Mathematica を活用した工学基礎数学の教育実
践，数式処理 Vol.17, $No.1$ (2010) PP 24.
[2] C. A. J. Flecher :(Springer-Verlag).

Computational Techniques for Fluid Dynamics Volume I,[3] S. C. Bloch and R. Dresser: Statistical estimation of rr using random vectors, Am.
J. Phys. Vol.67, No.4 (1999) pp.298.
[4] http: $//jp$ . fuj itsu. com/museum/ikeda/exhibition/facom $128b/$[5] Facom $128B$ による技術計算例[6] 宇野利雄 :Facom ニュース

(富士電算機計算所有隣電気株式会社)

昭和 39 年 11 月 25 日