Mathematicaの基礎

数学に戻る

by H.Yanase

 メニュー
1.Mathematicaの基礎
  ・1.1 基礎計算
  ・1.2 NoteBookの利用
  ・1.3 基礎的なコマンドを覚えよう。
  ・1.4 グラフの基礎
  ・1.5 3次元表示の基礎
   1.6 3次元表示の応用
2.数式エディタとしてのMathematica

 1.1 基礎計算


1.数値計算
    *入力は半角英数で、改行は「Enter」
    *答を出す時は「Sift」+「Enter」入力後は必ずこうしよう。 (これをコマンドの入力という)
    *掛け算は空白、割り算は/べき乗は^ 組み込み定数、関数の始めは大文字
      例 2の3乗は2^3、3分の2は2/3で表わす。

例1)2×3  以下全て太字のように打って(空白はスペースキー)必ず最後に「Sift」+「Enter」

2 3
     6

In[ ]:=が入力、Out[ ]=が出力(答)である。ここでは太字が入力を、その下の数字や式はMathematicaの出力した答である。

例2)2^3×(4+3)÷(−0.2)

2^3 3(4+3)/(-0.2)
     -840.

 1.2 NoteBookの利用

  Mathematica のファイルはNoteBookと呼ばれる。いろいろ便利な機能があるので一部紹介する。
*パレットの利用

 Mathemaricaの3.0以上はコマンドや文字の入力にパレットを使うことができる標準でも右側に基本計算のパレット
 が出ているがメニューバーにある「ファイル」・「パレット」からさらに細かなパレットを出すことができるし、自分で専用
 のパレットを作ることができる。

*補完機能の利用
 Mathemaricaの4.0以上はコマンドを途中まで入力し「Ctrl]+[k]でコマンドの候補が選べる。矢印キーで選択すれ
 ばよい。

*タグ、テンプレートの利用(修正や削除)
 Mathemaricaのノートブックは右端に ] がある。これを選択し、右クリックするとこの部分の書式やスタイルが
 変更できる。この右端の] を選択して、削除やコピーができるのでいろいろ自分でどんどん試行錯誤していこう

 さらに複数のタグを選択してダブルクリックすると縮約、伸展ができる。(いらない部分は隠しておける)
 また論文作成などの時は[書式][スタイルシート]から適当なテンプレートを選択して利用する。数式の番号
 の自動生成などができるようになるし、細かな設定ができる。

*もしも動かなくなったら
 Mathematicaにしらないうちに膨大な計算をさせてしまったりして実行中のままうごかなくなったら
 (実行中の時は ] が強調されて他のコマンドの入力を受け付けない)
 そんな時は上のメニューバーの「カーネル」「評価を放棄」または「評価を中止」を選択して強制的に止めることが
 できる。おそれずにいろいろためしてみよう。

*わからない時は「ヘルプ」
  わからない時は「ヘルプ」を活用しよう。わからないコマンドドラッグで反転して「f1」キーを押してもよい。
  Mathematicaのヘルプは情報や例がいっぱいあるので探検するとおもしろい、またWebにも訪れると
  新しい情報がいっぱいだよ。インターネットが使えるなら次にアクセスしてみよう。
  http://www.wolfram.com/

*ファイルの保存
 まずこのファイルを自分だけのファイルにしよう。メニューバーの「ファイル」「別名で保存」を選んで適当な名前
 をつけて保存しよう。これで元のファイルはそのままでこのファイルは自分のファイルになったから好きなように変えられる。 いざという時は再び元のファイルを使えばいいのだ。

 1.3 基礎的なコマンドを覚えよう。

1.数値aをn桁まで求める
    N[a,n]
N[Pi,50]
     3.14159265358979323846264338327950288419716939937511

Piはπを表す。数値aは関数でもよい Pi/3 は60°だから 次のように打って「Enter」で
改行して、最後に「Sift」+「Enter」で計算させる。

N[Sin[Pi/3],10]
N[Cos[Pi/3],10]
N[(Sin[Pi/3])^2+(Cos[Pi/3])^2,10]
N[Sqrt[10]]
N[E,10]
N[360 Degree]
N[Log[2,3]]
     0.8660254038

     0.5

     1.

     3.16228

     2.718281828

     6.28319

     1.58496


Sqrt[ ]はルートを取ることを表す。最後から2番めの360 Degreeは360度のことである
Mathematicaはこれ以外にも非常にたくさんの関数が用意されている

*代数計算時の注意
    少数として扱う時には小数点をつける

[Graphics:Images/MathBase_gr_1.gif]
[Graphics:Images/MathBase_gr_2.gif]
[Graphics:Images/MathBase_gr_3.gif]
2.展開する。
    Expand[式] 式を展開する
Expand[(x-y)^3]
Expand[(x-y)(x+y)]
Expand[(x+y)^2] /. {x->2,y->3}
      3      2          2    3
     x  - 3 x  y + 3 x y  - y
      2    2
     x  - y
     25

*最後の /. {x->2,y->3} はxに2、yに3を代入するためのオプションである。
 はじめにx=2;としても代入できるがこの場合以後xは2となる /. をつかうとxは変数のまま扱うことができる。

[Graphics:Images/MathBase_gr_4.gif]
[Graphics:Images/MathBase_gr_5.gif]
[Graphics:Images/MathBase_gr_6.gif]
[Graphics:Images/MathBase_gr_7.gif]
[Graphics:Images/MathBase_gr_8.gif]
[Graphics:Images/MathBase_gr_9.gif]

*Clear[..]は変数を初期化するコマンドである。xに2が代入されてしまった後もう一度代入されていないxに戻す。
*文末に ; をつけるとそのコマンドは結果表示されない。
 ま分を(* .... *) で囲むと入力文であっても無視される。

