M a t h e m a t i c a 入門

 



 教育用計算機センター(ecc)の分散配置の端末では、 色々な便利なソフトが使えるように 環境が整えられています。 そのなかに、mathematica というソフトがあります。 これはその名の通り数学や種々の計算をやるための ソフトなのですが、少々とっつきにくいところが あるので一部の人たちしか使ってないようです。 しかし、使っていくと、そのサブタイトル "A System for Doing Mathematics by Computer"   が誇大公告ではないということが分かります。 その機能のすごさは思わず呆れるほどです。

 このページは、これから、Mathematica を使おうとする人の 最初の一歩を手助けできたらと思って書いています。



Mathematica の起動

Mathematica を起動するには、kterm で

mathematica &

と入力します。
少し時間がかかりますが、しばらくするとMathematicaのウィンドウが出てきます。


まずは試しに

まずは、なにはともあれ足し算でもしてみましょう。 マウスのカーソルをMathematicaのウィンドウの白い部分の中に 移動させて下さい。 そして、

1+1

と入力し、 それから、

Shift を押しながら Return を押して下さい。

  ※Returnだけ押しても計算は実行されません。

ここでまた少し時間がかかります。 これは、計算をするMathematicaの本体を起動しているためです。 最初に計算する時だけなので、1+1を計算するのにこんなに遅いんじゃ 使い物にならないじゃないかと思ってはいけません。

どうでしょう、

In[1]:=
  1+1

Out[1]=
  2

という様に表示されたでしょうか?


三角関数は?

同じように sin x 、cos x 、tan x なども計算できます。

Sin[Pi/6]

1+1 と同じように計算してみて下さい。

In[2]:=
  Sin[Pi/6]

Out[2]=
   1
   -
   2

このように関数の名前は頭文字が大文字で数学で使われる ままかあるいは完全なスペルになっています。

前の結果を使う

一つ前の計算の結果を使って計算を続けたいときは、 % という記号を使います。

In[3]:=
  % * 2

Out[3]=
  1

ここでは、 % には 1/2 が入ります。
% は、In,Outの[ ]内の数字で見て 一つ前の結果を、 %% は二つ前を指します。%%% 以降同様です。 また、Out[n]で結果を指定することも出来ます。

In[4]:=
  3^Out[1]

Out[4]=
  9


こんなことも

Limit[((x+h)^2-x^2)/h,h->0]

を試してみてください。
これは、微分の定義を x の2乗 に当てはめたものですが、ちゃんと、

In[5]:=
  Limit[((x+h)^2-x^2)/h,h->0]

Out[5]=
  2 x

という答が出てきますね。

∞は、Infinity 、 -∞は、-Infinity と書きます。たとえば、

In[6]:=
  Limit[3x/(1+x^2 Sin[1/x]),x->Infinity]

Out[6]=
  3

というように。

ほら、このあたりから Mathematica ってすごいなぁって 思い始めたでしょう?

Mathematicaらしいとこ

{1,2,3}

のような表現をリストといい、Mathematicaでは 式として扱います。 リストに対して演算子や関数を使うと、 リストのそれぞれの要素について演算子や関数を適応し、 それぞれの結果をリストにまとめて結果とします。

In[7]:=
  {1,2,3}*2

Out[7]=
  {2, 4, 6}


In[8]:=
  Cos[{0,Pi/3,2Pi/3,Pi}]

Out[8]=
      1    1
  {1, -, -(-), -1}
      2    2

てな感じです。

どんどん行こう、おや?

次は、方程式でも解いて見ましょう。

Solve[(x-1)(x-2)(x-3)==0]

を計算させて下さい。 答えは見えていますが、

In[9]:=
  Solve[(x-1)(x-2)(x-3)==0]

Out[9]=
  {{x -> 1}, {x -> 2}, {x -> 3}}

おや、変な矢印が出てきましたね。 この -> をMathematica では、ルールといいます。 これは、リプレースオール /. とともに使用して、 式の一部を別の表現(式)で置き換える時に使うものです。

In[10]:=
  (x+1)^2 +2(x+1) +1 /. {x+1 -> y}

Out[10]=
  1 + 2 y + y^2

Solve の結果にルールが使われるのは、 その後の扱いが楽になるからです。
例えば、

In[11]:=
  x^2+1 /. Out[9]

Out[11]=
  {2,5,10}

ように使うことができます。 単に解のリストにしたいなら、

In[12]:=
  x /. Out[9]

Out[12]=
  {1,2,3}

とすればいいわけですね。

さあ、グラフだ

グラフをプロットする関数は Plot で、次のようにして使います。

In[13]:=
  Plot[x^2-x,{x,-1,2}]

Out[13]=
  -Graphics-

{x,-1,2}は、x -1 から 2 の範囲をプロットしろということです。
(それをリストで与えているということなんですが。)

もう一つ描いてみましょう。
In[14]:=
  Plot[Sin[x],{x,-Pi,Pi}]

Out[14]=
  -Graphics-

Show という関数を使うと、 描いたグラフを重ねて見ることが出来ます。

In[15]:=
  Show[Out[13],Out[14]]

Out[15]=
  -Graphics-


こうなると交点が知りたくなるというもの。

前出のSolveを使えば交点が得られるでしょうか?

In[16]:=
  Solve[x^2-x==Sin[x]
  Solve::tdep:
    The equations appear to involve
      transcendental functions of the
      variables in an essentially
      non-algebraic way.


Out[16]=
              2
  Solve[-x + x  == Sin[x]]

答えは、ダメですね。 「代数的でない形で変数の超越関数を含んでいる」 ってとこですか? とにかくSinがあるから 代数的には解けないと言っている訳です。

そこで登場するのが、FindRoot です。 次の様にすれば、 FindRootはニュートン法により式を 数値的に解いてくれます。

In[17]:=
  FindRoot[x^2-x==Sin[x],{x,2}]

Out[17]=
  {x -> 1.61755}

{x,2}は、x の初期値を 2 として求めよ、 ということを指定しています。

まだ、続くつもり……




Applauseこと 寺川 愛印(Ein Terakawa)
E-mail:applause@tky.3web.ne.jp