Memo ≫ Mathematica

Memo Mathematica

Contents

[実行中]で動作が止まってしまった時

「ヘルプ」の「インターネット接続...」を開き、「インターネット接続性の検証」をクリックしてみる。

変数の定義の初期化

変数の定義を初期化したい場合は「Clear」を使う。
Clear[lambda]
とすれば、変数「lambda」の定義を初期化できる。
Back to Top

べき級数の展開

x=x0近傍でのn次までの展開は
Series[f,{x,x0,n}]
Back to Top

Doループ

Do[f,{i,i1,in},{j,j1,jn}]
iがi1からin、jがj1からjnまでのループをまわし、式fを評価する。

Back to Top

行列・逆行列

行列

行列の定義
2×2の行列の場合
m={{a,b},{c,d}}

行列式

行列mの行列式を求めるには、
Det[m]

逆行列

行列mの逆行列を求めるには、
Inverse[m]
もとの行列との積は単位行列になっているはず。
m . Inverse[m]
分数の計算を途中でやめてしまった場合
Together[%]
Back to Top

Plot

ContourPlot

等高線プロット
関数f(x,y)の等高線を描くには
ContourPlot[f,{x,x1,x2},{y,y1,y2},PlotLegends → Automatic]
PlotLegendsで凡例を表示。
Back to Top

Fitting

データ点 data={{a1,b1},{a2,b2,},...}が得られているとき、「Fit」または「FindFit」をe使うことによって、関数Fittingができる。Fittingには最小二乗法を使っている。

「Fit」は

Fit[data,{func1,func2,...},x]
とすると、dataの値にもっとも最適な関数をfunc1,func2,...の線形結合として求める。例えば、2次関数でFittingする場合、
Fit[data,{1,x,x^2},x]
とすると、「a+bx+cx^2」という形でFittingしてくれる。

「FindFit」は、パラメータ{par1,par2,par3...}を含む関数系function_formを使って

FindFit[data,function_form,{par1,par2,par3...},x]
とすると、function_formがdataの値にもっとも適するパラメータセット{par1,par2,par3...}の値を求めてくれる。例えば、2次関数a+bx+cx^2でFittingしたい場合、
FindFit[data,a+bx+cx^2,{a,b,c},x]
とすると、最適な{a,b,c}の値を求める。結果は「Fit」と一致する。「FindFit」特徴は、いかなる関数でもFittingできるところにある。例えば、a*x*Log[b+c*x]という関数系でもFittingを行える。

Back to Top

Minimization·Optimization

組み込み処理まとめ

FindMinimum Local Minimumを探す。FindMinimum[{f(x),条件}, {x,xの初期値}, Method -> "使いたい方法"]と記述すると、関数f(x)の最小値をある条件下で、xの初期値から指定した方法を用いて探す。
(例) FindMinimum[{(x - 2)^2+ 4,x>0}, {x,1}, Method -> "ConjugateGradient"]でConjugate Gradient法を用いて関数(x - 2)^2+ 4の最小値を、初期値x=1、x>0の条件下で探す。
Minimize Global Minimumを探す。FindMinimumより計算時間がかかる。
(例) Minimize[{(x-2)^2+4,x≥0} ,{x} ]
NMinimize Global Minimumを数値的に探す努力をする。FindMinimumより計算時間がかかる。 制約条件を加えることが可能。また、探索をはじめる初期領域を{x,-1,1}という風に指定することができる。ただ、得られる結果は指定した初期領域を出ることもある。
(例) NMinimize[{(x-2)^2+4,x≥0} ,{x} ]

FindMinimum

使えるMethodの例

InteriorPoint Interior Point (内分点) 法。制約条件下でも使用可。
ConjugateGradient Conjugate Gradient (共役勾配) 法。制約条件下では使用不可。
LevenbergMarquardt Levenberg Marquardt 法。関数が二乗和で与えられている必要がある。 制約条件下では使用不可。

NMinimize

使えるMethodの例

NelderMead Nelder-Mead法。制約条件下でも使用可能。
DifferentialEvolution 微分進化法。制約条件下でも使用可能。計算コストは高いが、Local minimumの多い問題でも有効。
SimulatedAnnealing 焼きなまし法。制約条件下でも使用可能。
RandomSearch ランダムサーチ法。制約条件下でも使用可能。

Back to Top

計算の高速化

Compile

計算に用いる関数を予めコンパイルしておけば計算の高速化を図れる。
(例) f = Compile[{{x, _Real, 2}}, Sum[(x[n] - 2)^2, {n, 1, 2}] + 4]
Compileを用いて変数を2つ伴う関数(x[1]-2)^2+(x[2]-2)^2+4を コンパイルする。 そのとき、{x, _Real, 2}はxが「二次元」の配列であり、 実数であることを示している。_Realの部分は整数なら_Integer、複素数なら_Complexを指定できる。{x}や{{x1},{x2},...}、 {{x1, _Real, 2},{x2, _Real, 2},...}というのも可。
Compileを実行した後は、f[x]を計算で用いれば良い。

Options

CompilationTarget -> "C" Cコードを生成する。さらなる計算の高速化を図れる。
(例) f = Compile[{{x, _Real, 2}}, Sum[(x[n] - 2)^2, {n, 1, 2}] + 4, CompilationTarget -> "C"]

Back to Top

パッケージ・ライブラリまとめ

FeynCalc 場の理論の計算に有用
GREAT.m 一般相対性理論の計算に有用
(updated on 2016.11.23)
Back to Top

FeynCalc

場の理論の計算で有用なmathematicaのライブラリ。

Installation

mathemtaica上で
Import["http://www.feyncalc.org/install.m"]
を実行。
Needs["FeynCalc`"]
を実行すれば、パッケージがロードされ使えるようになる。
Back to Top
Memo Mathematica