解説 (大学における教育)♦♦♦♦♦♦解 説♦♦♦♦♦♦

Mathematica を利用した授業・演習
小田部 荘司1

1

はじめにMathematica はウルフラム社が開発している数式処理システムです．筆者は 1988 年ごろにバージョン

1 として Mathematica が登場している頃から使用しています．現在の MacOS X の元になる NeXTworkstation にバンドルされたソフトとして使い始めました．そのころでも reduce というキャラクターベースの数式処理システムはありました．それを使って式変形をしたり，積分や微分を行なうことができ，計算機では数値計算しか知らなかったので大変驚きました．しかし Mathematica はもっと驚きでした．
グラフィックベースですでに 3D 表示までできました．これを使いこなすことができれば，かなり研究に役立つだろうと大変興味を持ちました．
しかし実際に使ってみると，マニュアルの例は実行することができるけれども，かかえている問題はほとんど解くことができないということが分かってきました．やはり数学の得意な人間の方が機械的に解く Mathematica よりもずっとエレガントに解いていきます．
それでも，だんだん使えるようになってくると，いろいろと便利なところも出てきました．ほとんど一つのコマンドを使うだけでかなりのことを処理することができます．最初に問題のおおかたの答えを見つけたり方針を立てるのに Mathematica はかなり役に立ちます．
電子情報工学科で Mathematica を教え始めたのは 1996 年ころです．4 年生で研究室に配属になったときに，Mathematica が使えると便利だろうと考えたからです．3 年生が行なっている「電子情報工学実験」(通称は専門実験) で，数式処理，アニメーション作成を課題として実施しており，現在も発展させつつ実施しています．この実験を通じて分かったことをまとめて，1999 年に本として出版しました[1]．
その後，電子情報工学科 2 年生前期の「電磁気学 I・同演習」を受け持ったときに，Mathematica の美しいグラフィックを使って，電磁気現象の可視化をして，教材として利用し始めました．いろいろな電磁現象を可視化することができて大変好評です．
ここでは，Mathematica を利用した授業や演習についてまとめ，Mathematica を教育に使うことについて考えてみたいと思います．

1

情報工学部 電子情報工学科 助教授

otabe@cse.kyutech.ac.jp

23

九州工業大学 情報科学センター
広報 第 19 号 2007.1

解説 (大学における教育)

2

Mathematica の簡単な使い方と紹介

2.1

実行例

九州工業大学では 2003 年度よりサイトライセンスを取得しており，各キャンパスで利用することが可能となっています．情報科学センターの端末で適当なターミナルたとえば kterm を立ち上げて mathematicaというコマンドを入力すると Mathematica のウィンドウが立ち上がります．
******so% mathematica

また大学の備品であるコンピュータでも利用が可能です．Windows, MacOS X, Linux などで動かすことができます．
それでは図 1 に沿って実際に実行してみましょう．最初にある In[1] とか Out[1] というのは Mathematicaが自動的につける番号です．ですから，最初は “4300/35” を入力します．その後に Shift+Enter を押します．ただ単に Enter を入力すると画面上での改行になります．Shift+Enter により計算が始ります．
最初はカーネルが立ち上がるので若干時間がかかりますが，その後はスムーズになります．分数の計算をして表示しているのが分かります．
次の例では 4300.0/35.0 と入力しています．これは近似値の計算となるので，小数点で計算されています．
その次の N[Pi, 30] は円周率 π を 30 桁計算させて表示しています．N[] は組み込み関数です．組み込み関数は必ず大文字から始まります．ユーザー関数は小文字から始るようにすると組み込み関数と衝突しないのでいいです．N[] は一文字だけの関数名ですが，Mathematica では普通は関数名はかなり長いです．
次は三次元のグラフの表示を行なっています．f (x, y) = sin(x ∗ y) を x を 0 ∼ π ，y を 0 ∼ π の範囲で表示させています．Plot3D[] も Sin[] も組み込み関数であり，大文字から始っています．
最後の例は積分を行なっております．これはパレットを使って入力をしています．実際に数学の表記に近い表記により入力できます．