[Graphics:Images/MathBase_gr_10.gif]
[Graphics:Images/MathBase_gr_11.gif]
[Graphics:Images/MathBase_gr_12.gif]
3.因数分解する。
    Factor[式] 式を因数分解する。
Factor[x^3-3x^2 y + 3x y^2 - y^3]
            3
     (x - y)
4.式を簡単にする。
    Simplify[式]     式を簡単にまとめる。
    Collect[式 ,x]    xのべきのに整理
f=3x^2 +x y^2 +3x y -4+ 6x^2+3x^3
Simplify[f]
Collect[f,x]
g=2/(a-b)+3(a^2-b^2)/(a-b)^2
Simplify[%]
             2      3              2
     -4 + 9 x  + 3 x  + 3 x y + x y
             2      3              2
     -4 + 9 x  + 3 x  + 3 x y + x y
             2      3             2
     -4 + 9 x  + 3 x  + x (3 y + y )
                 2    2
       2     3 (a  - b )
     ----- + -----------
     a - b           2
              (a - b)
     2 + 3 a + 3 b
     -------------
         a - b

xかけるyはxyではなくx yと空白を入れることに注意しよう。

*直前の結果を使う
最後の式でできる限りの通分をしてくれている!また入力の時、括弧の中に%を入れると1つ前の式を代入してくれる。もう1つ前なら%%(%2でも同じ)だ。1行目と2行目の式は同じなのは入力の段階で同じ項は整理されているからである。式を出力させたくない時はその式の最後に;をつける。

f=3x^2 +x y +3x y -4y +5+ 6x^2+x y^3;
Collect[f,y]
g=2/(a-b)+3(a^2-b^2)/(a-b)^2
Simplify[%]
            2                     3
     5 + 9 x  + (-4 + 4 x) y + x y
                 2    2
       2     3 (a  - b )
     ----- + -----------
     a - b           2
              (a - b)
     2 + 3 a + 3 b
     -------------
         a - b
5.方程式を解く
Solve[式1==式2 ,a] 方程式 式1==式2 をaについて解く

例えばx^2=1をxについて解くと次のようになる。特に等号を2つ 書くことに注意しよう。

Solve[x^2==1,x]
     {{x -> -1}, {x -> 1}}


苦手人の多いな文字を含んでいる計算も解けてしまう。いろいろやってみよう。
ただし同じ変数a,bやx、yなどをもう一度使う時は過去の値が代入されているので
Clear[変数]で変数をはじめの状態に戻すことを忘れないように。

6.変数を初期化する
    Clear[変数]
Clear[a]
Clear[b]
Clear[x]
Clear[y]
Solve[a x^2+b x +c==0,x]
Solve[y==V0 t +(1/2)a t^2,a]
Solve[y==Exp[a x],x]
[Graphics:Images/MathBase_gr_13.gif]
[Graphics:Images/MathBase_gr_14.gif]
[Graphics:Images/MathBase_gr_15.gif]
[Graphics:Images/MathBase_gr_16.gif]


最後の式はy=e^(ax)、Exp[ ]は指数関数をあらわしている。
また2つめの方程式にはwarning(警告)メッセージが出ている。Mathematicaは自信
がない答を出した時はその旨を知らせてくれるのだ。この場合は他にも解がある可能性を知らせている。
Errorメッセージが出た時は答はでないぞ。入力した式が間違っていたら修正してもう一度「Sift」+「Enter」だ。
またMathematicaで使う記号は空白を含まないようにすれば自由につくれる上に示したV0以外にもHanakoとかTaro
なんかでもOKだ。ただしPiとかI(虚数単位)とかEは決められてるから使えないぞ。
    

7.連立方程式方程式を解く
    Solve[{式1==式2,式3==式4,...},{x,y,...}]

連立方程式を解きたい時はまず複数の方程式を{ }の中に , で区切って書く。
次に求めたい文字を同じく{ }の中に , で区切ってかけばよい。もちろん2つの
{ }の中のカンマの数は同じはずだ。;で区切ると横に並べて書くことも出来る。

Clear[a];Clear[b];Clear[c];Clear[d];
Solve[{a x+b y==1,c x- d y==2},{x,y}]
Solve[{3x+2y==1,x-y==4,y+3 z==8},{x,y,z}]
            1     b (-2 a + c)             -2 a + c
     {{x -> - + ----------------, y -> -(------------)}}
            a   a (-(b c) - a d)         -(b c) - a d
            17       9         11
     {{z -> --, x -> -, y -> -(--)}}
            5        5         5
