数学に戻る  Mathematica講座2

Mathematicaによる2,3次元探求

【復習】
このテキストだけでもMathematicaの入門になるが、前回の基礎編を最初に読んでおくと理解がさらに深まる。
Mathematicaの起動はwindowsのスタートボタンをクリックし、Mathematica3.0を選択さらにその中のMathematica3.0のアイコンをクリックする。終了は右上の×印をクリックする。

Mathematicaは 命令[ 式 、オプション ]という基本的なコマンドの形式をとった。命令の先頭の1文字は必ず大文字、式やオプションなどが複数あるときは{ }で囲み 、 で区切る。Enter(リターンキー)を押すと改行するがShift+Enterキーで命令を実行する。バージョン3.0からは詳しいヘルプ(英語だが..)があるのでわからない時はツールバーのHelpをクリックしよう。サンプルプログラムも豊富にあるので探索するだけでおもしろいぞ。

3×4 は 3 4 と表す 空白でかけ算
3÷2 は 3/2 と表す /でわり算
[Graphics:Images/3DBASE_gr_1.gif]は   は 3^2 と表す ^で累乗

*ただし式の入力は必ず半角英数文字を使用する。
 バージョン3.0からは入力のパレットが使用できる。式や文字、記号などはこのパレットのボタンを押せばすむ。
 パレットの表示はメニューバー(画面上部)のFileをクリックし、Palettsを選択すればよい。
*間違えた文字はキーボードのBackSpaceやDeleteを押すと消えるマウスでドラッグしてDeleteでいっきに消してもよい
 表示文字の右端に縦長の ]が表示されるがこの部分をマウスで選択してDeleteしてもいっきに消える。
 操作の取り消しはメニューバーのEditをクリックしてUndoを選択すると可能である。コピーやペーストも使える

【挑戦】をところどころに配した。是非チャレンジしてみて欲しい。解答例は巻末にある。

Show[Graphics3D[ 図形、オプション] ]

Point[{ x、y、z }]      座標(x、y、z)に点を打つ。
Cuboid[{ x、y、z }]   座標(x、y、z)に高さ1の立方体を配置する。
Polygon[{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},....}]   各座標を結ぶ多角形を作る。

3次元は一般にX、Y、Zの3つの座標により表される。しかし、その様子をディスプレイや紙面に表現するには2次元で表す工夫が必要だ。もっとも単純なShowとGraphics3Dの組み合わせで立体的な絵、図形を描こう。
まずPoint[{x,y,z}]でその様子を見てみよう。
次のように(x、y、z)の座標に点が打たれた。また描かれた絵の部分をクリックすると拡大縮小、他のソフトへのコピーなどが可能である。

[Graphics:Images/3DBASE_gr_2.gif]

[Graphics:Images/3DBASE_gr_3.gif]

この点が見にくいという方のためにMathematicaは豊富なオプションを備えている。サイズの変更はPointSizeを次のように指定する。{}で囲むことも忘れないように。

[Graphics:Images/3DBASE_gr_4.gif]

[Graphics:Images/3DBASE_gr_5.gif]

ついでに色もつけてみよう。Point文は次のようにRGBColor[赤、緑、青]関数を付けて色をつけられる。赤、緑、青それぞれ0から1までの数値で混合できる。

[Graphics:Images/3DBASE_gr_6.gif]

[Graphics:Images/3DBASE_gr_7.gif]

数値で色をつけるのはどんな色か想像できないとお嘆きの方は入力アシスト機能を利用する手がある。
まず、この機能を使うにはあらかじめRGB関数を書く位置にカーソルを持って行っておく。その後ツールバーのメニューの中からInputをクリックしColorSelectorを選択する。すると色パレットが登場するので好きな色をダブルクリックして色の追加ボタンを押すとカーソルの位置にRGB関数が挿入される。

点ではあじけないので他の図形を使おう、立方体、ポリゴン、直線、円盤などが使える。
手始めに立方体を3個配置する。Cuboid[{x,y,z}]はPointと全く同じように使える。

[Graphics:Images/3DBASE_gr_8.gif]

