Go to the first, previous, next, last section, table of contents.


アポストロフ・キーを押すと、任意の代数式が入力できます。 (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)' は放置されます。 注意が必要なのは、 inre のような、 短くて一見何気ないが、既に定義された関数名で、 これらに油断すると驚くことになります。 しかし、英1文字か、英1文字に続く数字で構成された名前なら、 ユーザ自身の関数名として使っても大丈夫です。 代数関数索引 参照 。

特定のコマンドに関する文書における H S (calc-sinh) [sinh] という表記は、 キーシーケンス H S と、コマンド M-x calc-sinh と、 代数関数 sinh(x) がすべて同じ演算を表すという意味です。

テキストを代数式として解釈(解析)するコマンド群には、 代数的入力(')や、 ` のような編集完了時にバッファ内容を解析する編集コマンド群, M-# gM-# 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.     利用度数