GMTMATH

名前
書式
説明
オプション
アスキー形式の精度
注意

注意
文献
関連事項

名前

gmtmath − データテーブルに対する逆ポーランド記法計算機

書式

gmtmath [ −At_f(t).d ] [ −Ccols ] [ −Fcols ] [ −H[i][nrec] ] [ −I ] [ −M[i|o][flag] ] [ −Nn_col/t_col ] [ −Q ] [ −S[f|l] ] [ −Tt_min/t_max/t_inc|tfile ] [ −V ] [ −b[i|o][s|S|d|D][ncol] ] [ −f[i|o]colinfo ] operand [ operand ] OPERATOR [ operand ] OPERATOR ... = [ outfile ]

説明

gmtmath は逆ポーランド記法 (RPN) 構文(例えばヒューレット・パッカードの 計算方式) を用いて 1 つ以上のテーブルデータファイルや定数に対して加減乗 除 等の計算を実行する。そのためどんなに複雑な式でも計算することができる 。最終結果は出力ファイル[又は標準出力]に書き出される。 2 つのデータテー ブ ルがスタックされるとき、ファイル A の各要素がファイル B の対応する要 素により変更される。しかし、 1 つの演算数だけを必要とする演算子もあ る( 下を参照)。式の中にデータテーブルが使われていないときは、データの領域を 示すためにオプション −T, −N (及び随意で −b )が設定されている場合があ る 。 STDIN が与えられたときは、あたかもその内容がコマンドライン上で与えら れたかのように<標準入力>が読み込まれてスタックに置かれる。デフォルト で は 、「時刻」列を除く全ての列に演算が行われるが、これを変更することもで きる( −C 参照)。

operand

もし operand をファイルとして開くことができれば、アスキー(又 は バ イナリ、 −bi 参照)のテーブルデータファイルとして読み込まれる 。もしファイルでなければ、数値定数又は特別な記号(下を参照)で あ ると解釈される。特別な記述 STDIN は標準入力が読み込まれてスタッ クに置かれることを意味する。 STDIN は必要ならば 1 回より多く 現 れても良い。

outfile は最終結果を持つテーブルデータファイルである。

与えられないときは出力は標準出力に送られる。

OPERATORS

以下の演算子の中から選ぶこと。
演算子 引き数の数 戻り値