2.2

へルプ機能

Mathematica には強力なヘルプ機能があります．これを利用するとかなりの部分の Mathematica の機能を自主的に学ぶことができますし，またあとからも頻繁に参照します．
一番最初に読んだ方がいいのが，「10 分間のチュートリアル」でしょう．Mathematica を最初に立ち上げたときに図 2 のようなパレットが表示されているので，「10 分間のチュートリアル」をクリックしてチュートリアルを実行します．Mathematica の概要がわかるでしょう．
また図 3 に示す，Help Browser を使うと Mathematica のさまざまな情報を得ることができます．

九州工業大学 情報科学センター
広報 第 19 号 2007.1

24

解説 (大学における教育)

図 1: Mathematica による実行例

25

九州工業大学 情報科学センター
広報 第 19 号 2007.1

解説 (大学における教育)

図 2: 10 分間のチュートリアルの開始

図 3: Help Browser の例

九州工業大学 情報科学センター
広報 第 19 号 2007.1

26

解説 (大学における教育)3

電磁気学における Mathematica の利用
さて，Mathematica を授業で使っている例を示していきたいと思います．最初に電子情報工学科の「電磁気学 I・同演習」で使った例を示します．

3.1

点電荷の電気力線と等電位面の可視化

電磁気学は現代物理学の中でももっとも古くから成立しており，その理学的，工学的な重要性については改めて説明するまでもありません．歴史が古い分，扱われている式はひじょうに美しく抽象化された単純な形にまとめあげられています．人類が知り得た究極の知と言えるかも知れません．
しかし電磁気学を学ぶものにとっては，美しく抽象化された式は具体的なイメージを想像することが困難です．とくにベクトル解析をふんだんにつかう電磁気は大変です．電子情報工学科では「電磁気学 I・同演習」として電磁気学を学びますが，多くの学生が苦労しています．そこで，式を具体的な形で可視化することを思いつきました．以前であればコンピュータグラフィックスを使ったでしょうが，Mathematica ではさまざまなグラフィックスの表現方法をもっていますので，それを利用します．
図 4 にこれまでの教科書でよく載っている，原点にある点電荷により発生する電界と等電位線の様子を示します．電荷の周りには電界が発生し，放射状に電気力線が伸ています．また電位が一定であるところを結ぶと等電位線が引けます．この電気力線と等電位線はどこでも垂直に交わっています．
これを Mathematica の 3D 表示を利用すれば図 5 のように表示させることが可能です．本来はこのような図を教科書に載せるべきなのですが，三次元での表示は難しいので簡便な二次元の表示の図が載せられているというのが実情です．二次元の図 4 は三次元の図 5 の z = 0 での面で切った断面を覗き込んだ形になっています．つまり等電位面は等電位線になってしまいます．
また電位を表示するのに図 6 のような図もよく教科書で見かけます．原点にある点電荷による電位は原点で発散するのでいかにも分かりやすそうですが，これは球の形をした図 5 の等電位面とは異なります．

Mathematica では三次元表示が簡単にできるのでこれまで描けなかった図を手軽に得ることができ，したがって電磁気現象の可視化にはもってこいと言えます．

3.2

他の電磁気問題の可視化の例

他の例についても示しましょう．図 7 は線電荷の例です．z 軸に沿って線上に分布した線電荷のまわりに電界が発生します．また等電位面を考えることができます．点電荷では同心の球であった等電位面は，線電荷の場合には同軸の円筒となりいくつも考えることができます．
また図 8 には同じ電荷量を持つ，正と負の電荷のまわりの電気力線の様子を示します．これも三次元で表示をすると，これまで二次元の図だったイメージが大きく変ることと思います．

27

九州工業大学 情報科学センター
広報 第 19 号 2007.1

解説 (大学における教育)

32
10-1-2-3-3-2-10123

図 4: 原点にある点電荷により発生する電界と等電位線の様子．

図 5: 原点にある点電荷により発生する電界と等電位面の三次元表示の例．