8.微分する
D[f, x]は,偏微分係数 [Graphics:Images/MathBase_gr_17.gif]を与える.
D[f, {x, n[Graphics:Images/MathBase_gr_18.gif]]は,偏微分係数 [Graphics:Images/MathBase_gr_19.gif]を与える.
D[f, [Graphics:Images/MathBase_gr_20.gif], [Graphics:Images/MathBase_gr_21.gif], ... ]は, [Graphics:Images/MathBase_gr_22.gif]を与える.
[Graphics:Images/MathBase_gr_23.gif]
[Graphics:Images/MathBase_gr_24.gif]
[Graphics:Images/MathBase_gr_25.gif]
[Graphics:Images/MathBase_gr_26.gif]
[Graphics:Images/MathBase_gr_27.gif]
[Graphics:Images/MathBase_gr_28.gif]

微分は接線の傾きを出すことだったね。
例えば高校の物理で出てくる
[Graphics:Images/MathBase_gr_29.gif]
という落体の式があった。このグラフは次のように簡単にかける
 初速を2、gを9.8としよう。

[Graphics:Images/MathBase_gr_30.gif]

[Graphics:Images/MathBase_gr_31.gif]

[Graphics:Images/MathBase_gr_32.gif]

Plotというコマンドはこの後詳しく解説する。
では この場合の3秒後の速さはどうなるだろうか。
上のグラフを使って3秒のところの接線の傾きをだせばよかったね。
傾きを出すことは微分すろことに等しいから先ほど知った微分と代入のコマンドを使って
傾きをvとして

[Graphics:Images/MathBase_gr_33.gif]
[Graphics:Images/MathBase_gr_34.gif]

と簡単にやれてしまう。
さらに次のように実際に接線を引くことも可能だ。
この接線はyが3の時に

[Graphics:Images/MathBase_gr_35.gif]
[Graphics:Images/MathBase_gr_36.gif]

から(3, 50.1)を通るから 先の傾きv(31.4)を使って次のように方程式をとけばよい,この直線のy切片をbとして

[Graphics:Images/MathBase_gr_37.gif]
[Graphics:Images/MathBase_gr_38.gif]

従って直線の方程式は次のようにy1なるからグラフを描かせると

[Graphics:Images/MathBase_gr_39.gif]

[Graphics:Images/MathBase_gr_40.gif]

[Graphics:Images/MathBase_gr_41.gif]

Mathematica の能力が少しわかっただろうか。
さらに簡単なやり方やテクニックはこれから紹介していく。

9.微分方程式を解く
DSolve[eqn, y, x]] 独立変数を xとして,関数 yに関する微分方程式を解く。
[Graphics:Images/MathBase_gr_42.gif]
[Graphics:Images/MathBase_gr_43.gif]

{}の中に条件がいくつか書いてあるね。ここでも等式=を2つつなげることに注意しよう。
高校生にはちょっと上級だがこれを覚えると物理の運動方程式は簡単にとけてしまう。
例えば次の問題をやってみよう。

【問題】
 ばね定数kのばねをマサツのない水平面に置き質量mの重りをつける。自然の長さよりaだけ縮めて放す。自然の長さを
 基準にとって時刻tの位置xはどうあらわされるか?

【例解】
 この場合運動方程式は
 m a=-k x
という単振動の式になる a はxをtについて2回微分したものだったからD[x,{t,2}]で表される
[Graphics:Images/MathBase_gr_44.gif][Graphics:Images/MathBase_gr_45.gif]として
従って先のコマンドを使うとt=0の時にx=0

[Graphics:Images/MathBase_gr_46.gif]
[Graphics:Images/MathBase_gr_47.gif]

さっそくいろいろ自分でためしてみよう。