ABS 1 abs (A).
ACOS
1 acos (A).
ACOSH
1 acosh (A).
ADD
2 A + B.
AND
2 A 及び B が NaN なら NaN, それ以外で A が NaN なら B, それ以外なら A.
ASIN
1 asin (A).
ASINH
1 asinh (A).
ATAN
1 atan (A).
ATAN2
2 atan2 (A, B).
ATANH
1 atanh (A).
BEI
1 bei (A).
BER
1 ber (A).
CEIL
1 ceil (A) (最小の整数 >= A).
CHICRIT
2 カイ自乗分布の臨界値, ここで alpha = A, n = B.
CHIDIST
2 カイ自乗分布 P(chi2,nu), ここで chi2 = A, nu = B.
CORRCOEFF
2 相関係数 r(A, B).
COL
1 列 A をスタックに置く.
COS
1 cos (A) (A はラジアン).
COSD
1 cos (A) (A は度).
COSH
1 cosh (A).
CPOISS
2 累積ポアソン分布 F(x,lambda), ここで x = A, lambda = B.
D2DT2
1 d^2(A)/dt^2 2 階微分.
D2R
1 度をラジアンに変換.
DILOG
1 dilog (A).
DIV
2 A / B.
DDT
1 d(A)/dt 1 階微分.
DUP
1 A の複製をスタックに置く.
ERF
1 エラー関数 erf (A).
ERFC
1 相補エラー関数 erfc (A).
ERFINV
1 A の逆エラー関数.
EQ
2 A == B なら 1, それ以外なら 0.
EXCH
2 スタック上の A と B を交換.
EXP
1 exp (A).
FCRIT
3 F 分布の臨界値, ここで alpha = A, n1 = B, n2 = C.
FDIST
3 F 分布 Q(F,n1,n2), ここで F = A, n1 = B, n2 = C.
FLIPUD
1 各列の順序を逆にする.
FLOOR
1 floor (A) (最大の整数 <= A).
FMOD
2 A % B (剰余).
GE
2 A >= B なら 1, それ以外なら 0.
GT
2 A > B なら 1, それ以外なら 0.
HYPOT
2 hypot (A, B) = sqrt (A*A + B*B).
I0
1 A の変形ベッセル関数 (第 1 種, 0 次).
I1
1 A の変形ベッセル関数 (第 1 種, 1 次).
IN
2 A の変形ベッセル関数 (第 1 種, B 次).
INT
1 A の数値積分.
INV
1 1 / A.
ISNAN
1 A == NaN なら 1, それ以外なら 0.
J0
1 A のベッセル関数 (第 1 種, 0 次).
J1
1 A のベッセル関数 (第 1 種, 1 次).
K0
1 A の変形ケルビン関数 (第 2 種, 0 次).
K1
1 A の変形ケルビン関数 (第 2 種, 1 次).
KN
2 A の変形ケルビン関数 (第 2 種, B 次).
KEI
1 kei (A).
KER
1 ker (A).
LE
2 A <= B なら 1, それ以外なら 0.
LMSSCL
1 A の LMS スケール推定 (LMS STD).
LOG
1 log (A) (自然対数).
LOG10
1 log10 (A) (底 10).
LOG1P
1 log (1+A) (小さな A に対して正確).
LOG2
1 log2 (A) (底 2).
LOWER
1 A の最低(最小)値.
LRAND
2 平均 A で標準偏差 B のラプラス乱雑音.
LSQFIT
1 現在のテーブルを [A | b] とすると最小自乗解 x = A \ b を返す.
LT
2 A < B なら 1, それ以外なら 0.
MAD
1 A の中央絶対偏差 (L1 STD).
MAX
2 A と B の最大値.
MEAN
1 A の平均値.
MED
1 A の中央値.
MIN
2 A と B の最小値.
MODE
1 A の最頻値(最小自乗中央推定).
MUL
2 A * B.
NAN
2 A == B なら NaN, それ以外なら A.
NEG
1 -A.
NEQ
2 A != B なら 1, それ以外なら 0.
NRAND
2 平均 A で標準偏差 B の正の乱数.
OR
2 A 又は B == NaN なら NaN, それ以外なら A.
PLM
3 同伴ルジャンドル多項式 P(-1<A<+1) B 階 C 次.
POP
1 スタックから最上位の要素を削除.
POW
2 A ^ B.
R2
2 R2 = A^2 + B^2.
R2D
1 ラジアンを度に変換.
RAND
2 A と B の間の一様な乱数.
RINT
1 rint (A) (最も近い整数).
ROOTS
2 列 A を f(t) = 0 として扱いその根を返す
ROTT
2 A を(定数の)シフト B により t 方向に回転す る.
SIGN
1 A の符号 (+1 又は -1).
SIN
1 sin (A) (A はラジアン).
SINC
1 sinc (A) (sin (pi*A)/(pi*A)).
SIND
1 sin (A) (A は度).
SINH
1 sinh (A).
SQRT
1 sqrt (A).
STD
1 A の標準偏差.
STEP
1 ヘビサイド階段関数 H(A).
STEPT
1 ヘビサイド階段関数 H(t-A).
SUB
2 A - B.
SUM
1 A の累積和.
TAN
1 tan (A) (A はラジアン).
TAND
1 tan (A) (A は度).
TANH
1 tanh (A).
TN
2 B 階のチェビシェフ多項式 Tn(-1<A<+1).
TCRIT
2 スチューデント t 分布の臨界値, ここで alpha = A, n = B.
TDIST
2 スチューデントの t 分布 A(t,n), ここで t = A, n = B.
UPPER
1 A の最高(最大)値.
XOR
2 A == NaN なら B, それ以外なら A.
Y0
1 A のベッセル関数(第 2 種, 0 次).
Y1
1 A のベッセル関数(第 2 種, 1 次).
YN
2 A のベッセル関数(第 2 種, B 次).
ZCRIT
1 正規分布の臨界値, ここで alpha = A.
ZDIST
1 累積正規分布 C(x), ここで x = A.

記号

以下の記号には特別な意味がある。