[Graphics:Images/3DBASE_gr_9.gif]

【挑戦1】では、ここではじめての問題 下の図のように立方体を8個の頂点と真ん中に配置してみよ。これは体心立方と呼ばれる原子の配列だ

[Graphics:Images/3DBASE_gr_10.gif]

次にPolygon[{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},....}]も試してみよう。これは各点を結ぶ多角形ができる。

[Graphics:Images/3DBASE_gr_11.gif]

[Graphics:Images/3DBASE_gr_12.gif]

いろいろ自分で数値を変えて遊んでみるといい。点が3つの三角形なら確実に平面ができるけど4点以上だと平面ににするには...。
右端にセルを表す長い  ]  が何重か現れているだろう。ここにマウスを近づけるとマウスの形が |← になる。この時クリックで選択できる(複数選択するときはドッラグする)とコピーしたり削除したりがセル単位で可能だから失敗しても大丈夫。まちがった命令をすると警告音と共にエラーメッセージが出る。この場合は再び In[ ]:=
と書かれた所にもどりエラーを修正して再びShift+Enterで実行させよう。そう簡単には壊れないのでいろいろ試そう。

さて、少しなれたところでたくさんの点をランダムに打つ技を伝授しよう。

Table[{ xxx },{ i ,n}]   xxxをn回繰り返すリストを作る
Random[ Real, { 0 ,n } ] 0からnまでの実数(小数 0.235...)をランダムで発生
Random[ Integer, { 0 ,n } ] 0からnまでの整数(1,2,3...)をランダムで発生

これらを組み合わせて色々な三角形を空間に配置しよう。
まずTableを使って{{x1、y1、z1}、{x2、y2、z2}、{x3、y3、z3}}の3つの点の組を好きなだけ作ってみよう、例えば5組作りたいときは次のようにする。

[Graphics:Images/3DBASE_gr_13.gif]
[Graphics:Images/3DBASE_gr_14.gif]

次にRandomを使って0から1、0から10の間の数をランダムに発生させる。

[Graphics:Images/3DBASE_gr_15.gif]
[Graphics:Images/3DBASE_gr_16.gif]
[Graphics:Images/3DBASE_gr_17.gif]

さあ、ではこのTableとRondomを色とPolygonに応用してみる。
まずPtという変数に10組のリストを代入してみるClear[Pt]という文はここではなくてもよいが同じ変数に異なる値や式を代入したいときにはClearを使って初期化する。
同じ文を何回も書くときにはメニューバーのEditの中にあるコピーとペーストを効率よく使おう。マウスの右クリックでも可能だぞ。

[Graphics:Images/3DBASE_gr_18.gif]
[Graphics:Images/3DBASE_gr_19.gif]

もちろん最後のiの隣の10を変えれば何組でもリストを作れる。
そこでこのPtをShow[Graphics3D[]]の中に入れて実行してみよう。上のように出力が多くなり邪魔なときは命令文の最後に;をつけることで画面出力がされなくなる。

[Graphics:Images/3DBASE_gr_20.gif]

[Graphics:Images/3DBASE_gr_21.gif]

[Graphics:Images/3DBASE_gr_22.gif]

せっかく複雑な空間図形ができたので視点をかえて裏側から見てみたい欲望も湧く。こういう時はViewPointオプションを使う。先の命令Show[Graphics3D[Pt]]のtの隣にカンマ、を打ちカーソルを持っていく。
そしてメニューバーのInputをクリックして3DviewPointSelectorを選択してみたい角度にドラッグして決める。角度を決めたらPasteボタンを押そう

[Graphics:Images/3DBASE_gr_23.gif]

[Graphics:Images/3DBASE_gr_24.gif]

[Graphics:Images/3DBASE_gr_25.gif]

Do[{ xxx },{ i ,n}]   xxxをn回繰り返して実行する。

だめ押しはアニメーションに挑戦しよう。
まず次のようにDoを使って少しずらした視点から見た図形を作成する。ViewPointのオプションの中に i が変数として入っていることに注意しよう。これにより i が1づつ増えれば視点がずれていくわけだ。
下の例では8回作画している。