10.積分する
Integrate[f, x]は, 不定積分 [Graphics:Images/MathBase_gr_48.gif]を与える.
Integrate[f, {x, xmin, xmax[Graphics:Images/MathBase_gr_49.gif]]は, [Graphics:Images/MathBase_gr_50.gif]を与える.
Integrate[f, {x, xmin, xmax[Graphics:Images/MathBase_gr_51.gif], {y, ymin, ymax[Graphics:Images/MathBase_gr_52.gif]]は, 多重積分 [Graphics:Images/MathBase_gr_53.gif]を与える.
[Graphics:Images/MathBase_gr_54.gif]
[Graphics:Images/MathBase_gr_55.gif]
[Graphics:Images/MathBase_gr_56.gif]
[Graphics:Images/MathBase_gr_57.gif]

少々むずかしいが大学の基礎物理に出てくる次のようなガウス積分も可能である

[Graphics:Images/MathBase_gr_58.gif]
[Graphics:Images/MathBase_gr_59.gif]

上記の例ではaの条件範囲を示してくれている。
さらに次のようなデルタ関数も取り扱える。

[Graphics:Images/MathBase_gr_60.gif]
[Graphics:Images/MathBase_gr_61.gif]
11.整数の問題(最大公約数、最小公倍数など)
GCD[a,b,c,....]     a,b,c,...の最大公約数を求める。全部大文字に注意
LCM[a,bc,.....] a,b,c...の最小公倍数を求める。全部大文字に注意
Mod[k,n]              kをnで割った時の余り
Prime[k]            k番目の素数
PrimePi[k]        k以下の素数の数
FactorInteger[n]    nの素因数とその指数部のリスト

ではいろいろ計算してみよう。

GCD[24,36]
LCM[12,8]
     12

     24

素因数分解は指数とのペアで出力されることに注意する。たとえば24を素因数分解すると。

FactorInteger[24]
     {{2, 3}, {3, 1}}

これは2の3乗と3の1乗の組み合わせであらわされている。Prime[ ]の使い方も見てみよう

Prime[1]
Prime[2]
Prime[3]
PrimePi[5]
     2

     3

     5

     3

5までの素数が2、3、5の3つあることがわかる。同じことを少しづつ値を変えて出力するのに便利な命令も用意されている。

12.繰り返し文
Do[繰り返したい式の集まり ,{n,nの始まりの値,nの終わりの値}]
    

例えば先のPrime[ ]で5番目の素数まで一気に求めて見よう。

a=Do[Print[Prime[n]],{n,1,5}]
[Graphics:Images/MathBase_gr_62.gif]
[Graphics:Images/MathBase_gr_63.gif]
[Graphics:Images/MathBase_gr_64.gif]
[Graphics:Images/MathBase_gr_65.gif]
[Graphics:Images/MathBase_gr_66.gif]

Prime[ ]をPrint[ ]ではさんでいることに注意して欲しい。Do[ ]を使うと括弧の中は標準では画面に出てこないのでPrint[ ]を使って強制的に結果を画面に出している。
またMathematicaでは使い方のわからない関数や命令は ? の後につけて入力するとその使い方を教えてくれる。例えばDoの場合は 

? Do
[Graphics:Images/MathBase_gr_67.gif]
13.リストを作る
    Table[式,{n,nの始まりの値,nの終わりの値}]

例えば先のPrime[ ]で5番目の素数までDo[ ]と同じように一気に求めて見よう。

Table[Prime[n],{n,1,5}]
     {2, 3, 5, 7, 11}

14.整式の問題
PolynomialQuotient[式1,式2,x]
xの多項式である式1を式2で割り、余りを除いた結果を出す
PolynomialRemainder[式1,式2,x]
xの多項式である式1を式2で割り、余りを出す
PolynomailGCD[式1,式2]
式1と式2の最大公約数を出す
PolynomailLCM[式1,式2]
式1と式2の最小公倍数を出す


さっそくy1=x^3-5x^2+6x, y2=3x^2-5x-2として試して見よう。


y1=x^3-5x^2+6x;y2=3x^2-5x-2;
PolynomialQuotient[y1,y2,x]
PolynomialRemainder[y1,y2,x]
PolynomialGCD[y1,y2]
PolynomialLCM[y1,y2]
       10    x
     -(--) + -
       9     3
       20    10 x
     -(--) + ----
       9      9
     -2 + x

               2       3      4
     6 x + 13 x  - 14 x  + 3 x
15.分数式の問題
Together[式]    式を共通の分母にする
Apart[式]     式の各項が最も簡単な分母をもつ分数にする
Cancel[式]    式を約分する

ではf=(-4x+x^2)/(-x+x^2)+(-4+3x+x^2)/(x^2-1)を例にやってみよう。

f=(-4x+x^2)/(-x+x^2)+(-4+3x+x^2)/(x^2-1)
Together[f]
Apart[f]
Cancel[f]
Factor[f]
             2               2
     -4 x + x    -4 + 3 x + x
     --------- + -------------
            2             2
      -x + x        -1 + x
                2
       2 (-4 + x )
     ----------------
     (-1 + x) (1 + x)
           3        3
     2 - ------ + -----
         -1 + x   1 + x
     -4 + x   4 + x
     ------ + -----
     -1 + x   1 + x
     2 (-2 + x) (2 + x)
     ------------------
      (-1 + x) (1 + x)
16.数式の処理
係数を知る
  Coefficient[expr, form]は,多項式 exprにおける formの係数を与える.
  Coefficient[expr, form, n]は,多項式 exprにおける form^nの係数を与える.
簡単にする
    Simplify[expr]は,exprに対していくつかの代数的な変形を実行し,最も簡単な形式を返す.
    Simplify[expr, assum]は,仮定を使用して簡約する.
べき展開する。
    PowerExpand[expr]は,すべての積とベキを展開する.
[Graphics:Images/MathBase_gr_68.gif]
[Graphics:Images/MathBase_gr_69.gif]
[Graphics:Images/MathBase_gr_70.gif]
[Graphics:Images/MathBase_gr_71.gif]

*Mathematicaは次のように標準では簡単にしてもルートをはずさない。

[Graphics:Images/MathBase_gr_72.gif]
[Graphics:Images/MathBase_gr_73.gif]
[Graphics:Images/MathBase_gr_74.gif]

*%はひとつ前の結果を使う時に利用するのだった
強引にルートをはずしたい時には次のように使う

[Graphics:Images/MathBase_gr_75.gif]
[Graphics:Images/MathBase_gr_76.gif]
[Graphics:Images/MathBase_gr_77.gif]

 1.4 グラフの基礎

17.2次元のグラフ
    Plot[式 , {x, xの始めの値, xの終わりの値}] 
    

与えられた範囲での2次元の作図が自由にできる。
では馴染みの深いグラフをどんどん描いてみよう。まずY=X^2から始めるとしよう。
なれたら自分で好きなグラフを描かせてごらん。最後に2つの式を{式1,式2}と囲むことで2つのグラフが同時にかけることを示す。

Plot[x^2,{x,-2,2}]

[Graphics:Images/MathBase_gr_78.gif]

     -Graphics-

Plot[Log[x],{x,1,10}]

[Graphics:Images/MathBase_gr_79.gif]

     -Graphics-

Plot[Exp[x],{x,-1,1}]

[Graphics:Images/MathBase_gr_80.gif]

     -Graphics-

Plot[{Sin[x],Cos[x]},{x,-2Pi,2Pi}]

[Graphics:Images/MathBase_gr_81.gif]

     -Graphics-


2次元のグラフを書く方法は他にもある。例えば半径1の円はどう書くか。円の方程式はx^2+y^2=r^2だからまずX^2+y^2=1をyについて解いてそのグラフをかかせて見よう。Solve[ ]を使って解をを出すとプラス、マイナスの2つの解が出てくるよね。

Solve[x^2+y^2==1,y]
                       2                    2
     {{y -> -Sqrt[1 - x ]}, {y -> Sqrt[1 - x ]}}

そこでこのうちの1つ目、つまりマイナスの方の解だけをyに代入させるには

18. 集合リスト({ },{ }で区切られた集合)の中からi番めを抽出する。
        Part[集合リスト, i]
    

をつかうとできる。 yに代入させる時は y/. 式 だから一気にグラフを作成するプログラムを書くと次のようになる。

f= y /. Part[Solve[x^2+y^2==1,y],1]
g1=Plot[f,{x,-1,1}]
                2
     -Sqrt[1 - x ]

[Graphics:Images/MathBase_gr_82.gif]

     -Graphics-

これで下半分ができたわけだ。上半分も同じように作ってグラフをあわせれば完了だね
そこでグラフをあわせたりするにはShow[ ]を使うとできる。

19. グラフをあわせたり表現方法を変えたりする。
Show[グラフ1, グラフ2, ...,オプションー>値] グラフ1とグラフ2、...    
を重ねて表示さらにいろいろなオプションを変更する。
    

では今度は2番めの解を使ってグラフを描かせ、先のグラフとあわせてみよう。ついでにAspectRatio->Automaticというオプションをつけてx座標とy座標の長さを等しくする。

f=y /. Part[Solve[x^2+y^2==1,y],2]
g2=Plot[f,{x,-1,1}]
Show[g1,g2,AspectRatio->Automatic]
               2
     Sqrt[1 - x ]

[Graphics:Images/MathBase_gr_83.gif]

     -Graphics-

[Graphics:Images/MathBase_gr_84.gif]

     -Graphics-

やっと円ができた!オプションは他にもいっぱいあるが、それを知るには
次の命令を使ってPlotのオプションを見る。

20. オプションを知る
    Options[命令] 命令のオプションを表示する(英語)
Options[Plot]
[Graphics:Images/MathBase_gr_85.gif]

さて、次に同じ円を別な方法、三角関数とパラメーターで表してみる
先の円の絵をみて点[1,0]から君が円上を歩くとしよう。するとx座標の値はだんだん減って、y座標の値はだんだん増える。ところが90°すなわちPi/2回ると[0,1]に来る。
ここからはx座標はマイナス側にだんだん増えてy座標はだんだん減る。これはちょうどSinとCosによく似てるね。そこで角度をt、x座標をCos[t]、y座標をSin[t]としてtを0から2πまで変化させよう。

21. パラメーターを用いた2次元グラフ
ParametricPlot[{x(t),y(t)} , {t,tのはじめの値,tの終わりの値}]
x座標と、y座標をtの関数で表し、tの範囲を指定してグラフを描く
別にパラメーターはtでなくてもよい。座標と範囲共に{}でくくることに注意

ではさっそく円に挑戦しよう。

ParametricPlot[{Cos[t],Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]

[Graphics:Images/MathBase_gr_86.gif]

     -Graphics-

22. 座標のリストを点で表示する
ListPlot[{y1,y2,y3,...}]  xが1の時y1,xが2の時y2として点を打つ
ListPlot[{x1,y1},{x2,y2},{x3,y3},...]  [x1,y1],[x2,y2],...の各座標を点で打つ

まだ2次元グラフを描く方法はある。座標を点で打っていけばいい。そこでこのListPlotを使うには点の集合がいる。第1章でやった素数を試しに使ってみよう。1000!は1000の階乗(1から1000まで全部かける)を表す。そこで1000!までという非常に大きな素数をグラフで調べてみよう。

N[1000!]
Plist=FactorInteger[1000!]
                         2567
     4.023872600770938 10
     {{2, 994}, {3, 498}, {5, 249}, {7, 164}, {11, 98}, {13, 81}, {17, 61}, {19, 54}, {23, 44}, {29, 35}, 
       {31, 33}, {37, 27}, {41, 24}, {43, 23}, {47, 21}, {53, 18}, {59, 16}, {61, 16}, {67, 14}, {71, 14},
       {73, 13}, {79, 12}, {83, 12}, {89, 11}, {97, 10}, {101, 9}, {103, 9}, {107, 9}, {109, 9}, {113, 8},
       {127, 7}, {131, 7}, {137, 7}, {139, 7}, {149, 6}, {151, 6}, {157, 6}, {163, 6}, {167, 5}, {173, 5},
       {179, 5}, {181, 5}, {191, 5}, {193, 5}, {197, 5}, {199, 5}, {211, 4}, {223, 4}, {227, 4}, {229, 4},
       {233, 4}, {239, 4}, {241, 4}, {251, 3}, {257, 3}, {263, 3}, {269, 3}, {271, 3}, {277, 3}, {281, 3},
       {283, 3}, {293, 3}, {307, 3}, {311, 3}, {313, 3}, {317, 3}, {331, 3}, {337, 2}, {347, 2}, {349, 2},
       {353, 2}, {359, 2}, {367, 2}, {373, 2}, {379, 2}, {383, 2}, {389, 2}, {397, 2}, {401, 2}, {409, 2},
       {419, 2}, {421, 2}, {431, 2}, {433, 2}, {439, 2}, {443, 2}, {449, 2}, {457, 2}, {461, 2}, {463, 2},
       {467, 2}, {479, 2}, {487, 2}, {491, 2}, {499, 2}, {503, 1}, {509, 1}, {521, 1}, {523, 1}, {541, 1},
       {547, 1}, {557, 1}, {563, 1}, {569, 1}, {571, 1}, {577, 1}, {587, 1}, {593, 1}, {599, 1}, {601, 1},
       {607, 1}, {613, 1}, {617, 1}, {619, 1}, {631, 1}, {641, 1}, {643, 1}, {647, 1}, {653, 1}, {659, 1},
       {661, 1}, {673, 1}, {677, 1}, {683, 1}, {691, 1}, {701, 1}, {709, 1}, {719, 1}, {727, 1}, {733, 1},
       {739, 1}, {743, 1}, {751, 1}, {757, 1}, {761, 1}, {769, 1}, {773, 1}, {787, 1}, {797, 1}, {809, 1},
       {811, 1}, {821, 1}, {823, 1}, {827, 1}, {829, 1}, {839, 1}, {853, 1}, {857, 1}, {859, 1}, {863, 1},
       {877, 1}, {881, 1}, {883, 1}, {887, 1}, {907, 1}, {911, 1}, {919, 1}, {929, 1}, {937, 1}, {941, 1},
       {947, 1}, {953, 1}, {967, 1}, {971, 1}, {977, 1}, {983, 1}, {991, 1}, {997, 1}}

1行目の4.023872...  の後の空白の次にあるのは10の2567乗をかけるという意味だ
次に膨大なリストがPlistという名前でできた。これは前にも見たように1000!に出てくる素数とそのべきが組になっている。つまりどの素数が何回かけられているかということだがこのリストを見て何か見抜いた人はいるだろうか?
ただの数字の羅列に見えるがListPlot[ ]でグラフにして見よう。

ListPlot[Plist,Prolog->AbsolutePointSize[2]]

[Graphics:Images/MathBase_gr_87.gif]

     -Graphics-

オプションとしてProlog->AbsolutePointSize[2]をつけたのは点の大きさを大きくして見やすくするためだ。この図を見ると何かに似ていると思わないか?
そう1/xのグラフに似ている!そこで1000/xのグラフを実際に書いてみよう。
y座標の値をそろえるためにPlotRange->{0,19}というオプションをつける

Plot[1000/x,{x,1,1000},PlotRange->{0,19}]

[Graphics:Images/MathBase_gr_88.gif]

     -Graphics-

そっくりになるね、なぜかは自分で考えてみよう。またListPlotはPlotJoined->Trueというオプションを付ければ点は線で結ばれる。

ListPlot[Plist,PlotJoined->True]

[Graphics:Images/MathBase_gr_89.gif]

     -Graphics-



さあ次はお待ちかねの3次元だ。Mathematicaの本領発揮!
ではもっともすばらしい命令の1つであるPot3Dを三角関数の積にを使おう。

 1.5 3次元表示の基礎

23. 3次元グラフの作成
Plot3D[xとyの式 , {x,xの始めの値,xの終わりの値},{y,yの始めの値,yの終わりの値}]
Plot3D[Sin[x]Cos[2 y],{x,-Pi,Pi},{y,-Pi,Pi}]

[Graphics:Images/MathBase_gr_90.gif]

     -SurfaceGraphics-

上の図をまな板の上において包丁をもちx軸にそって千切りにする。またy軸にそって千切りにすると波が連続的に変化しているのがわかるね?何?わからないって?では先にやったDo[ ]を使って連続変化を見てみよう。まず次のように入力してみて。


Do[
    Plot3D[Sin[x-2 Pi t/7] Cos[2 y-2 Pi t/7],
    {x,-Pi,Pi},{y,-Pi,Pi},PlotPoints->30],
  {t,0,7}
  ]

[Graphics:Images/MathBase_gr_99.gif]

ちょっと時間がかかったのはPlotPoints->30というオプションをつけてグラフをより細かくして8つも作図したからだ。
さて次に今描いたグラフを動かしてみよう。それにはまず画面の右端に青く長い ] があることを確認する。グラフがいっぱい描いたところはずいぶん長い ] が一番外側に
あるだろうこの一番長い ]のところにマウスで矢印をそーっともっていくするとあるところでマウスカーソルの形が |← に変わる。そしたら左ボタンをクリックする。すると選択
された ] が黒く反転する。もし間違えて1つ内側の短い(図形1個分)の ] を反転
させてしまったら、その1つ外にマウスカーソルをもっていって長い ] を反転させよう
[Graphics:Images/MathBase_gr_100.gif]ーにもっていく。「セル」・「アニメーション」を選択すると絵が動く・
これがMathematicaのアニメーション機能だ。

