[ English Page is HERE. ]
Igor のマクロをプレーンテキストで提供しています。 コピー&ペーストで Igor のプロシージャウィンドウにコピーすればすぐに使えます。
誤差補関数 y=erfc(x) の逆関数 x=erfci(y) を計算するマクロです。
Poppe & Wijers のアルゴリズムを使って
「規格化された複素誤差補関数」(Faddeeva 関数):
wofz(z)=exp(-z*z)*erfc(-i*z) |
Voigt 関数
fVoigtPoppeWijers(x,GamL,GamG) |
Faddeeva 関数
wofz(z) |
参考文献は [G.P.M.Poppe & C.M.J.Wijers, ACM Trans.Math.Software, 16, 38-46 (1990)] です。
任意の標本点数の Gauss-Legendre 積分の横軸と重みを生成するマクロです。
マクロ GauLegInit(n0) を実行すると,標本点 n0 までの横軸と重みデータの ウェーブ xGL[0..n0*(n0+1)/2-1], wGL[0..n0*(n0+1)/2-1] が生成されます。
標本点数 n (n <= n0) の数値積分について i 番目の要素を参照したい場合,
xGL[n*(n-1)/2+i-1], wGL[n*(n-1)/2+i-1] |
コンパイルに失敗した時は,コマンドラインから "make xGL, wGL" と入力するなどして, ダミーのウェーブを作ってみてください。
例えば,関数 f(x) の alpha から beta の範囲の積分値を求めたいとき,
ans = 0;
i = 0;
do
x = alpha + (beta-alpha) * xGL[n*(n-1)/2+i];
ans = ans + wGL[n*(n-1)/2+i] * f(x);
i = i + 1;
while (i < n);
ans = (beta - alpha) * ans;
とすれば, n-点 Gauss-Legendre 積分の結果が得られます。
任意の標本点数の Gauss-Hermite 積分の横軸と重みを生成するマクロです。
マクロ GauHerInit(n0) を実行すると,標本点 n0 までの横軸と重みデータの ウェーブ xGH[0..n0*(n0+1)/2-1], wGH[0..n0*(n0+1)/2-1] が生成されます。
多次元の滑降型シンプレックス法で任意の関数の最小化をするアルゴリズムです。 (2012年4月17日掲載)
Thorkildsen.txt
Thorkildsen & Larsen の形式と Gauss-Legendre 積分で高速に円柱の透過率(吸収補正係数の逆数)を計算するアルゴリズムです。“International Table for Crystallography” に記載されている方法と比べて 1000 倍以上高速に計算できます。
(2012年4月17日掲載)
AbsorptionCorrection.txt
円柱と球の透過率を計算するマクロをまとめました。
(2012年4月27日掲載)
PanelCromerLiberman.txt
Jan Ilavsky により作成された “Cromer Liberman macros for Igor Pro for atomic form factors” を利用するための GUI インターフェス(コントロールパネル)です。
波長または光子エネルギーを入力すれば,質量吸収係数 μ / ρ と分散補正の値 Δf1, Δf2 が簡単に参照できます。
注意:プロシージャウィンドウの名称は “PanelCromerLiberman” とは異なるもの(例えば “PanelCromerLibermanProc” など)にしてください。
(2012年5月13日掲載)
数値と誤差値を入力して,有効な数字のみを括弧内の誤差つきで表現した文字列を生成する文字列型関数です。
(2007年9月21日改訂)
実行例を以下に示します。
Igor での記述 | 結果 |
---|---|
niceNum2Str(15345.5413, 235.1543) | 15300(200) |
niceNum2Str(15345.5413, 134.1543) | 15350(130) |
niceNum2Str(15345.5413, 1.1543) | 15345.5(12) |
niceNum2Str(15345.5413, 0.0543) | 15345.54(5) |
niceNum2Str(15345.5413, 0.0143) | 15345.541(14) |
2012年5月13日修正