次の例のように数式が複数個となる場合は、各数式を@ で区切り、最後の数式に、y=を付けます。
x=<::>でループ変数の範囲を指定します。最初から、初期値、最大値、ステップ値の3つの値が入ります。
ここで、abc、defはユーザ定義変数、piは登録定数です。(ユーザ定義変数と登録定数は、英字のみ、もしくは英字+数字(文字数制限なし)です。)
x = < -2*pi: 2*pi: 0.01*pi > @
abc = 2 * x @
def = 3 * x @
y = sin( abc ) + cos( def )
だだし、次の例のように数式が一つの場合はy=が省略できます(ByeGraphでは必須)。
2+3*(log(sin(2*pi^2))+6.8)
変数={,,,}でパラメータを指定します(最大16個まで指定可)。各パラメータには、ユーザ定義変数や関数を含む事ができます。
ここで、sitaはユーザ定義定数、kRadは登録定数です。
x = < 0: 360: 1 > @
sita = { 0, 45, 90 } @
y = sin( kRad * ( x + sita ) )
種類 | キーワード、補足説明 |
変数 | x, y xは通常ループ変数として使用、yは最後の式の左辺にのみ使用 |
ユーザ定義変数 | 英字、もしくは英字+数字(文字数制限なし)【例】 var、abc01等 |
登録定数 | 英字、もしくは英字+数字(文字数制限なし)【例】 pi、K0、ep0等 |
グローバル変数 | _M0 - _M15 繰り返し計算の間値を保持、初期値:0、_M0(+)=A、 _M0(-)=Aも可。 |
グローバル変数初期化関数 | ginit<> _M0~_M15を初期化 【例】_M0=ginit<10> |
ループカウンタ | #LOOP その時のループのカウント値(0から始まる)を含む。代入不可。 |
パラメータカウンタ | #PARAM その時のパラメータのカウント値(0から始まる)を含む。代入不可。 |
fread入力元行数定数 | #FREADMAX 設定されているfread/fread2関数入力元データの総行数。 |
式と式との区切り記号 | @ |
代入記号 | = |
ループ変数範囲指定 | <::> 初期値、最大値、ステップ値を指定可 【例】 x=<-2*pi:2*pi:0.01*pi> |
パラメータ指定 | {,,,} 最大16個まで指定可 【例】sita={a,b,c} |
数値 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, e, E |
符号 | +, - |
演算子 | +, -, *, /, ^ |
関係演算子 | >、<、≥、≤、=、≠ |
括弧 | (,) |
数学関数 | ln(), log(), exp(), sin(), cos(), tan(), asin(), acos(), atan(), sqrt(), abs(), fmod(,), inv() |
ファイル読み込み関数 | fread() 引数は0より始まる列データ番号。入力ファイルの指定が必要 fread2(,) 引数は0より始まる行データ番号と列データ番号。入力ファイルの指定が必要 |
配列読み込み関数 | dread(,) 数式ヘッダ%data~%endの2次元配列より読み込む。第1引数は0より始まる行データ番号、第2引数は0より始まる列データ番号 |
部分和関数 | sum('式',k=m:n) '式'を数列とした場合の部分和。m:初項、n:終項 |
条件判定関数 | switch('判定式',A:B) '判定式'が>=1の場合Aを、<1の場合Bを結果として返す |
コメントマーク | ! コメント行の先頭に置く。数式ヘッダ行以外であれば、行の途中でも可 |
【注意事項】◎ 'fmod(,)'は第1引数÷第2引数の余り演算(浮動小数点) ◎ 演算子の優先順位('+','-' << '*','/' << '^' ) )を考慮しつつ、左から右へと値の評価。'()'の使用で、この優先順位の変更可。◎ 三角関数の角度の単位はラジアン。◎ ループ変数範囲指定、パラメータ指定を含む式の右辺では、それらを単独で使用すること。(=a*<::>等は不可) ◎ 関係演算子(>、<、≥、≤、=、≠)は、条件判定関数switch('判定式',A:B)の'判定式'の中でのみ使用可。◎ 部分和関数や条件判定関数の中に、それらの関数を含める事は出来ない。 |
数式ヘッダは、数式の前に記述して、数式や計算結果に対するオプション的な働きをします。
種類 | 説明 |
%data | %data~%end間で定義された2次元配列が、dread関数により読み込まれます。 |
%format | 計算結果の書式を指定します。パラメータとして、f(実数)、e(実数、指数表記)、d(整数)、y(整数、3桁ずつカンマで区切る)、s(文字列)を列データ数分指定します。 |
%external | ファイル読み込み関数(fread / fread2)の入力ファイルを指定します。 |
%statout (CalcLoopのみで有効) |
ループ終了後に、計算結果の各列データに対して所定の統計定数(データ数、合計、平均、標本標準偏差、最大値、最小値)を算出し、出力します。 |
%gout (CalcLoopのみで有効) |
ループ終了後に、グローバル変数の値を計算結果の後に出力します。 |
ファイル読込み関数を数式に組み入れることで、実験等で得られた生データに対して、各種の計算処理を加える事ができます。ファイル読込み関数には、シーケンシャルにデータを読込むfread関数とランダムにデータを読込むfread2関数があります。下記は、fread関数の使用例です。
【例】Xデータ、Yデータを共に読み出し、Xデータより 2*pi*x を計算して、その2乗をYデータに乗じます。
0.0 1 2 0.1 2 4 0.2 3 6 0.3 4 8 0.4 5 10 : : :
データをfread関数で読込むため、 ループ変数xの範囲指定(x=<::>)は不要です。(繰り返しの数は対象ファイルの行数により決まります。)
! フォーマット指定
%format f e
x = fread(0) @
omg = 2*pi*x @
w = { 1, 2 } @
y = fread(w)*omg^2
結果は下記の通りです。
0.0 0.000e+00 0.000e+00 0.1 7.896e-01 1.579e+00 0.2 4.737e+00 9.475e+00 0.3 1.421e+01 2.842e+01 0.4 3.158e+01 6.317e+01 : : :
バージョン1.8より文字列の読込みが可能となりました。これはその使用例です。
【例】ファイル中の5列目と6列目にラベル(文字列)のみ設定されているデータ列に、(ラベルはそのままにして)計算によって新たに列データを付け加えます。また、%statoutヘッダーにより、各列データの所定の統計データを算出します。
Name Math English Science Total Average JAMES 78 81 58 MARY 68 83 63 JOHN 72 77 71 PATRICIA 91 68 69 ROBERT 77 71 88 LINDA 88 82 59 MICHAEL 90 72 74 BARBARA 69 71 58 WILLIAM 78 79 63 ELIZABETH 81 83 70 DAVID 65 71 58 JENNIFER 88 83 81
下の数式では、switch関数を使って、1行目(ループ変数#LOOP=0)ではラベルを、2行目以降では計算結果(2〜4列のデータの合計および平均)を切り替えて表示します。
%external "~/tmp/Grades.txt" 0
%statout avg max min n dev !各列データの所定の統計データを算出し、出力する
%format s d
x=fread(0)@
z=sum(fread(k),k=1:3)@
y={fread(1),fread(2),fread(3),
switch(#LOOP=0,fread(4):z),
switch(#LOOP=0,fread(5):z/3)}
結果は下記の通りです。
Name Math English Science Total Average JAMES 78 81 58 217 72 MARY 68 83 63 214 71 JOHN 72 77 71 220 73 PATRICIA 91 68 69 228 76 ROBERT 77 71 88 236 79 LINDA 88 82 59 229 76 MICHAEL 90 72 74 236 79 BARBARA 69 71 58 198 66 WILLIAM 78 79 63 220 73 ELIZABETH 81 83 70 234 78 DAVID 65 71 58 194 65 JENNIFER 88 83 81 252 84 --------- ---- ------- ------- ----- ------- N 12 12 12 12 12 AVG 79 77 68 223 74 DEV 9 6 10 16 5 MAX 91 83 88 252 84 MIN 65 68 58 194 65
CalcEngineは、CalcLoop、CalcLoop Plus、ByeGraphで用いられている、数式処理のためのライブラリです。
バージョン | 対応する CalcLoop/ByeGraph のバージョン |
追加された機能 |
CE1.0 (2006/05/06) |
CL1.0, BG1.0 | |
CE2.0 (2007/07/26) |
CL1.5, BG1.2, BG1.3, BG1.4, BG1.5 | ○dread関数 ○sum関数 ○switch関数 ○数式ヘッダ ●%data ●%format (d/f/e/y)(BGは1.3より) ●%symbol(BGのみ) ●%yscale(BGのみ) |
CE2.1 (2008/12/15) |
CL1.6, BG1.6 | ○グローバル変数初期化関数ginit ○fread2関数 ○#LOOPカウンタ、#PARAMカウンタ ○#FREADMAX定数 ○数式ヘッダ %format (s)(CLは1.8より) ○数式ヘッダ %xstrings(BGのみ) |
CE2.2 (2009/05/15) |
BG1.7 | ○数式ヘッダ %external(CLは1.8より) ○文字列の読込み |
CE2.3 (2009/06/30) |
CL1.8 | ○数式ヘッダ %gout(CLのみ) ○数式ヘッダ %statout(CLのみ) |
CE2.4 (2009/10/31) |
BG1.8 | ○数式ヘッダ %labelの改良 |
CE2.4.1 (2010/04/10) |
BG1.9 | ○数式ヘッダ %rangeLin/log, %axislabel |