さらにMathematicaは3次元で描いた図形をあらゆる角度から自由に見ることも可能だ
式を見ただけでは創造のつかない次の関数でその例を示そう。

f=(x^2+y^2)Exp[1-x^2-y^2]

f=(x^2+y^2)Exp[1-x^2-y^2]
Plot3D[f,{x,-2,2},{y,-2,2},PlotPoints->30]
           2    2
      1 - x  - y    2    2
     E            (x  + y )

[Graphics:Images/MathBase_gr_101.gif]

     -SurfaceGraphics-

火山の火口のような図形ができたねではもう一度同じように入力して最後の]の前に
カンマを下のように入れる。するとカーソルはカンマのすぐ右隣で点滅してるよね
Plot3D[f,{x,-2,2},{y,-2,2},PlotPoints->30,]
この状態で点滅しているカーソルを動かさないように注意してマウスカーソルをまた上の方にもっていく。今度は右から4番めのXYZの座標軸の絵がある四角いボタンを押そう。すると画面に新しく立方体の枠の絵のある窓が現れる。
そしたらこの立方体の適当な辺にマウスをもっていって左ボタンを押す。
そこでボタンは離してはいけない!ボタンを押したまま少しマウスを動かそう。すると枠が連動して動く。自分の好きな枠の位置が決まったらマウスのボタンを離して、マウスカーソルを右側の[Paste]にもっていってマウスの左ボタンをクリック。そしたら次は[OK]ボタンをクリックする。すると下にあるように自動的にViewPoint->{0.006,-2.812,-1.882}のオプションが付け加わる。ただし{ }の中の3つの数字は人によってちがう。先生は下から覗く形にしたのでこの数字になっただけだ(別にHじゃないぞ!)。
もちろんこのオプションは自分でタイプしてもいい。完成したら[Sift]+[Enter]で入力してみよう。
Ver4からはマウスを使って自由に回転することもできるようになった。この機能は後に紹介する。

