アポストロフ・キーを押すと、任意の代数式が入力できます。 (Calc 用語で "expression(式表現)" と "formula(式)" は同じ意味です。) 式は、数値, 変数, 関数呼出しがいろいろな算術演算子で接続されてできています。 括弧を使ってグルーピングができます。 式中のスペースは無視されますが、変数名や数値の中に入れてはいけません。 算術演算子とその等価関数名を、優先順位の高い方から順に並べると、 次のとおりです。
`_' [subscr
] (添字);
後付けの `%' [percent
] (例: `25% = 0.25');
前付けの`+', `-' [neg
] (例: `-x'),
`!' [lnot
] (例: `!x' にみられる論理"NOT" );
`+/-' [sdev
] (誤差型式の記号)
`mod' [makemod
] (剰余型式の記号);
後付けの `!' [fact
] (例: `n!' にみられる階乗)
および、後付けの `!!' [dfact
] (二重階乗関数);
`^' [pow
] (べき乗);
`*' [mul
];
`/' [div
], `%' [mod
] (剰余),
`\' [idiv
] (整数除算);
項と項の間の `+' [add
] と `-' [sub
] (例: `x-y');
`|' [vconcat
] (ベクトルやリストの結合);
関係子 `=' [eq
], `!=' [neq
], `<' [lt
],
`>' [gt
], `<=' [leq
], and `>=' [geq
];
`&&' [land
] (論理"AND");
`||' [lor
] (論理"OR");
C言語スタイルの "if" 演算子 `a?b:c' [if
];
`!!!' [pnot
] (書替えパターン"not");
`&&&' [pand
] (書替えパターン"and");
`|||' [por
] (書替えパターン"or");
`:=' [assign
] (割付けや書替え規則に使用);
`::' [condition
] (書替えパターン条件);
`=>' [evalto
].
注意: 普通のコンピューター言語の表記法とは異なり、 掛算は割算よりも強く結びつくので、 `a*b/c*d' は @c{$a b \over c d$} (a*b)/(c*d) と同等です。 [訳注: ここで d C と打って C言語表記にすると、 `a*b/(c*d)' と表示される。]
多くの場合、乗算記号 `*' を省略できます。
特に、右側が数値, 変数, 括弧に囲まれた式のいずれかの場合、
`*' は省略できます。
暗黙の乗算は、明示的な `*' 演算子と同等な優先順位を持っています。
(乗算記号を省略できない)ひとつの例外は、
変数名のあとに括弧で囲まれた式が来る場合で、
`f(x)' は暗黙の乗算ではなく関数呼出しと解釈されます。
`*' を省略する際に、スペースが必要になるケースがあります。
`2a' は `2*a' と同等で、`a b' も `a*b' と同等ですが、
`ab' は ab
という変数なのであって、
`a' と `b' の積ではありません。
ちなみに、`f (x)' には間にスペースが入っていますが、
これでも関数呼出しと解釈されます。
カギ括弧を使って表すベクトルのルールはちょっと変っています。 ベクトル中では、空白文字は(カンマのように) ベクトル要素のセパレーターと解釈されます。 従って、`2a b+c d' は `2*a*b + c*d' と同等であるにも関わらず、 `[ 2a b+c d ]' は `[2*a, b+c, d]' と同等です。 ちなみに、括弧や明示的なカンマの周りの空白は無視されます。 強制的に空白を乗算として解釈させるには、 `[(a b) 2(c d)]' のように式を括弧で囲むと、 `[a*b, 2*c*d]' のように解釈されます。 行列 `[[1 2][3 4]]' のように、 暗黙のカンマは `][' の間にも挿入されます。
(ネストした括弧, カギ括弧と同居していない)カンマを含むベクトルは、 空白を特別扱いしないので、`[a b, 2 c d]' は2要素のベクトルです。 また、空白をセパレータと解釈してエラーになる場合に、Calc は空白を無視するので、 `[a - b]' は1要素のベクトルと解釈され、 `[a -b]' は2要素のベクトルと解釈されます。 最後の手段としては、ベクトルをカギ括弧でなく中括弧と共に入力すれば、 空白は特別扱いされません。 Calc がカンマを含まないベクトルを表示する場合は、 曖昧さが無いように、必要に応じて括弧が挿入されます: `[(a b)]'。
`5%-2' という式表現は曖昧で、 5パーセントひく 2 なのか、5 を -2 で割った剰余なのか判りません。 Calc は常に、いちばん左の記号の解釈に 2項間演算子(この場合は剰余)を優先します。 前者の解釈をさせたければ、`(5%)-2' と書く必要があります。
関数呼出しとは、例えば `sin(1+x)' です。
内部の Lisp 型式における関数名は、
変数名のやりかたと似ていて、
デフォルトのプリフィックスに(`var-' の替りに)
`calcFunc-' を使うこと意外は同じです。
calc-sin
のような Calc 数学コマンドの多くは、
sin
のように、対応する等価な関数を持っています。
代数操作の間に、未定義の関数呼出しがあると、
その関数呼出しはそのままに残されるので、
`f(x+y)' は放置されます。
注意が必要なのは、
in
や re
のような、
短くて一見何気ないが、既に定義された関数名で、
これらに油断すると驚くことになります。
しかし、英1文字か、英1文字に続く数字で構成された名前なら、
ユーザ自身の関数名として使っても大丈夫です。
代数関数索引 参照 。
特定のコマンドに関する文書における
H S (calc-sinh
) [sinh
] という表記は、
キーシーケンス H S と、コマンド M-x calc-sinh と、
代数関数 sinh(x)
がすべて同じ演算を表すという意味です。
テキストを代数式として解釈(解析)するコマンド群には、 代数的入力(')や、 ` のような編集完了時にバッファ内容を解析する編集コマンド群, M-# g や M-# r コマンド, C-y コマンド, X window システムのマウス操作による「ペースト」, 憑依モードがあります。 これらの操作の全てにおいて、式解析に同一のルールが適用されます。 このため、言語モードの設定は一様に全てに影響します(Language Modes 参照 )。
大量のテキストを Calc に読込ませるとき (例えば多数の書替え規則を集合したベクトル; 書替え規則(Rewrite Rules) 参照 )、 テキストにコメントを付加したい場合があるでしょう。 Calc の式解析エンジンは、記号`%%'から行末までを無視します。
[ a + b, %% "a" と "b" の和 c + d, %% お次は最終行だよ: e + f ]
これは `[ a + b, c + d, e + f ]' と全く同じに解析されます。
独自の演算子や表記を設定する方法は Syntax Tables 参照 。 新しい表示書式を設定する方法は Compositions 参照 。
式をシンボリックに扱うコマンド群は、代数 参照 。
Go to the first, previous, next, last section, table of contents.
利用度数