[Graphics:Images/3DBASE_gr_26.gif]

[Graphics:Images/3DBASE_gr_27.gif]

[Graphics:Images/3DBASE_gr_28.gif]

[Graphics:Images/3DBASE_gr_29.gif]

[Graphics:Images/3DBASE_gr_30.gif]

[Graphics:Images/3DBASE_gr_31.gif]

[Graphics:Images/3DBASE_gr_32.gif]

[Graphics:Images/3DBASE_gr_33.gif]

[Graphics:Images/3DBASE_gr_34.gif]

では次にできた8個の図形の右端の ] を全てドラッグして反転させるか全ての図形を囲んでいる ]をマウスでクリックする。この状態でメニューバーのCellをクリックしてAnimateSelectedGraphicsを選択するとアニメーションが開始する。終了したいときは適当なところをクリックすればよい。

さあここまでで遊びながらかなりの3Dの技を覚えただろう。Show[Graphics3D[]]コマンドはMathematicaの中ではまだまだお遊びである。次にいよいよ関数を利用して3次元、2次元の世界を探求する。

Plot3D[f(x,y),{x,xのはじめの値x,xの終わりの値},{y,yのはじめの値,yの終わりの値}]

3次元は先に見たようにx、y、zの3つの座標が決まればよい。そこでこのPlot3Dはx、とyの2つの変数を含む式からzの値がでるようにすればよい。
たとえば

[Graphics:Images/3DBASE_gr_35.gif]
[Graphics:Images/3DBASE_gr_36.gif]

これはx軸の値の2乗とy軸の値の2乗がz軸の値になるということである。想像できるかな?
ではPlot3Dを使ってみよう。

[Graphics:Images/3DBASE_gr_37.gif]

[Graphics:Images/3DBASE_gr_38.gif]

[Graphics:Images/3DBASE_gr_39.gif]

見方によっては風に吹かれた風呂敷である。風の向きを反対にしたい時は次のようでよい。

[Graphics:Images/3DBASE_gr_40.gif]

[Graphics:Images/3DBASE_gr_41.gif]

[Graphics:Images/3DBASE_gr_42.gif]

では自分でいろいろな関数を作って試してみよう。
例えば富士山型を作るにはどうしたらよいか。
xy平面での距離は x^2 + y^2 の平方根だから、これをうまく使うと距離と共に変化する図形ができる。

[Graphics:Images/3DBASE_gr_43.gif]
[Graphics:Images/3DBASE_gr_44.gif]

[Graphics:Images/3DBASE_gr_45.gif]

[Graphics:Images/3DBASE_gr_46.gif]

Plot[ f(x),{x,xのはじめの値,xの終わりの値}]  2次元のf(x)のグラフを描く

次に山型と波型を作る基本になるSin[x],とExp[x]を紹介しよう。
まずは理解しやすい2次元のグラフを描いてみる
に三角関数などを使うときには円周率定数 Pi を使用すると便利だ、例えばπを100桁まで求めるのは次ぎのようにする。ただし、右にパレットがある場合はπをクリックしてもいいしEscキー pi Escキーと半角で入力するとπが表示される。Escキーを用いた省略入力は他のほとんどの数学記号が入力できる(積分記号、ルート、分数...)ので数式エディタとしても利用できる。

[Graphics:Images/3DBASE_gr_47.gif]
[Graphics:Images/3DBASE_gr_48.gif]
[Graphics:Images/3DBASE_gr_49.gif]

[Graphics:Images/3DBASE_gr_50.gif]

[Graphics:Images/3DBASE_gr_51.gif]

[Graphics:Images/3DBASE_gr_52.gif]

[Graphics:Images/3DBASE_gr_53.gif]

[Graphics:Images/3DBASE_gr_54.gif]

[Graphics:Images/3DBASE_gr_55.gif]

これらがサインカーブ、コサインカーブ、そして指数関数の基本イメージだ。
ではサインカーブをちょいといじってみよう。

[Graphics:Images/3DBASE_gr_56.gif]