Plot3D[f,{x,-2,2},{y,-2,2},PlotPoints->30,
ViewPoint->{0.006,-2.812,-1.882}]

[Graphics:Images/MathBase_gr_102.gif]

     -SurfaceGraphics-

24. 等高線グラフの作成
ContourPlot[xとyの式 , {x,xの始めの値,xの終わりの値},{y,yの始めの値,yの終わりの値}]

Mathematicaは社会の地図で良く見る等高線を作ることができる先の火山?の関数を等高線で表現して見よう。

ContourPlot[f,{x,-2,2},{y,-2,2}]

[Graphics:Images/MathBase_gr_103.gif]

     -ContourGraphics-

21.濃淡グラフの作成
DensityPlot[xとyの式 , {x,xの始めの値,xの終わりの値},{y,yの始めの値,yの終わりの値}]

さらにMathematicaは色の濃淡で関数を表現させることもできる先の関数で試すと

DensityPlot[f,{x,-2,2},{y,-2,2},PlotPoints->30]

[Graphics:Images/MathBase_gr_104.gif]

     -DensityGraphics-

数学には無関係だが美的なセンスとして方眼の線が邪魔だから次のオプションを追加して消す。%を使えばすぐ前の結果がもう一度使えるから

Show[%,Mesh->False]