1.52110.5-220-1-1012 -2

図 6: 原点にある点電荷による電位を説明する方法としてよく用いられる図の例．原点では電位は発散するので省略されている．

九州工業大学 情報科学センター
広報 第 19 号 2007.128

解説 (大学における教育)

図 7: z 軸に沿って線上に分布した線電荷による電界および等電位面の様子．等電位面は円筒状にいくつも存在する．

図 8: 電荷の絶対値が等しい正と負の電荷のまわりの電気力線の様子．正電荷から電気力線が始り，負電荷に吸い込まれている様子が分かる．

3.3

アニメーションを利用した電磁気問題の可視化の例

最後に，アニメーションをプログラムつきで紹介します．二つの正電荷があり，その等電位面が距離が変ったときにどのように変化するかをアニメーションにします．時刻 t = 0 では原点に二つの正電荷がありますが，時刻とともに二つの正電荷の距離は離れていきます．プログラムは次のようになっております．

<< Graphics‘Animation‘;<< Graphics‘ContourPlot3D‘;

Animate[ContourPlot3D[
If[((x + t)^2 + y^2 + z^2) == 0 || ((x - t)^2 + y^2 + z^2) == 0, 0,29

九州工業大学 情報科学センター
広報 第 19 号 2007.1

解説 (大学における教育)

1/((x + t)^2 + y^2 + z^2)^(1/2) +1/((x - t)^2 + y^2 + z^2)^(1/2)], {x, -5, 5}, {y, -2, 2}, {z, -2, 2},Contours -> {1.5}, PlotRange -> {{-5, 5}, {-2, 2}, {-2, 2}},PlotPoints -> {7, 5}], {t, 0.1, 2, 0.1}]
最初の 2 行はパッケージを読むためのコマンドです．その次に表示のプログラムが書かれています．

Mathematica ではパラパラ漫画のように少しずつ違う図を作画してそれを連続で表示させることにより，アニメーションを楽しむことができます．

Animate[] はアニメーションをするコマンドであり，ここでは t を 0.1 から 2 まで 0.1 刻みで変化させています．CountourPlot3D[] は等電位面を表示させるコマンドであり，ここでは 1.5 の値を取る等電位面を表示することとなっています．表示している関数は座標 (t, 0, 0) と座標 (−t, 0, 0) に正の電荷を置いたときの電位 φ(x, y, z) であり次のようになります．

φ=Q
4π0 ((x − t)2 + y 2 + z 2 )1/2+Q
4π0 ((x + t)2 + y 2 + z 2 )1/2(1)

ここで，計算を簡単にするために Q/4π0 = 1 としています．If[] 文を使っているのは電荷の中心で電位が発散するのを防ぐためです．

図 9: 二つの正電荷が離れていくときの等電位面の変化の様子をアニメーションで示した一場面のグラフィックス
図 9 にアニメーションの一場面を示します．初めは球形だった等電位面は，回転楕円体となり，さらにこの図に示すようなピーナッツ型に変化して，最後にはちぎれて二つの球になります．
プログラムを入力して Shift+Enter を行なったら，表示された図のどれでも構わないのでダブルクリックします．するとアニメーションがスタートします．ウィンドウの左下にはアニメーションのコントロールをするボタンが現れますので，再生方向や速度を変えたりすることができます．是非，実際に試してみて楽しんでください．
ここで紹介した例も含めてプログラムはホームページで公開しています [2]．

九州工業大学 情報科学センター
広報 第 19 号 2007.130

解説 (大学における教育)4演習による Mathematica の修得

4.1

演習内容

電子情報工学科の「電子情報工学実験」(通称は専門実験) ではいくつもの専門実験がありますが，その中に Mathematica の演習を取り上げています．本来であればコンピュータ言語なので，講義と演習により修得するコースを作るべきですが，短い時間で効率よく学ぶために，3 から 4 週間ほどの実験の時間を利用して演習を行なっています．最初の頃は 1 コマほど講義をしていましたが，指導書のテキストを強化し，教科書を準備することでほぼ独学で学ぶことができるようになりました．
課題は次のようになっています．