PI 3.1415926...
E
2.7182818...
T
t 座標のテーブル

オプション

−A

−N を必要とし、 tf(t) のみを含む与えられたファイルの値 によってテーブルを部分的に初期化する。 t は列 t_col に置かれ て いるが、 f(t) は列 n_col - 1 にある( −N を参照)。

−C

次に −C が現れるまでの演算される列を選択する。カンマで区切 られた列を並べること。 1,3-5,7 のような範囲が認められてい る 。 −C (引き数無し) は時刻列を除く全ての列を利用するというデフォル トのアクションに戻す( −N 参照)]。 −Ca は時刻列を含む全ての列 を 選択し、 −Cr は現在の選択の反対にする。

−F

出力の一部にしたい列すなわち範囲のコンマ区切りの一覧を与え る( 0 が最初の列) [デフォルトでは全ての列を出力する]。

−H

入力ファイルにヘッダ行がある時に使う。 ヘ ッ ダ 行 の 数 は .gmtdefaults4 ファイルを編集することにより変更できる。このオプ ションが使われた場合、 GMT のデフォルトではヘッダ行は 1 行で あ る。入力データだけにヘッダ行が必要な場合は −Hi を使うこと [デフ ォルトでは入力データにヘッダ行があればそれも出力される]。

−I

出力の行の順序を時間の昇順から降順に変更する[昇順]。

−M

複数のセグメントからなるファイルであることを意味する。セ グ メ ントは特別な行で区切られる。アスキーファイルでは最初の文字は flag でなければならない [デフォルトは’>’]。バイナリファイルでは 全てのフィールドが NaN で、 −b に明示的に出力する列数を設定しな ければならない。デフォルトでは −M の設定は入力と出力の両方に 適 用される。別々に設定するには −Mi 及び −Mo を使うこと。

−N

列の数と「時刻」変数を含む列の番号を選ぶ。列は 0 から番号付 けされる [2/0] 。

−Q

スカラー計算用の高速モード。 −Ca −N1/0 −T0/0/1 の短縮形。

−S

結果の最初の行だけ報告する[デフォルトは全ての行]。これは 統 計 値(例えば MODE )を計算して、全く同じ値を持つ膨大なレコードの 代わりに 1 つの数字だけ欲しいときに便利である。最後の行だけを得 る には l を、最初の行だけを得るには f [デフォルト]を付けること 。

−T

入力ファイルが与えられないときに必要。「時刻」列( −N 参 照) の最初と最後の点及び等距離のサンプリング間隔の t 座標を設定する 。時刻列が無いときは(データ列のみ)、引き数無しで −T を与える こ と 。 これは −Ca も暗に想定している。代わりに、求める不規則な t 座標を最初の列に含むファイルの名前を与えることもできる。

−V

冗長モードを選択する。標準エラー出力に経過報告を送る[デフォ ルトでは「黙って」実行する]。

−bi

バイナリ入力を選択する。単精度に対しては s を付けること [ デフォルトは d (倍精度)]。大文字の S (又は D) にするとバイト ス ワ ップを行う。随意で、バイナリファイルの列数がこのプログラムで 必要な列数を越えるときは、バイナリファイルの列数 ncol を付け る こと。

−bo

バイナリ出力を選択する。単精度に対しては s を付けること [ デフォルトは d (倍精度)]。大文字の S (又は D) にするとバイト ス ワ ップを行う。随意で、バイナリ出力ファイルの必要な列数 ncol を 付けること [デフォルトは入力と同じ、但し −F を参照]。

アスキー形式の精度

数値データのアスキー出力形式は .gmtdefaults4 ファイルのパラメータによっ て 決まる。緯度経度は OUTPUT_DEGREE_FORMAT に従ってフォーマットされ、一 方、他の値は D_FORMAT に従ってフォーマットされる。フォーマットの結果 と し て出力の精度が落ちて、その先の処理に影響する可能性があることに注意す ること。十分な精度で出力されていないと思ったら、バイナリ出力に変更する( も し使えるなら −bo とする)か、 D_FORMAT の設定を用いてより多くの桁数を 指定すること。

注意

(1) 演算子 PLM は L 階 M 次の同伴ルジャンドル多項式を計算するが、引き数 は -1 <= x <= +1 を満たす余緯度の余弦でなければならない。 PLM は正規化 されていない。