[Graphics:Images/MathBase_gr_105.gif]

     -DensityGraphics-

なんとなく白黒写真でとった雰囲気がでてきたね。Mathematicaは数学の勉強だけでなく、楽しい絵を書くことにも使えそうだ。

そこで少し遊んで見よう。

25. 単位立方体を配置する
Cuboid[{x,y,z}]   [x,y,z]と[x+1,y+1,z+1] を頂点に持つ単位立方体を配置する
Clear[f];
f=Table[Cuboid[{t,t,t}],{t,1,10}]
Show[Graphics3D[f]]
     {Cuboid[{1, 1, 1}], Cuboid[{2, 2, 2}], Cuboid[{3, 3, 3}], 
       Cuboid[{4, 4, 4}], Cuboid[{5, 5, 5}], Cuboid[{6, 6, 6}],
       Cuboid[{7, 7, 7}], Cuboid[{8, 8, 8}], Cuboid[{9, 9, 9}],
       Cuboid[{10, 10, 10}]}

[Graphics:Images/MathBase_gr_106.gif]

     -Graphics3D-

Show[ ]を使って絵を描かせる時は2次元はGraphics[ ]3次元はGraphics3D[ ]を併せて使う。
遊問題1:  では皆さん、この単位立方体を螺旋状に配置してみて
        ヒントは{t,t,t}のところにSin[ ],Cos[ ]をうまく使うとできる。

じつはMathematicaは絵としての円もできる。ついでに色をつけるオプションも覚えよう

26. 円(円盤)を描く
    Circle[{x,y},r]   頂点[x,y]と半径rの円を描く
    Disk[{x,y},r]   頂点[x,y]と半径rの円盤を描く
Show[Graphics[{RGBColor[1,0,0],Disk[{1,1},1]}]]

[Graphics:Images/MathBase_gr_107.gif]

RGBColor[r,g,b] というオプションが色をつけることをしているrは赤、gは緑、bは青だ
それぞれ最大で1、最小で0の値をとる。この数値を変えればまさに絵の具を混ぜるような操作も可能になる。
遊問題2:上の円の色をTable[ ]を使って連続的に変化させよ。


RGBColor[r,g,b]のオプションを覚えたら前にやったPlot[{Sin[x],Cos[x]},{x,-2Pi,2Pi}]色分け、線の太さも変えて出力してみよう

Plot[{Sin[x],Cos[x]},{x,-2Pi,2Pi},PlotStyle->{
{Thickness[1/40],RGBColor[0,0,1]},
{Thickness[1/80],RGBColor[1,0,1]}}]

[Graphics:Images/MathBase_gr_108.gif]

     -Graphics-

青と紫で太さの違う線がかけたね。Thickness[1/40]のオプションが線の太さを決めている。また複数のオプションを指定する時は{ }でくくることにも注意しよう。

27. パラメータを使って3次元の作図をする。
ParametricPlot3D[{x[t],y[t],z[t]},{t,tの始めの値,tの終わりの値}]
ParametricPlot3D[{x[t,u],y[t,u],z[t,u]},
{t,tの始めの値,tの終わりの値},{u,uの始めの値,uの終わりの値}]

ではまず3次元の連続した線、次に面を作図する例を示そう。

ParametricPlot3D[{t Cos[t],t Sin[t],2 t},{t,0,18Pi},
PlotPoints->100]

[Graphics:Images/MathBase_gr_109.gif]

     -Graphics3D-

ParametricPlot3D[{Cos[t](3+Cos[u]),Sin[t](3+Cos[u])
,Sin[u]},{t,0,2Pi},{u,0,2Pi},
PlotPoints->30]

[Graphics:Images/MathBase_gr_110.gif]

     -Graphics3D-


竜巻とドーナッツができたね。

遊問題3 上の図を研究して球を作図してみよ。

28. よく使う関数1
Abs[x]        xの絶対値をとる
Floor[a]         aを超えない最大の整数 
Fit[{{x1,y1},{x2,y2},...},{f1,f2,...},x] 
点[x1,y1],[x2,y2],...を通る線をf1、f2、...の組み合わせで作る

数学での実践力をつけるためによく問題集に出る関数を使う例を示そう。

例題1  y= |x^2-4| のグラフを -6<x<6 の範囲で書け。

f=Abs[x^2-4]
Plot[f,{x,-6,6}]
               2
     Abs[-4 + x ]

[Graphics:Images/MathBase_gr_111.gif]

     -Graphics-


例題2 ガウス記号[x]をxを超えない整数の最大値として
      y=1/2 [x^2] ,-2<x<2 のグラフを描け

Plot[1/2 Floor[x^2],{x,-2,2}]

[Graphics:Images/MathBase_gr_112.gif]

     -Graphics-


数学での実践力をつけるためによく問題集に出る関数を使う例を示そう。

例題3  3つの点 [-1,6], [0,1],[2,3]を通る直線の方程式を求め、そのグラフを描け

