logo_calcloop.gif

Topページへ戻る

概要 & ダウンロード
数式の記述方法
バージョン履歴

数式の記述方法

(ここで説明されている内容は、CalcLoopの他に、CalcLoop Plus、ByeGraphでも、利用できるものです。)


  1. 基本
  2. 使用可能なキーワード
  3. 数式ヘッダ
  4. 使用例 -- ファイル読込み関数
  5. 使用例 -- 文字列の読込みと表示
  6. CalcEngineバージョン履歴

1.基本

次の例のように数式が複数個となる場合は、各数式を@ で区切り、最後の数式に、y=を付けます。
x=<::>でループ変数の範囲を指定します。最初から、初期値、最大値、ステップ値の3つの値が入ります。
ここで、abcdefはユーザ定義変数、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 ) )


2.使用可能なキーワード

種類 キーワード、補足説明
変数 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)の'判定式'の中でのみ使用可。◎ 部分和関数や条件判定関数の中に、それらの関数を含める事は出来ない。


3.数式ヘッダ

数式ヘッダは、数式の前に記述して、数式や計算結果に対するオプション的な働きをします。

種類 説明
%data %data~%end間で定義された2次元配列が、dread関数により読み込まれます。
%format 計算結果の書式を指定します。パラメータとして、f(実数)、e(実数、指数表記)、d(整数)、y(整数、3桁ずつカンマで区切る)、s(文字列)を列データ数分指定します。
%external ファイル読み込み関数(fread / fread2)の入力ファイルを指定します。
%statout
(CalcLoopのみで有効)
ループ終了後に、計算結果の各列データに対して所定の統計定数(データ数、合計、平均、標本標準偏差、最大値、最小値)を算出し、出力します。
%gout
(CalcLoopのみで有効)
ループ終了後に、グローバル変数の値を計算結果の後に出力します。


4.使用例 -- ファイル読込み関数

ファイル読込み関数を数式に組み入れることで、実験等で得られた生データに対して、各種の計算処理を加える事ができます。ファイル読込み関数には、シーケンシャルにデータを読込む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
	 :         :         :


5.使用例 -- 文字列の読込みと表示

バージョン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


6.CalcEngineバージョン履歴

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