[Graphics:Images/3DBASE_gr_57.gif]

[Graphics:Images/3DBASE_gr_58.gif]

[Graphics:Images/3DBASE_gr_59.gif]

[Graphics:Images/3DBASE_gr_60.gif]

では指数関数もちょいといじると

[Graphics:Images/3DBASE_gr_61.gif]

[Graphics:Images/3DBASE_gr_62.gif]

[Graphics:Images/3DBASE_gr_63.gif]

山と波の基本形がわかったところで3次元に応用してみよう

[Graphics:Images/3DBASE_gr_64.gif]
[Graphics:Images/3DBASE_gr_65.gif]

[Graphics:Images/3DBASE_gr_66.gif]

[Graphics:Images/3DBASE_gr_67.gif]

ここではPlotPoints->30というオプションをつけてみたこれはより細かく絵を描かせる時に使用する。
ただしその分処理に時間がかかったり、メモリを多く消費することになる。最大でも50程度にしておこう。

[Graphics:Images/3DBASE_gr_68.gif]
[Graphics:Images/3DBASE_gr_69.gif]

[Graphics:Images/3DBASE_gr_70.gif]

[Graphics:Images/3DBASE_gr_71.gif]

さらに1つ前のコマンドを再び描画するときはShow[%]を使う。つまり%は1つ前のコマンドあらわす、先に描いた図に少し修正をして描きなおしたいときに便利なコマンドだから覚えておこう。
そこで上の絵から余分な線を消すには次のようなオプションをつけて再描画してみよう。

[Graphics:Images/3DBASE_gr_72.gif]

[Graphics:Images/3DBASE_gr_73.gif]

[Graphics:Images/3DBASE_gr_74.gif]

さらに描画範囲を指定するオプションPlotRangeも覚えると図形の断面が観察できるぞ。PlotRangeはz座標の範囲を制限できる。
Doコマンドと併用するとおもしろいアニメーションもできそうだね。

[Graphics:Images/3DBASE_gr_75.gif]

[Graphics:Images/3DBASE_gr_76.gif]

[Graphics:Images/3DBASE_gr_77.gif]

[Graphics:Images/3DBASE_gr_78.gif]

[Graphics:Images/3DBASE_gr_79.gif]

[Graphics:Images/3DBASE_gr_80.gif]

[Graphics:Images/3DBASE_gr_81.gif]

【挑戦2】では、下の図のようにx方向から見ると下に凸、y方向から見ると上に凸の馬の鞍型の図形を描いてみよ。

[Graphics:Images/3DBASE_gr_82.gif]

[Graphics:Images/3DBASE_gr_83.gif]

ParametricPlot3D[{x座標のtの値,y座標のtの値,z座標のtの値},{t,tの初めの値,tの終わりの値}]

Plot3Dはxとyの関数からzの値を出して3次元の図形を描いた。3次元はx、y、zの座標の値が決まればよい。ただしそれぞれの値が連続的に変化することが必要だ。そこで3次元の図形を表現する方法としてもう一つの雄ParametricPlot3Dを紹介しよう。

x、y、zの値を全て同じ変数例えばtで表してこのtの値を連続的に変化させればどうなるか。これをParametricPlot3Dが可能にするのだ例えばxはt、yは2t、zは3tでtを0から10まで変化させると

[Graphics:Images/3DBASE_gr_84.gif]

[Graphics:Images/3DBASE_gr_85.gif]

[Graphics:Images/3DBASE_gr_86.gif]

3次元の直線が引けた。これはx、y、zが全てtの1次式のためどの方向も変化の割合が一定だからである。
そこで次のように入力すると。

[Graphics:Images/3DBASE_gr_87.gif]

[Graphics:Images/3DBASE_gr_88.gif]

[Graphics:Images/3DBASE_gr_89.gif]

予想通り曲線が書けた。ボールの落ちていく軌跡によく似ているね。
このように自分の頭で予想しながらMathematicaを使うと世界が広がってくるぞ。

【挑戦3】ではここで問題。下の図のように上から見ると円、横から見るとサインカーブ(波)になるように式を考えて欲しい。

