5 使い方

5.1 高級電卓

まずは、円周率$ \pi$の値を1000桁計算してみよう。入力ウインドウに

$\displaystyle N[\pi,1000]$    

と入れて、[Shift]+[Enter]と計算を実行させてみよう。すると、1000桁の円 周率が打ち出されたはずである。ここで使ったコマンドはNで、N[計算式,桁数] と使う。

次に、簡単な分数の計算

$\displaystyle \frac{987654321}{123456789}$    

を行う。計算の結果は分数で、正確な値が得られる。これは非常に驚くべきこ とで、CやFORTRANでは不可能である。正確な値ではなく、近似値が欲しい場合 は、

$\displaystyle \texttt{N}\left[\frac{987654321}{123456789},1000\right]$    

とすればよい。これで、1000桁の近似値が得られる。

もう少し便利な電卓としての使い方は、

\begin{equation*}\begin{aligned}&\theta_1=\frac{\pi}{6};\\ &\theta_2=\frac{\pi}{...
...ta_2] -\texttt{Sin}[\theta_2]\texttt{Cos}[\theta_1] \end{aligned}\end{equation*}

である。1行目と2行目のセミコロン`;`は、C言語の行の区切りではない。その 行の計算結果を出力しないという意味である。計算結果である3行目は出力さ せたいため、セミコロンが無い。3行目を

$\displaystyle \texttt{Simplify}\left[\texttt{Sin}[\theta_1]\texttt{Cos}[\theta_2] -\texttt{Sin}[\theta_2]\texttt{Cos}[\theta_1]\right]$    

と書き換えれば、整理した結果が得られる。言うまでも無いが、3行目を

$\displaystyle N\left[\texttt{Sin}[\theta_1]\texttt{Cos}[\theta_2] -\texttt{Sin}[\theta_2]\texttt{Cos}[\theta_1]\right]$    

と書き換えれば、近似値を求めることができる。

複素数の計算も問題なくできる。複素数が関係する最も美しい式

$\displaystyle e^{i\pi}$    

を計算してみよう。ネピア数$ e$と虚数単位$ i$は、パレットから選択する必要 がある。計算の結果は、-1になるはずである。

線形代数の計算も簡単にできる。例えば、

\begin{equation*}\begin{aligned}&A=\{a_x,a_y,a_z\};\\ &B=\{b_x,b_y,b_z\};\\ &A.B\\ &\texttt{Cross}[A,B] \end{aligned}\end{equation*}

でベクトルAとBの内積と外積が計算できる。固有値や固有ベクトル、行列式の 計算もできる。行列は、メニューの入力 $ \;\rightarrow\;$表・行列・パレッ トの作成を用いて入力する。次の

\begin{equation*}\begin{aligned}&U= \begin{pmatrix}1 & 2 & 3 \\ 3 & 1 & 2 \\ 2 &...
...}[U]\\ &\texttt{Eigenvectors}[U]\\ &\texttt{Det}[U] \end{aligned}\end{equation*}

のようにすれば行列の計算ができる。

5.2 微分と積分

5.2.1 微分

微分は、Dというコマンドを用いても、パレットから$ \partial$を使っても可 能である。次の例のように、

\begin{equation*}\begin{aligned}&\texttt{D}[\texttt{Sin}[x],x]\\ &\partial_x\texttt{Sin}[x] \end{aligned}\end{equation*}

できる。高次の微分は、

$\displaystyle \texttt{D}[x^n,\{x,4\}]$    

のようにする。 $ \frac{\partial^3 \sin(x^2y)}{\partial x \partial^2y}$の ような偏微分は

$\displaystyle \partial_{x,y,y}\texttt{Sin}[x^2\; y]$    

とすればよい。また、

$\displaystyle \partial_xf[g[x]]$    

のようなこともできる。

5.2.2 積分

不定積分は、コマンドIntegrate、あるいはパレットから$ \int$で可能である。 たとえば、

\begin{equation*}\begin{aligned}&\texttt{Integrate}[x^n,x]\\ &\int x^ndx \end{aligned}\end{equation*}

のようである。次のような複雑な積分

$\displaystyle \int \sqrt{a+b\;\texttt{Cos}[c\;x]}dx$    

も可能である。結果は楕円関数になっている。積分記号も根号もパレットから 選択する。

定積分は、

\begin{equation*}\begin{aligned}&\texttt{Integrate}[\frac{1}{1+x^2},\{x,0,1\}]\\ &\int_0^1\frac{1}{1+x^2}dx \end{aligned}\end{equation*}

のようにしてできる。

数値積分は、

$\displaystyle \texttt{NIntegrate}[(\texttt{Sin[x])}^2,\{\texttt{x},0,2\pi\}]$    

のように、NIntegrateコマンドを使う。

