文中

-->

という矢印は、私が勝手に決めた「左の入力に対し、右の出力を得る」という記号。

link *

基本 *

特殊文字 *

[esc] ... [esc] と、エスケープキーを挟んでタイプすると特殊文字が表示される。詳しくはエイリアス参照。

ii虚数単位
ee自然対数
p円周率
pd偏微分
inf無限大
int積分記号
sum総和
hbエイチスラッシュ (Dirac定数)
アルファベット各種ギリシャ文字

特殊表記 *

[CTRL]を押しながら....

6 or ^累乗
/分数
2根号(√)
_ (underbar)下添字

計算させる *

変数 *

等号で結んで宣言する。

x=3;x^2  -->  9

使用後、クリアしないと代数演算ができない。

Clear[x]; 2 x  -->  2 x

いちいちこうするのは面倒なので、その式限りの代入だけがしたいなら変換規則を使う。

1 + x^2 + x^4 + x^5 /. x -> 3  --> 334

これなら、クリアしなくても直後から代数演算ができる。

方程式 *

Solve[x^2 + 3 x + 2 == 0, x]  -->  {{x -> -2}, {x -> -1}}
NSolve[x^2 + 5x + 3 == 0, x]  -->  {{x -> -4.30278}, {x -> -0.697224}}     (数値的)

複数の変数を持っていてもOK

Solve[{x^2 - k^2 == 0, y^2 == x^2}, {x, y}]  -->  {{x -> -k, y -> -k}, {x -> -k, y -> k}, {x -> k, y -> -k}, {x -> k, y -> k}}

関数 *

定義は、変数と等号に注意

f[x_] := (1 + x)^2

ベクトル *

内積はドット

{1, 2, 3} . {a, b, c}  -->  a + 2 b + 3 c

ドットが無ければ要素同士の乗算

{1, 2, 3} {a, b, c}  -->  {a, 2 b, 3 c}

行列はリストのリストで書く

Inverse[{{1, 2}, {2, 3}}]  -->  {{-3, 2}, {2, -1}}
Eigenvalues[{{2, 0}, {1, 6}}]  -->  {6, 2}

微積 *

微分 *

D[Sin[x], x]  --> Cos[x]
D[Sin[x], {x,2}]  --> -Sin[x]    (二階微分)

積分 *

Integrate[Sin[x], x]  -->  -Cos[x]   (不定積分)
Integrate[Sin[x], {x, 0, 1}]  -->  1 - Cos[1]     (定積分)
NIntegrate[Sin[x], {x, 0, 1}]  -->  0.459698  (数値積分)

微分方程式 *

