描画は隣接平均, 数式変換などデ−タの加工を行った後に行われます。 グラフを作成する際その処理手順を意識することが重要な場合があります。 以下にデ−タの流れを示します。
データファイル
↓
数式変換
↓
マスクされたデ−タを削除
↓
移動されたデ−タを移動
↓
隣接平均
↓
[曲線の補間係数, 最小二乗フィットの係数を求める]
↓
出力(グラフ描画)
ロググラフを作成する場合, 曲線の補間はデ−タを対数変換した後に行われるので通常の線形グラフとロググラフでは結果が異なります。 最小二乗法に関してはロググラフでも通常の線形グラフと同じ係数を求めます。
数値 数値定数(1, 2.0, 3.0E10等) PI 円周率 E 自然対数の底 EULER オイラ−の定数 NAN 欠損デ−タ エラー表示 UNDEF 欠損デ−タ エラー非表示 CONT 欠損データ (データ線は結合) BREAK 欠損データ (データ線は分断) NUM デ−タの個数 MINX (X) column の生デ−タの最小値 MAXX (X) column の生デ−タの最大値 MINY (Y) column の生デ−タの最小値 MAXY (Y) column の生デ−タの最大値 SUMX (X) column の生デ−タの和 SUMY (Y) column の生デ−タの和 SUMXX (X) column の生デ−タの二乗和 SUMYY (Y) column の生デ−タの二乗和 SUMXY (X) column, (Y) column の生デ−タの積和 FIRST diagonal, errorbar など一行のデータで2回の変換が行われる場合、1回目の呼出しで真(=1)、2回目の呼出しで偽(=0)
X (X)column の生のデ−タ Y (Y)column の生のデ−タ %00 デ−タを読み込んだ順番に1から番号をつけたときの値 %01〜%99 同一行中 1〜99 カラムの生デ−タ %D データファイルの番号 %Fxx01〜%Fxx99 データファイル xx の同じ行の 1〜99 カラムの生デ−タ
- 負の数値 + - * / 四則演算 \ 実数乗算の乗余 ^ ベキ乗 ! 階乗(引数は167 以下の正の整数) ( ) 括弧(20 重まで) = 式の終端(省略可能) 別の式を後に続けることが可能
変換関数
ABS(x) 絶対値 SIGN(x) 正負の符号 INT(x) 0に向かって切捨てた整数部 GAUSS(x) ガウスの記号[ ] ([n]はnを越えない最大の整数) FRAC(x) 小数部 ROUND(x) 四捨五入した整数部 MIN(x,y) x, y の小さい方 MAX(x,y) x, y の大きい方
初等関数
SQR(x) 二乗 SQRT(x) 平方根 EXP(x) 指数(x≦690) LN(x) 自然対数 LOG(x) 常用対数 SIN(x) サイン COS(x) コサイン TAN(x) タンジェント ASIN(x) 逆サイン ACOS(x) 逆コサイン ATAN(x) 逆タンジェント SINH(x) ハイパボリックサイン COSH(x) ハイパボリックコサイン TANH(x) ハイパボリックタンジェント ASINH(x) 逆ハイパボリックサイン ACOSH(x) 逆ハイパボリックコサイン ATANH(x) 逆ハイパボリックタンジェント
特殊関数
RAND(x) 0≦RAND(x)<x (x>0のとき)の乱数 THETA(x) 階段関数(x≧0 のとき 1, それ以外は 0 ) DELTA(x) クロネッカ−のδ(x=0 のとき 1, それ以外は 0) GAMMA(x) ガンマ関数 Γ(x) ICGAM(m,x) 不完全ガンマ関数 Γ(μ,x) ERFC(x) 誤差関数 Erfc(x) QINV(x) 誤差関数 Erfc(x) の逆関数 EI(x) 積分指数関数 Ei(x) BETA(x,y) ベ−タ関数 B(p,q) JN(n,x) 第1種n次ベッセル関数 YN(n,x) 第2種n次ベッセル関数 PN(n,x) ルジャンドル多項式 LGN(n,a,x) ラゲ−ル倍多項式 HN(n,x) エルミ−ト多項式 TN(n,x) チェビシフ多項式 MJD(year,month,day) 修正ユリウス日(year, month, day はグレゴリオ暦)
論理関数 0を偽, それ以外を真とする。
EQ(x,y) x=y のとき真(=1) NEQ(x,y) x≠y のとき真(=1) GE(x,y) x≧y のとき真(=1) GT(x,y) x>y のとき真(=1) LE(x,y) x≦y のとき真(=1) LT(x,y) x<y のとき真(=1) NOT(x) x=0 のとき真(=1) OR(x,y) (x≠0) or (y≠0) のとき真(=1) AND(x,y) (x≠0) and (y≠0) のとき真(=1) XOR(x,y) (x≠0) xor (y≠0) のとき真(=1)
その他の関数
SUM(x) 積算(一つの数式で 10 個まで) DIF(x) 差分(一つの数式で 10 個まで) M(n,x) 引数を第nメモリ−に代入する(n=0〜19) RM(n) 現在の第nメモリ−の値(n=0〜19) F(x,y,z) ユーザ定義関数 G(x,y,z) ユーザ定義関数 H(x,y,z) ユーザ定義関数 COLOR(0,x) R値を X (0≦X<256)に設定 COLOR(1,x) G値を X (0≦X<256)に設定 COLOR(2,x) B値を X (0≦X<256)に設定 COLOR(3,x) RGB値を X (0≦X<256)に設定 MARKSIZE(x) マークのサイズをXに設定 MARKTYPE(x) マークの種類をXに設定 IF(x,ex1,ex2) X≠0のときex1, x=0のときex2 (ネストは20まで) FOR(m,begin,end,step,ex) 第mメモリの値がbeginからendになるまでstepでexを繰り返す
高 E (指数表記) ↑ () (括弧) - (負の符号) 関数 ^ ! * / \ ↓ + - 低 =
M(0,...式...)= ... RM(0) .... =のようにすれば同じ式は1度書くだけですみます。また式最後の = は省略できます。
M(0,RM(0)+Y)=とすることで Y の積算グラフを描画することができます。
DIF(Y)=Y(n) - Y(n-1)です。これを用い簡単に微分近似値を求めるには
DIF(Y)/DIF(X)とします。
DIF(Y)/DIF(X)は {Y(n)-Y(n-1)} / {X(n)-X(n-1)} になります。この時、Xの変換数式を
X-DIF(X)*0.5としてXを"現在のデ−タと一つ前のデ−タの中間値"としておいた方がより真に近いグラフが得られると思われます。
X変換式: X-DIF(X)*0.5 (これは { X(n-1)+X(n) }*0.5 になります)
Y変換式: DIF(Y)/DIF(X) (これは { Y(n)-Y(n-1) } / { X(n)-X(n-1) } になります)
DIF() は現在のデ−タと一つ前のデ−タとの差分を返しますから、Y-DIF(Y) とすることで一つ前のデ−タを取り出すことができます。 同様に Y-DIF(Y)-DIF(Y-DIF(Y)) で2つ前のデ−タを取り出すことができます。 Y-DIF(Y)-DIF(Y-DIF(Y))-DIF(Y-DIF(Y)-DIF(Y-DIF(Y)))は3つ前のデ−タです.
一番初めの DIF() の戻り値は"不定"です.このため,式全体の値も"不定"となり、結果としてデ−タの個数は1つ減ります(一番初めのデ−タに差分は存在しない)。 また DIF() をいくつも含む式では、全ての DIF() が初期化されるまで式全体の値は"不定"です。 例えば DIF() をネストして DIF(DIF()) のように使った場合、一番初めのデ−タでは内側の DIF() が初期化されその戻り値は不定の為、外側の DIF() の初期化は行われません。 外側の DIF() が初期化されるのは 2番目のデ−タの時です。 従ってデ−タの個数は2つ減ることになります。
SUM(Y)=Σ Y(n) (n=1..n)これを用い簡単に積分近似値を求めるには
SUM(Y*DIF(X))とします。
SUM(Y*DIF(X)) は Σ Y(n)*{ X(n)-X(n-1) } (n=1..n) になります。また、台形公式を用いて積分近似値を評価したい場合
SUM(0.5*(2*Y-DIF(Y))*DIF(X))とします。
SUM(0.5*(2*Y-DIF(Y))*DIF(X)) は Σ(Y(n-1)+Y(n))/2*{X(n)-X(n-1)} (n=1..n) になります。さらに積分の上限(b)、下限(a)を指定したい場合は階段関数 THETA() を用い
SUM(0.5*(2*Y-DIF(Y))*DIF(X)*THETA(X-a)*THETA(b-X))とします。IF() を使って
IF(AND(GE(x,a),LE(x,b)),INTEG(0.5*(2*Y-DIF(Y))*DIF(X)),0)としても可能です。
IF( LT(x,0), 0, SQRT(x) )は x<0 のとき 0、x>=0 のとき富 を返す関数になります。また必ず ex1, ex2 どちらか一方しか評価されません。 例えば
IF( EQ(%00,1), M(0,値), ...式... )のような使い方をしたとき M(0,値) は EQ(%00,1) が真のとき(すなわちデ−タの最初)だけ実行されるので、メモリ関数の初期化に使えます。
MARKSIZE(%03)とします。ただこれですと、プロットされるデータも %03 となりますので、前述の = を使って
MARKSIZE(%03)=Yとするのが正しい使い方です。 COLOR()関数も同様で
COLOR(3,%03)=Yのように使います。