まずは、円周率
の値を1000桁計算してみよう。入力ウインドウに
と入れて、[Shift]+[Enter]と計算を実行させてみよう。すると、1000桁の円
周率が打ち出されたはずである。ここで使ったコマンドはNで、N[計算式,桁数]
と使う。
次に、簡単な分数の計算
を行う。計算の結果は分数で、正確な値が得られる。これは非常に驚くべきこ
とで、CやFORTRANでは不可能である。正確な値ではなく、近似値が欲しい場合
は、
とすればよい。これで、1000桁の近似値が得られる。
もう少し便利な電卓としての使い方は、
である。1行目と2行目のセミコロン`;`は、C言語の行の区切りではない。その
行の計算結果を出力しないという意味である。計算結果である3行目は出力さ
せたいため、セミコロンが無い。3行目を
と書き換えれば、整理した結果が得られる。言うまでも無いが、3行目を
と書き換えれば、近似値を求めることができる。
複素数の計算も問題なくできる。複素数が関係する最も美しい式
を計算してみよう。ネピア数
と虚数単位
は、パレットから選択する必要
がある。計算の結果は、-1になるはずである。
線形代数の計算も簡単にできる。例えば、
でベクトルAとBの内積と外積が計算できる。固有値や固有ベクトル、行列式の
計算もできる。行列は、メニューの入力
表・行列・パレッ
トの作成を用いて入力する。次の
のようにすれば行列の計算ができる。
微分は、Dというコマンドを用いても、パレットから
を使っても可
能である。次の例のように、
できる。高次の微分は、
のようにする。
の
ような偏微分は
とすればよい。また、
のようなこともできる。
不定積分は、コマンドIntegrate、あるいはパレットから
で可能である。
たとえば、
のようである。次のような複雑な積分
も可能である。結果は楕円関数になっている。積分記号も根号もパレットから
選択する。
定積分は、
のようにしてできる。
数値積分は、
のように、NIntegrateコマンドを使う。
通常のプログラミング言語で計算できるのは、この数値積分だけである。
Mathematicaでは不定積分や定積分の計算が可能である。これは、驚くべきこ
とである。
グラフィックの機能は豊富で、通常必要なグラフはほとんどMathematicaで書
くことができる。C言語などの計算結果をMathematicaで出力することも行われ
ており、グラフ作成が非常に容易である。
まずは、非常に単純な三角関数を例にして、グラフの書き方を示す。最初の例
は、
である。
計算結果をグラフにする場合は、
のようにする。計算結果である微分を関数と定義して、プロットしている。関
数を定義するときは、変数の後に下線をつける。
媒介変数を使ったプロットは、
のようにする。これは、リサジューの図形である。
グラフの形に不満があれば、オプションを使って、整形できる。論文などに計
算結果のグラフを貼り付ける場合、オプションを駆使して、見栄えを整えるべ
きである。
3次元グラフは
と書けばよい。このままだと少し分かり難いので、オプションをつけるて分か
り易くできる。
媒介変数による3次元プロットは、
のようにする。
その他、濃淡プロットや等高線プロットもできるので、各自、必要に応じて勉
強するのが良いだろう。
Mathematicaでの方程式の解き方は、いろいろある。ここでは、Sloveを用いた
連立方程式とNDSolveを用いた微分方程式の計算方法を示す。
連立方程式は、Solveコマンドで計算できる。例えば、
のようにする。これは、
- Solveは、方程式を解くためのコマンドである。引数は、以下の通りで
ある。
- 第1引数は、解くべき方程式である。これが複数ある場合、括弧
{}で囲んで、リストにする。
- 第2引数は、解を求めるべき変数である。この場合も、複数ある場合、括弧
{}で囲んで、リストにする。
となっている。
次は、常微分方程式の計算方法を示す。とくべき常微分方程式は
とする。これは、強制振動の方程式である。この系の固有振動数は、
である。
そして、外力の角振動数も
となって、共振している。
Mathematicaで数値計算して解くには、
とする。ここで、使われているコマンドの内容は、次の通りである。
- NDSolveコマンドで、微分方程式を数値計算する。計算された結果は、
solveに代入される。このコマンドの引数は、
- 第1引数は、解くべき方程式である。初期条件も入れて、連立微分方程式
の形にし、リストで記述する。
- 第2引数は解くべき関数である。
- 第3引数は、独立変数とその範囲をリストで記述する。
である。
- 次にコマンド/.で、計算結果resultの関数x[t]を
f[t]に置き換えている。
- Plotコマンドで、計算結果をグラフにしている。このコマンドの引数は、
- 第1引数は、プロットする関数である。
- 第2引数は、関数の独立変数とプロットの範囲である。
である。
さあ、実行してみよう。どのような解が得られるか?。次に、外力の振動数を少し変化さ
せた場合どのようになるか、調べよ。
先ほどのコマンドは、パレットを用いて
としても良い。この方が、式の内容が分かりやすい。パレットを使って、数学
で使う表記にした方が、ミスが少ないし、後で内容を再考しやすい。
C言語などで、プログラムを作成して計算することを考えると、いか
にMathematicaが簡単かが分かるであろう。
波形を定義して、音を鳴らしたり、画像処理もできる。ここでは、割愛するので、興味が
ある人は、自分で学習して欲しい。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年10月13日