DSolve[{y'[x] == y[x], y[0] == 1}, y[x], x]  -->  {{y[x] -> e^x}}

その他 *

N *

数値近似を与える。

N[100!] --> 9.33262 x 10e157

桁の指定もできる。

N[100!,2] --> 9.3 x 10e157

Expand, Factor *

展開と因数分解

Expand[(a + b) (c + d)]  -->  a c + b c + a d + b d
Factor[a c + b c + a d + b d]  -->  (a + b) (c + d)

Simplify, FullSimplify *

式の形を簡単にする。"Full"の方が強力だが時間がかかる。

Simplify[Cos[x]^4 - Sin[x]^4]  -->  Cos[2 x]

DiracDelta *

そのまんま、DiracのDelta関数。

描画させる *

Plot, Plot3D *

プロットさせる。

Plot[Sin[Exp[x]], {x, 0, 4}];
Plot3D[Cos[x] Sin[y], {x, 0, 2 Pi}, {y, 0, 2 Pi}];

複数の関数をプロットしたい場合はリストにすればOK。

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

媒介変数を使う場合はこれと似ている。

ParametricPlot[{2 Sin[t], Cos[t]}, {t, 0, 2 Pi}]

行列 *

リストでなく、行列の形で表示する。

MatrixForm[A]

プログラミング *

繰り返し *

Do[Print[n^2], {n, 0, 10}]

Do文の中身はデフォルトで出力されないので、Print文で囲む

LiveGraphic3D *

LiveGraphic3Dにて公開されています。MathematicaのGraphics3Dオブジェクトを Javaアプレットを使ってマウスでグリグリ動かせるようにする優れモノです。つまり、あらかじめネタを作成しておけばWebブラウザでグリグリが見られてしまいます。当然、Javaを有効にしておかなくてはなりません。

面白そうだったので、球面調和関数で試してみました

操作 *

細かいグリグリで色々できます。

ドラッグ ................. 回転
shift + 水平ドラッグ ..... 1点を中心に回転
shift + 垂直ドラッグ ..... 拡大、縮小
ctrl + ドラッグ .......... フォーカス位置変更
右ボタン + 垂直ドラッグ .. 部品除去
s ........................ ステレオ図

拡大したものは重くなります。極度の拡大に注意です。調子コイて速い動作を行うと固まります。

作成手順 *

とりあえず、(x,y,z)の角度依存性を定めておきます。

x[theta_,phi_] := Sin[theta]Cos[phi]
y[theta_,phi_] := Sin[theta]Sin[phi]
z[theta_,phi_] := Cos[theta]

簡単のために球面調和関数を定義しなおしておきます。

sp00[theta_, phi_] := SphericalHarmonicY[0, 0, theta, phi]

以下のようにすれば図が見られます。

gr00 = First[
      ParametricPlot3D[
         {Abs[sp00[theta, phi]] x[theta,phi],
          Abs[sp00[theta, phi]] y[theta,phi],
          Abs[sp00[theta, phi]] z[theta,phi]},
        {theta, 0, Pi}, {phi, 0, 2 Pi}]
      ];

軸もあった方が参考になるので、以下のようにします。文字もつけます。

xline = Graphics3D[Line[{{-1, 0, 0}, {1, 0, 0}}]];
yline = Graphics3D[Line[{{0, -1, 0}, {0, 1, 0}}]];
zline = Graphics3D[Line[{{0, 0, -1}, {0, 0, 1}}]];
xnote = Graphics3D[Text[StyleForm["x",FontSize -> 20, FontWeight -> "Bold"],{1,0,0}]];
ynote = Graphics3D[Text[StyleForm["y",FontSize -> 20, FontWeight -> "Bold"],{0,1,0}]];
znote = Graphics3D[Text[StyleForm["z",FontSize -> 20, FontWeight -> "Bold"],{0,0,1}]]

そして、

Show[
  Graphics3D[gr00,
LightSources -> {{{1, 1, 1}, GrayLevel[1]},{{-1, -1,-1}, RGBColor[1,1,0]}}],
xline, yline, zline, xnote, ynote, znote, Boxed -> False
  ]

とすると、軸も一緒に表示できます。物体の光の当たり方ですが、光源がひとつだとちょっと淋しいので、色違いのふたつの光源を逆方向に設置しました。これで見てくれを確かめた後に、HTMLに取り込む作業をします。outputの番号を確かめ、

InputForm[%番号]

とすると、長い文字列が出てくるので、Graphics3D以下をテキストで保存します。例えばファイル名を"test.m"などとすると、

<HTML>
<APPLET ARCHIVE=&quot;live.jar&quot; CODE=&quot;Live.class&quot; WIDTH=300 HEIGHT=300 ALIGN=LEFT>
<PARAM NAME=BGCOLOR VALUE=#FFFFFF>
<PARAM NAME=MAGNIFICATION VALUE=2>
<PARAM NAME=INPUT_FILE VALUE="test.m">
</APPLET>
</HTML>

というHTMLを、test.mと同じディレクトリに作ります。そこに、本家のサイトから入手できる"live.jar"も入れておきます。これで、そのHTMLを開いたらグリグリができるはずです。