Announce

PukiWiki contents have been moved into SONOTS Plugin (20070703)

mathematica

Mathematicaのメモ

Table of Contents

基礎

http://bach.istc.kobe-u.ac.jp/mma/nyumon/

  • 行末に ; で結果を出力しない。
  • (* *) でコメントアウト
  • 関数定義 f[x_,n_] := x^n;
  • 式の少数値表示 N[]
  • 式の単純化 Simplify[]
  • 式の展開 Expand [ (a + x^2)^2 ]
  • 積分 Integral[f[x],{x,0,n}]
  • 微分 D[ f[x], x ]
  • 和 Sum[f[x],{x,0,n]}
  • 文字出力 Print["value =", 10]
  • 定義のクリア Clear[x]

ループ

For[i=1,i<4,i=i+1,
 Expression;
]

確率統計

  • Binomial[n,x] で nCx
  • 順列はないので n!/(n-x)!

NormalDistribution

Univariate

NormalDist[x_, mu_, sigma2_] := 
 1/Sqrt[2 \[Pi] sigma2] Exp[-1/2 (x - mu)^2/ sigma2]
PDF[NormalDistribution[mu,sigma],x]

Cumultive function of Normal Distribution

\!\(Phi[t_]\  = \ 1/\@\(2\ π\) \(∫\_\(-∞\)\%t \[ExponentialE]^{\(-
        x^2\)/2} \[DifferentialD]x\)\)

Multivariate

MultiNormalDist[X_, Mu_, Sigma_] := 
 1/((2 Pi)^(Length[X]/2) Det[Sigma]^(1/2)) Exp[-1/2 Transpose[X - Mu] . Inverse[Sigma].(X - Mu)]
X = {{1}, {2}, {3}}; Mu = {{1}, {1}, {1}}; Sigma = {{1, 0, 0}, {0, 1, 
   0}, {0, 0, 1}};
MultiNormalDist[X, Mu, Sigma]

方程式を解く

Solve[ x^2 -2 x + 1 == 0, x]
FindRoot[Sin[x] == Log[x], {x, 1}]

ベクトル、行列

A = {{a11,a12,a13},{a21,a22,a23}}; MatrixForm[A]
b = {{b1},{b2},{b3}}; MatrixForm[b] (* vector *)
b = Transpose[{{b1, b2, b3}}]; MatrixForm[b] (* equivalent vector *)
C = A . b (* multiplication *)
C = Transpose[b] . b (* innner product *)
C[[1,1]] (* element *)
C[[1]] (* first row *)

Functions http://reference.wolfram.com/mathematica/guide/MatrixOperations.html

プロット

ListPlot[data, PlotRange -> {{0, 10}, {0, 0.35001}}, PlotJoined -> True, AxesLabel -> {"x","y"}] data が一次元配列の場合は、 x 軸が 1,2,3 ... のようになる。 PlotStyle -> RGBColor[0, 0.7, 0] のようなオプションで線の色を変えられる。背景色は Background

Plot[f[x],{x, 0, 10}, PlotRange -> {{0, 10}, {0, 1}}, Frame -> True, FrameLabel -> {"x","y"}] Frame をつけないと、FrameLabel つけられないのか・・・ DisplayFunction -> Identity で表示をしないようにする。その後、 Show[fig1,fig2,DisplayFunction -> $DisplayFunction] のようにしてグラフの合成したりする。

Plot の合成

Show[%,%%]
* %は1つ前のグラフィックを表す。
* %%は2つ前のグラフィックを表す。 

Text["text",{x,y}] でテキストかける。Graphics オブジェクト。 Show で合成してもいいが、Prolog -> {Text[],Line[]} のように Prolog オプションを使えば、 Plot など Graphics 関数中で書くこともできる。 TextStyle -> {FontFamily -> "Courier"} Text["x", {x, -0.03}, TextStyle -> {FontFamily -> "Courier", FontSize -> 10}]

Display["test.eps",%,"EPS"] ( % は直前の式という意味。直前に Plot してここに graphics オブジェクトをいれる。) として eps ファイル出力

x = var みたいな直線を引こうとおもったら、 ParametricPlot[{var, t}, {t, 0, 1} か Graphic[Line[{{var,0},{var,1}}] か

Tex

TexFrom[Mathematicaの数式] TexSave["aho.tex"]