[Graphics:Images/3DBASE_gr_90.gif]

[Graphics:Images/3DBASE_gr_91.gif]

さてParametricPlot3Dは文字数が多くどうしてもキーボードから入力するのはつらい人はここでパレットを使ってみよう。
メニューバーのFileをクリックしてPalettesを選択する。さらにその中の2BasicCalculationsをクリックする。パレットが開いたら一番下のGraphicsの左端の△をクリックするとボタンが出てくるので後は押すだけである。

ParametricPlotもPlotと同じように2次元がかける。例えばx軸はサイン、y軸はコサインで変化させたらどんな図形が描けるか。

[Graphics:Images/3DBASE_gr_92.gif]

[Graphics:Images/3DBASE_gr_93.gif]

[Graphics:Images/3DBASE_gr_94.gif]

円ができた。えっ楕円だって?縦横の座標軸の比を同じにするには次のオプションをつければよい。

[Graphics:Images/3DBASE_gr_95.gif]

[Graphics:Images/3DBASE_gr_96.gif]

[Graphics:Images/3DBASE_gr_97.gif]

ここまでは連続した線であった。次は曲面に挑もう。どうしたら線から面になるか、それは変数をtだけでなくもう一つsを加えてみる。

[Graphics:Images/3DBASE_gr_98.gif]

[Graphics:Images/3DBASE_gr_99.gif]

[Graphics:Images/3DBASE_gr_100.gif]

[Graphics:Images/3DBASE_gr_101.gif]

[Graphics:Images/3DBASE_gr_102.gif]

単純な平面ができあがったね。ではtとsを色々な関数で書き換えてParametricPlot3Dの世界を探求しよう

先にも言ったようにまず、想像すること。先の円を基本にして3次元を作ると

[Graphics:Images/3DBASE_gr_103.gif]

[Graphics:Images/3DBASE_gr_104.gif]

[Graphics:Images/3DBASE_gr_105.gif]

さらに1番目と2番目の成分をちょいと複雑な三角関数の式にしよう。

[Graphics:Images/3DBASE_gr_106.gif]

[Graphics:Images/3DBASE_gr_107.gif]

[Graphics:Images/3DBASE_gr_108.gif]

残っていた3番目の成分も2tから三角関数を使ったものに変えると。

[Graphics:Images/3DBASE_gr_109.gif]

[Graphics:Images/3DBASE_gr_110.gif]

[Graphics:Images/3DBASE_gr_111.gif]

ドーナッツができたね、では先にも出てきたPlotRangeオプションを使って中身を見よう。ParametricPlot3Dは3つのどの方向にもこのオプションが効くので解剖するには便利だぞ。

[Graphics:Images/3DBASE_gr_112.gif]

[Graphics:Images/3DBASE_gr_113.gif]

[Graphics:Images/3DBASE_gr_114.gif]

[Graphics:Images/3DBASE_gr_115.gif]

[Graphics:Images/3DBASE_gr_116.gif]

【挑戦4】では、下の図のようにParametricPlot3Dを使って球描いてみよ。

[Graphics:Images/3DBASE_gr_117.gif]

[Graphics:Images/3DBASE_gr_118.gif]

直線の式

だいぶ空間図形に慣れてきただろうか、きれいなグラフィックスに感動していないで自由に空間を操るためにさらに次のステップにいこう。

空間で迷子になったらどうするか?自分の家や恋人の家に行くためには今の自分の場所とどっちに行くかの方向を教えればよい。そこである点を通ってある方向を表す直線を自由に表すことができるようにしよう。

ある点Aは座標(x、y、z)であらわせばよい。向きはどうしたらよいかというと原点(0、0、0)からある点、例えば(1、1、1)の方向とうふうに原点を基準にして決めてやればよい。

ではさっそくA(5、5、5)を通ってP(1、1、1)の方向の直線L1を書いてみよう。
まずL1の式を求めると

[Graphics:Images/3DBASE_gr_119.gif]
[Graphics:Images/3DBASE_gr_120.gif]

