Memo ≫
Mathematica
Contents
[実行中]で動作が止まってしまった時
「ヘルプ」の「インターネット接続...」を開き、「インターネット接続性の検証」をクリックしてみる。
変数の定義の初期化
変数の定義を初期化したい場合は「Clear」を使う。
Clear[lambda]
とすれば、変数「lambda」の定義を初期化できる。
べき級数の展開
x=x0近傍でのn次までの展開は
Series[f,{x,x0,n}]
Doループ
Do[f,{i,i1,in},{j,j1,jn}]
iがi1からin、jがj1からjnまでのループをまわし、式fを評価する。
iがi1からin、jがj1からjnまでのループをまわし、式fを評価する。
行列・逆行列
行列
行列の定義
2×2の行列の場合
2×2の行列の場合
m={{a,b},{c,d}}
行列式
行列mの行列式を求めるには、
Det[m]
逆行列
行列mの逆行列を求めるには、
Inverse[m]
もとの行列との積は単位行列になっているはず。
m . Inverse[m]
分数の計算を途中でやめてしまった場合
Together[%]
Plot
ContourPlot
等高線プロット
関数f(x,y)の等高線を描くには
関数f(x,y)の等高線を描くには
ContourPlot[f,{x,x1,x2},{y,y1,y2},PlotLegends → Automatic]
PlotLegendsで凡例を表示。
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を行える。
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 | ランダムサーチ法。制約条件下でも使用可能。 |
計算の高速化
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]を計算で用いれば良い。
(例) 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"] |
パッケージ・ライブラリまとめ
FeynCalc | 場の理論の計算に有用 |
GREAT.m | 一般相対性理論の計算に有用 |
(updated on 2016.11.23)
FeynCalc
場の理論の計算で有用なmathematicaのライブラリ。
Installation
mathemtaica上で
Import["http://www.feyncalc.org/install.m"]
を実行。
Needs["FeynCalc`"]
を実行すれば、パッケージがロードされ使えるようになる。
Memo ≫
Mathematica