(2) 全ての導関数は中央差分、自然境界条件に基づいている。

process1 から gmtmath にパイプされた 2 番目のデータ列の内容の平方根を 3 番目のプロセスにパイプする。

process1 | gmtmath STDIN SQRT = | process3

2 つのデータファイルの平均の log10 を計算する。

gmtmath file1.d file2.d ADD 0.5 MUL LOG10 = file3.d

海 底 の 年代が百万年単位、海底の深さがメートル単位で与えられたファイル samples.d があるとき、深さ (m) = 2500 + 350 * sqrt (年代) の関係を用 い て水深異常を印刷する。

gmtmath samples.d T SQRT 350 MUL 2500 ADD SUB = | lpr

3 つのデータセット sizes.1, sizes.2, sizes.3 の 1 及び 4-6 列目の平均を 計算する。

gmtmath −C1,4-6 sizes.1 sizes.2 ADD sizes.3 ADD 3 DIV = ave.d

1 列のデータセット ages.d の最頻値を計算してそれを変数に設定する。

set mode_age = ‘gmtmath −S −T ages.d MODE =

ファイル t.d で与えられた座標に対する dilog(x) 関数の数値を求める。

gmtmath −Tt.d T DILOG = dilog.d

gmtmath をスカラーに対する RPN ヒューレット・パッカード計算機とし て 使 い( すなわち入力ファイル無し)、 −Q オプションを用いて任意の式の計算をす る。例として、 Kei (((1 + 1.75)/2.2) + cos (60)) の値を計算して結果をシ ェル変数 z に格納する。

set z = ‘gmtmath −Q 1 1.75 ADD 2.2 DIV 60 COSD ADD KEI =

gmtmath を汎用の最小二乗計算ツールとして用いて、現在のテーブルが拡大行 列 [ A | b ] であると仮定して、行列方程式 A * x = b に対する最小二乗 解 x を計算する。演算子 LSQFIT はこれを実行するが、まず行列を正しく設定す ることが必要である。 −A オプションはこれを容易にする。 tb(t) からな る 2 列のファイル ty.d があり、 a をモデル y(t) = a + b*t + c*H(t-t0) に当てはめようとしているとする。ここで H は与えられた t0 = 1.55 に対 す る ヘ ビ サ イド階段関数である。このとき、列 0 に t 、列 3 に観測された y(t) を入れた 4 列の拡大テーブルが必要である。計算方法は以下の通り。

gmtmath −N4/1 −Aty.d -C0 1 ADD −C2 1.55 STEPT ADD −Ca LSQFIT = solution.d

−C オプションを作業している列を選ぶのに使うので、 LSQFIT を呼び出す前に 必要な列(ここでは全てなので −Ca を使う)を全て有効にすることに注意 。 2 番 目と 4 番目の列はそれぞれ t と y(t) により予め入っているが、他の列は ゼロになっている。すでにファイル(例えば lsqsys.d )に拡大行列 [ A | b ] の 入った計算済みのテーブルがあるときは、最小自乗解は単に以下のように計 算できる。

gmtmath −T lsqsys.d LSQFIT = solution.d

注意

(1) 演算子と同じ名前のファイル、例えば ADD, SIGN, = 等は、カレントデ ィ レクトリを前に付けることで特定できる(例えば ./LOG )。
(2) スタックの深さの限度は 100 に固定されている。
(3) 正の範囲を想定した関数(例えば LOG, KEI 等)はその引き数の絶対値を使 用する。
(4) DDT 及び D2DT2 関数は等間隔のデータにのみ有効である。
(5) ROOTS= の直前に置かれるスタックの最後の演算子でなければならない 。

文献

Abramowitz, M., and I. A. Stegun, 1964, Handbook of Mathematical Functions, Applied Mathematics Series, vol. 55, Dover, New York.
Press, W. H., S. A. Teukolsky, W. T. Vetterling, B. P. Flannery, 1992, Numerical Recipes, 2nd edition, Cambridge Univ., New York.

関連事項

GMT(l), grd2xyz(l), grdedit(l), grdinfo(l), grdmath(l), xyz2grd(l)