まずは,円周率
の値を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が簡単
かが分かるであろう.
任意の波形の音を出すこともできる.例えば,音階のラの音--440[Hz]--は
とする.これで,440[Hz]の
波の音が5秒間鳴る.
- [練習1]
- 440[Hz]と441[Hz]の音を重ね合わせて,1[Hz]のうなりを聞いてみよ
う.
Mathematicaでは画像処理もできる.ここでは,割愛するので,興味がある人は,自分で
学習して欲しい.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成18年9月4日