これでParametricPlot3Dに代入すべきリストが得られた。次にこのOutの結果をコピーしてParametricPlot3Dに入れる
マウスで{5+t,5+t,5+t}をドラッグして反転し右ボタンでCopyを選ぼう。次にParametricPlot3D[≠ノカーソルを持っていって右ボタンのPasteを選ぶ

複数の式を書くときはEnterキーで改行して最後にSHIFT+Enterで実行させる。
式の内容を実行した時に表示したくない時にはその式の終わりに ; をつければよい。

本当にA(5、5、5)を通っているかPointで球を置いて確認してみよう。

[Graphics:Images/3DBASE_gr_121.gif]

[Graphics:Images/3DBASE_gr_122.gif]

[Graphics:Images/3DBASE_gr_123.gif]

[Graphics:Images/3DBASE_gr_124.gif]

[Graphics:Images/3DBASE_gr_125.gif]

みごとに目標の点を貫いているね。これである点Aを通ってP方向を通る直線は
 L=A+Pt でいいことがわかった。Pのように3つの成分で向きを表すことができる量をベクトルというんだよ。
コンピューターというやつはいったんパターンさえ見つけてやればあとはどんなふううにでも応用できる。人間のように計算がめんどくさいなんて言わないから同じ点をいくつも貫く直線、異なる点を通るけど全て平行な直線を描いてみよう。
まずは同じ点を通る場合

[Graphics:Images/3DBASE_gr_126.gif]
[Graphics:Images/3DBASE_gr_127.gif]
[Graphics:Images/3DBASE_gr_128.gif]
[Graphics:Images/3DBASE_gr_129.gif]
[Graphics:Images/3DBASE_gr_130.gif]

[Graphics:Images/3DBASE_gr_131.gif]

[Graphics:Images/3DBASE_gr_132.gif]

[Graphics:Images/3DBASE_gr_133.gif]

[Graphics:Images/3DBASE_gr_134.gif]

[Graphics:Images/3DBASE_gr_135.gif]

[Graphics:Images/3DBASE_gr_136.gif]

[Graphics:Images/3DBASE_gr_137.gif]

[Graphics:Images/3DBASE_gr_138.gif]

[Graphics:Images/3DBASE_gr_139.gif]

次に異なる点を通り、全て平行な直線

[Graphics:Images/3DBASE_gr_140.gif]
[Graphics:Images/3DBASE_gr_141.gif]
[Graphics:Images/3DBASE_gr_142.gif]
[Graphics:Images/3DBASE_gr_143.gif]
[Graphics:Images/3DBASE_gr_144.gif]

[Graphics:Images/3DBASE_gr_145.gif]

[Graphics:Images/3DBASE_gr_146.gif]

[Graphics:Images/3DBASE_gr_147.gif]

[Graphics:Images/3DBASE_gr_148.gif]

[Graphics:Images/3DBASE_gr_149.gif]

[Graphics:Images/3DBASE_gr_150.gif]

[Graphics:Images/3DBASE_gr_151.gif]

[Graphics:Images/3DBASE_gr_152.gif]

平行な直線はPの値を変えなければいいことがわかった。ということはPの値を変えれば直線は平行でなくなるということだ。では次のP1とP2について試してみよう。

[Graphics:Images/3DBASE_gr_153.gif]
[Graphics:Images/3DBASE_gr_154.gif]
[Graphics:Images/3DBASE_gr_155.gif]
[Graphics:Images/3DBASE_gr_156.gif]
[Graphics:Images/3DBASE_gr_157.gif]

[Graphics:Images/3DBASE_gr_158.gif]

[Graphics:Images/3DBASE_gr_159.gif]

[Graphics:Images/3DBASE_gr_160.gif]

[Graphics:Images/3DBASE_gr_161.gif]

[Graphics:Images/3DBASE_gr_162.gif]

[Graphics:Images/3DBASE_gr_163.gif]

[Graphics:Images/3DBASE_gr_164.gif]

[Graphics:Images/3DBASE_gr_165.gif]

P1はPと全く同じ、P2は垂直の関係になることがわかる。つまりPの定数倍も同じ向きを表している。
では垂直な関係P2はどう出したか?実はこれにはからくりがある。PとP2の各成分をそれぞれ掛けて加えると0になる。この時垂直になるのだ。この関係を次のように計算して確かめる。

[Graphics:Images/3DBASE_gr_166.gif]
[Graphics:Images/3DBASE_gr_167.gif]

この . (ピリオド)かけ算は普通のかけ算ではなく、内積と呼ばれている。次のようにして内積の公式を表そう。

[Graphics:Images/3DBASE_gr_168.gif]
[Graphics:Images/3DBASE_gr_169.gif]

A . B   AベクトルとBベクトルの内積を表す(垂直の時は0)

【挑戦5】では、下の図のように点(5,5,5)を通り、向きが(1,2,1)に平行な直線と垂直な直線を描け。
            ただし、空間では垂直な線は無数に引けるから答えは一通りではないぞ。

[Graphics:Images/3DBASE_gr_170.gif]

[Graphics:Images/3DBASE_gr_171.gif]

[Graphics:Images/3DBASE_gr_172.gif]

[Graphics:Images/3DBASE_gr_173.gif]

[Graphics:Images/3DBASE_gr_174.gif]

回転

さあいよいよ今回の最後は回転だ。とりあえず今回はそのさわりのみであるが悩みの種になれば幸いである。
まず2次元の適当な位置に次のように点をうつ。

[Graphics:Images/3DBASE_gr_175.gif]

[Graphics:Images/3DBASE_gr_176.gif]

次にこの点を好きなだけ回転させることを考える。
このとき先のSin、Cosが出てくるので少し準備しよう。
まずSin[t]のtは角度を表すのだが中学で習った30°みたいな度を使う単位ではなく、一周、すなわち360° が2π(6.28)になるようにする。これがラジアンという新しい角度を表す単位だ。
例えば180° は丁度 π ラジアン、90° は[Graphics:Images/3DBASE_gr_177.gif] ラジアンである。ラジアンという単位を使うと半径が1の時弧の長さと角度が一致するメリットがある。

SinとCosは簡単に言えば次の図のように長さ1の棒を水平よりある角度 θ (シータ) にして真上から光を当てて地面にできる影の長さがCos[θ],真横から光を当てて壁にできる影の長さがSin[θ]である。従ってSin[θ],Cos[θ]共に最大でも1までであり、三平方の定理から[Graphics:Images/3DBASE_gr_178.gif]+[Graphics:Images/3DBASE_gr_179.gif]=1が成り立つ。代入して確かめてみるといい。

上の図からθが90°すなわち[Graphics:Images/3DBASE_gr_180.gif]の時コサインは0、サインは1になりそうだ。それ以外の時も試してみよう。

[Graphics:Images/3DBASE_gr_181.gif]
[Graphics:Images/3DBASE_gr_182.gif]
[Graphics:Images/3DBASE_gr_183.gif]
[Graphics:Images/3DBASE_gr_184.gif]
[Graphics:Images/3DBASE_gr_185.gif]
[Graphics:Images/3DBASE_gr_186.gif]
[Graphics:Images/3DBASE_gr_187.gif]
[Graphics:Images/3DBASE_gr_188.gif]

ではここで魔方陣を教えよう。次のような式を作る。...[x_]:=は xの関数として定義することを意味する。

[Graphics:Images/3DBASE_gr_189.gif]

これは行列といって本来は次のように表現される

[Graphics:Images/3DBASE_gr_190.gif]
[Graphics:Images/3DBASE_gr_191.gif]

これに例えばP点(1,0)を 60度 x=[Graphics:Images/3DBASE_gr_192.gif]にして作用 ( .でかける)させた点をBとしよう。

[Graphics:Images/3DBASE_gr_193.gif]
[Graphics:Images/3DBASE_gr_194.gif]

ではBとPをPointで図示すると

[Graphics:Images/3DBASE_gr_195.gif]

[Graphics:Images/3DBASE_gr_196.gif]

これではx座標とY座標の値が異なってわかりにくいので、はじめのほうで習った技を使って連続で表示させよう。

[Graphics:Images/3DBASE_gr_197.gif]

[Graphics:Images/3DBASE_gr_198.gif]

[Graphics:Images/3DBASE_gr_199.gif]

これでA[x_]:={{Cos[x],-Sin[x]},{Sin[x],Cos[x]}}が原点周りの回転であることがはっきりした。
ちなみにちょいと魔法を強くして

[Graphics:Images/3DBASE_gr_200.gif]
[Graphics:Images/3DBASE_gr_201.gif]

先ほどの式をちょいと変形してやると

[Graphics:Images/3DBASE_gr_202.gif]

[Graphics:Images/3DBASE_gr_203.gif]

[Graphics:Images/3DBASE_gr_204.gif]

せっかくだからもう少し飾り気を出して

[Graphics:Images/3DBASE_gr_205.gif]

[Graphics:Images/3DBASE_gr_206.gif]

[Graphics:Images/3DBASE_gr_207.gif]

【挑戦6】では、いよいよ最後の問題。上のAS[x_]:={{Cos[x],-Sin[x],0},{Sin[x],Cos[x],0},{0,0,1}}の形を少し変えてy軸周りに回転する図を下のように作ってみよ。

[Graphics:Images/3DBASE_gr_208.gif]

[Graphics:Images/3DBASE_gr_209.gif]

あとはX軸周りの回転の魔方陣がわかればその組み合わせにより君は3次元のあらゆる回転が手に入る。
そのためには”行列”と呼ばれる、この魔方陣の謎解きをしなくてはならない。それは次回にして本日の講義はここまでとしよう。
                                    See you again!

【解答例】
    【挑戦1】

[Graphics:Images/3DBASE_gr_210.gif]

    【挑戦2】

[Graphics:Images/3DBASE_gr_211.gif]

    【挑戦3】

[Graphics:Images/3DBASE_gr_212.gif]

    【挑戦4】

[Graphics:Images/3DBASE_gr_213.gif]

    【挑戦5】

[Graphics:Images/3DBASE_gr_214.gif]
[Graphics:Images/3DBASE_gr_215.gif]
[Graphics:Images/3DBASE_gr_216.gif]
[Graphics:Images/3DBASE_gr_217.gif]
[Graphics:Images/3DBASE_gr_218.gif]

    【挑戦6】

[Graphics:Images/3DBASE_gr_219.gif]
[Graphics:Images/3DBASE_gr_220.gif]
[Graphics:Images/3DBASE_gr_221.gif]

*Mathematicaについて
    MathematicaはWolfram Research社の製品である。
    このノートはMathematica 3.01を用いて作成した。
       現在は日本語バージョンが発売されている。学生特別割引もある。情報は
              インターネット http://www.wolfram.comに詳しくある。


*参考文献  ほんの数年前にはほとんど無かった日本語版も最近は数多く出版されている
    三角関数のやさしい入門として
        「フーリエの冒険」 ヒッポファミリークラブ
    
    入門用としては
        「Mathematicaで数学を」        守谷良二著    海文堂
            入門、線形代数、微積などシリーズ化されている
        
        「Mathematicaで見える高校数学」    植野義明、及川久遠、時田 節書 
                                    ブレーン出版
    少し進んだものとしては
        「Mathematica」        ウルフラム書 アジソン・ウエスレイ
            ご当人による本格的マニュアル トッパンから日本語版が出ている(厚さ7.5cm!)
        
        「Mathematica数学の探求」    T.W.グレイ、Jク.グリン著  トッパン
            トッパンからは他にも多く出版されているがこの本は物語調で興味深くかかれている。

        「Mathematicaで見える現代数学」    S.ワゴン著
            フラクタルから群論まで幅広く紹介されている。

    物理学との関連では
        「Matematica for Physics」    Robert L.Zimmerman
                            Fredrick I.Olness     AddisonWesley

        「Mathematica で見る数理物理入門1、2」 阿部 寛著  講談社

    99年1月現在                    都立久留米高等学校教諭 柳瀬秀共


Converted by Mathematica      July 8, 2000