y=Fit[{{-1,6},{0,1},{2,3}},{1,x,x^2},x]
Plot[y,{x,-2,2},GridLines->Automatic]
                     2
     1. - 3. x + 2. x

[Graphics:Images/MathBase_gr_113.gif]

     -Graphics-

ホームページの作成
 Mathematicaの強力なグラフィック機能はまだまだある。最近のMathematicaではWebとの連携が深まり
 ホームページとしての利用が簡単になった。たとえば「ファイル」・「特別な形式で保存」を選び「HTML]の形式 選択するだけでHP形式となる。またJavaを利用できるようにもなってきている。

例えば先にはDoコマンドを使ってアニメーションを作ったが同じようにTableコマンドを使って
アニメーションのデータを次のようにつくる

[Graphics:Images/MathBase_gr_114.gif]

[Graphics:Images/MathBase_gr_123.gif]

次にこれをホームページでよくつかうアニメーションGIFにしてしまおう。
次のようにファイル名を指定してExportコマンドを使えばよい

[Graphics:Images/MathBase_gr_124.gif]
[Graphics:Images/MathBase_gr_125.gif]

ドライブDを見てみるとanimeというgifファイルができているはずだ。これをインターネットエクスプローラ
などで見てみよう。同じようにアニメーションする。

 1.6 3次元表示の応用

結晶模型の立体表示「RealTime3D」

ここではMathematica V.4の試行的なコマンドであるRealTime3Dを利用して結晶の立体模型をいくつか作図させる。これはMathematica,もしくは、無償で以下のサイトから提供される「MathReader」があればマウスを利用して自由にリアルタイムに回転させあらゆる角度から観測ができる。ただし現時点(2000.10)ではこのパッケージは公式なものではなくまだ開発段階であり、このパッケージをロードすることで立体グラフのいくつかのオプションは効果をもたなくなったりする。また、ハードの資産(メモリ、グラフィックス)を多く必要とする。
http://www.wolfram.co.jp/  「ウルフラム公式日本語サイト」

まず、以下のようにパッケージをロードする。

[Graphics:Images/MathBase_gr_126.gif]

次に以下の多面体のパッケージを読み込んで回転の様子をみてみよう。
多面体のオプションはほとんど利用できる。

[Graphics:Images/MathBase_gr_127.gif]

[Graphics:Images/MathBase_gr_128.gif]

[Graphics:Images/MathBase_gr_129.gif]

図のあるセル内でマウスをドラッグすると回転することが確かめられただろうか。

では結晶模型を作るために任意の位置に球を配置させる関数を次のようにつくる。

[Graphics:Images/MathBase_gr_130.gif]

そこでまず六方最密格子hcpを作ってみよう。基本的な4個を表現すると、c/aの比を考慮して

[Graphics:Images/MathBase_gr_131.gif]

[Graphics:Images/MathBase_gr_132.gif]

[Graphics:Images/MathBase_gr_133.gif]

では面心立方格子を描いてみよう。

[Graphics:Images/MathBase_gr_134.gif]
fcc=Show[Po[a0],Po[a1],Po[a2],Po[a3],Po[b1],Po[b2],Po[b3],Po[b4],Po[b5],Po[b6],Po[b7],Po[c1],Po[c2],Po[c3]]

[Graphics:Images/MathBase_gr_135.gif]

[Graphics:Images/MathBase_gr_136.gif]

次に面心格子のaを次のように(1,1,1)方向にずらすしたものを加えると何ができるだろうか。

[Graphics:Images/MathBase_gr_137.gif]
fcc=Show[Po[a0],Po[a1],Po[a2],Po[a3],Po[b1],Po[b2],Po[b3],Po[b4],Po[b5],Po[b6],Po[b7],Po[c1],Po[c2],Po[c3],Po[d1],Po[d2],Po[d3],Po[d4]]

[Graphics:Images/MathBase_gr_138.gif]

[Graphics:Images/MathBase_gr_139.gif]

これはダイアモンドの結晶構造である。

 2.0 数式エディタとしてのMathematica

Mathematicaは優れた数式エディタとしてももちろん機能する.
 先にもあったように「ファイル」・「パレット」から基礎的な記号、文字を選んでマウスで選択する方法もあるが
キーボードから簡略記号を使って、またTexコマンドを使って数式を作成可能である。
次のような積分はキーボードから[Esc],int,[Esc] x dx と入力すればいいし、[Ctrl]キーとの組み合わせで
多くの表現ができる

[Graphics:Images/MathBase_gr_140.gif]

[Graphics:Images/MathBase_gr_141.gif]
分数は        [Ctrl]+/
階乗は      [Ctrl]+^
上付きマークは [Ctrl]+6
下付きマークは [Ctrl]+−

そのほか略号として[Esc]キーをはさんで使って
偏微分∂は  [Esc]pd[Esc]
αは       [Esc]a[Esc]
βは         [Esc]b[Esc]
φは       [Esc]phi[Esc]
Φは           [Esc]Phi[Esc]
ℏ  は         [Esc]hb[Esc]
θは         [Esc]th[Esc]
∞は         [Esc]inf[Esc]
∫は         [Esc]int[Esc]
∮ は         [Esc]cint[Esc]
∑ は         [Esc]sum[Esc]
πは         [Esc]p[Esc]

などがそのごく一部である。詳しくはヘルプで「エイリアス」を参考にするとよい。

さらにほかのアプリケ-ションで作った絵を貼り付けたり,Mathematicaのグラフなどをほかの
アプリケ-ションに貼り付けたりすることもできる.


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

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

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

        「Mathematica で見る数理物理入門1、2」 阿部 寛著  講談社
        
    公式サイト:    http://www.wolfram.com


Converted by Mathematica      February 18, 2001