• 数式処理• 実験データの処理• 電磁気問題の可視化• アニメーション
数式処理ではたとえば f (x) = sin(x) + exp(x) + x2 のような関数を与え，これについてグラフを描いた
り，微積分を行なったりします．
実験データの処理では，ばねに吊下がったおもりの運動を記録した実験データを与え，これについて理論式に近似させて振幅，周期，速度や加速度を求めることを行ないます．
電磁気問題の可視化は，前の節で取り上げたような例を示しておき，適当な電磁気問題の可視化をおこないます．
さらにアニメーションの課題があります．これは Mathematica のアニメーション機能を用いたオリジナルのアニメーションを作ることになっています．ここではこのアニメーションの課題について紹介することにしましょう．

4.2

アニメーションの例

アニメーションを Mathematica で行なうためには，Mathematica のことをかなり理解する必要があります．そのために試行錯誤を繰り返すことになります．しかしいったん理解するといろいろなことができることがわかるので，かなり凝ったアニメーションを作ることができます．
またアニメーションを実行するためには，ユーザー関数やプログラミングを理解する必要があります．
これまで C 言語に代表されるプログラミングをすでやってきており，Mathematica でのプログラミン
グについては基礎部分は同じですから，それほどの障害はないようです．しかし独特の表現方法はあるので，アニメーションを作るにあたってそれらを自動的に修得することになります．
課題としてアニメーションを設定したときには，物理問題のアニメーション化を想定しておりました．
たとえば，放物運動などです．最初の打ち上げの角度を変えるといろいろと違う結果をアニメーションで見られるというものです．ところが，学生さんの発想は豊かで，実にさまざまな楽しいものを見させてもらいました．また JABEE では，デザイン能力の涵養を要求しています．ここでデザイン能力というのはさまざまな分野の知識を統合して，一つの作品としてまとめあげる力のことです．いわゆる工業デザインとかではありません．アニメーションの課題はまさにこのデザイン能力を試しています．これ31

九州工業大学 情報科学センター
広報 第 19 号 2007.1

解説 (大学における教育)

図 10: アニメーションの一場面の例
までのいろいろな科目で学んできた知識を総動員して，Mathematica のアニメーションという形にまとめあげます．
図 10 にはアニメーションの例を 2 つあげました．上の絵は水面に落ちる雨垂れが消えていく様子が描かれています．落ちる位置はランダムで決められています．物理的には完全には正しくは無いのですが，波の重ね合わせや，拡散，減衰などをうまく式にして雨垂れの様子を表現しています．この例ではかなり物理と数学ができないと，このようなアニメーションを実現することは困難でしょう．
下の絵は車が何台も走っていきますが，プログラムが工夫されていて，コンパクトにまとめられています．しかもストーリーが込められています．
これらのアニメーションを含めて良かった作品をホームページにまとめています [3]．

九州工業大学 情報科学センター
広報 第 19 号 2007.1

32

解説 (大学における教育)

5

まとめMathematica を利用した授業の資料や演習について簡単に紹介いたしました．Mathematica は π を10000 桁計算したり，因数分解，微積分の計算など記号計算をするだけではなく，二次元グラフィックスや三次元グラフィックスを描くことができ，さらにアニメーションにすることができます．実際にアニメーションを作ることにより，Mathematica の理解がかなり深まり，自分がやりたいことを Mathematicaを通じて実行させることができるようになります．この記事がきっかけで，Mathematica を利用して研究を行なったり，教育に生かすことができるきっかけになれば幸いです．

参考文献[1] 小田部荘司: 「工学系のための Mathematica 入門」科学技術出版 1999 年，オフセット版は九工大
生協にて 1000 円で購入できる．

[2] http://aquarius10.cse.kyutech.ac.jp/∼otabe/denjiki/[3] http://aquarius10.cse.kyutech.ac.jp/∼otabe/mathematica/

33

九州工業大学 情報科学センター
広報 第 19 号 2007.1