通常のプログラミング言語で計算できるのは、この数値積分だけである。 Mathematicaでは不定積分や定積分の計算が可能である。これは、驚くべきこ とである。

5.3 グラフィックス

グラフィックの機能は豊富で、通常必要なグラフはほとんどMathematicaで書 くことができる。C言語などの計算結果をMathematicaで出力することも行われ ており、グラフ作成が非常に容易である。

5.3.1 2次元のグラフ

まずは、非常に単純な三角関数を例にして、グラフの書き方を示す。最初の例 は、

$\displaystyle \texttt{Plot}[\texttt{Sin}[x],\{x,0,2\pi\}]$    

である。

計算結果をグラフにする場合は、

\begin{equation*}\begin{aligned}&f[x\_]=\partial_x\texttt{Sin}[x^2];\\ &\texttt{Plot}[f[x],\{x,-2\pi,2\pi\}] \end{aligned}\end{equation*}

のようにする。計算結果である微分を関数と定義して、プロットしている。関 数を定義するときは、変数の後に下線をつける。

媒介変数を使ったプロットは、

$\displaystyle \texttt{ParametricPlot}[\{\texttt{Sin}[2t],\texttt{Sin}[3t]\}, \{t,0,2\pi\}]$    

のようにする。これは、リサジューの図形である。

グラフの形に不満があれば、オプションを使って、整形できる。論文などに計 算結果のグラフを貼り付ける場合、オプションを駆使して、見栄えを整えるべ きである。

5.3.2 3次元のグラフ

3次元グラフは

$\displaystyle \texttt{Plot3D}[\frac{\texttt{Sin}[\sqrt{x^2+y^2}]}{\sqrt{x^2+y^2}}, \{x,-4\pi,4\pi\},\{y,-4\pi,4\pi\}]$    

と書けばよい。このままだと少し分かり難いので、オプションをつけるて分か り易くできる。

\begin{equation*}\begin{aligned}&\texttt{Plot3D}[\frac{\texttt{Sin}[\sqrt{x^2+y^...
...,\\ &\quad \texttt{PlotPoints -> 100}\\ &\texttt{]} \end{aligned}\end{equation*}

媒介変数による3次元プロットは、

$\displaystyle \texttt{ParametricPlot3D[\{Cos[t]\;(3+Cos[u]), Sin[t]\;(3+Cos[u]), Sin[u]\}, \{t,0,2$\pi$\}, \{u,0,2$\pi$\}]}$    

のようにする。

その他、濃淡プロットや等高線プロットもできるので、各自、必要に応じて勉 強するのが良いだろう。

5.4 方程式

Mathematicaでの方程式の解き方は、いろいろある。ここでは、Sloveを用いた 連立方程式とNDSolveを用いた微分方程式の計算方法を示す。

5.4.1 連立方程式

連立方程式は、Solveコマンドで計算できる。例えば、

$\displaystyle \texttt{Solve[\{x+2y==3,4x+5y==6\},\{x,y\}]}$    

のようにする。これは、 となっている。

5.4.2 常微分方程式

次は、常微分方程式の計算方法を示す。とくべき常微分方程式は

$\displaystyle \left\{ \begin{aligned}&\frac{d^2x}{dt^2}+x=\sin t\\ &\frac{dx}{dt}=0\quad(t=0)\\ &x=0\quad(t=0) \end{aligned} \right.$

とする。これは、強制振動の方程式である。この系の固有振動数は、 $ \omega_0=1$である。 そして、外力の角振動数も$ \omega=1$となって、共振している。

Mathematicaで数値計算して解くには、

\begin{equation*}\begin{aligned}&\texttt{result=NDSolve[}\\ &\qquad\texttt{\{x''...
...x[t] /. result;}\\ &\texttt{Plot[f[t],\{t,0,500\}]} \end{aligned}\end{equation*}

とする。ここで、使われているコマンドの内容は、次の通りである。 さあ、実行してみよう。どのような解が得られるか?。次に、外力の振動数を少し変化さ せた場合どのようになるか、調べよ。

先ほどのコマンドは、パレットを用いて

\begin{equation*}\begin{aligned}&\texttt{result=NDSolve[}\\ &\qquad\texttt{\{$\p...
...x[t] /. result;}\\ &\texttt{Plot[f[t],\{t,0,500\}]} \end{aligned}\end{equation*}

としても良い。この方が、式の内容が分かりやすい。パレットを使って、数学 で使う表記にした方が、ミスが少ないし、後で内容を再考しやすい。

C言語などで、プログラムを作成して計算することを考えると、いか にMathematicaが簡単かが分かるであろう。

5.5 その他

波形を定義して、音を鳴らしたり、画像処理もできる。ここでは、割愛するので、興味が ある人は、自分で学習して欲しい。
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年10月13日


no counter