signum - 実数と複素数の式に対する符号関数
使い方
signum(x)
signum(1, x)
signum(0, x, y)
パラメータ
x - 任意の代数式
y - 任意の代数式
|
説明
|
|
•
|
signum 関数は、実数あるいは複素数の「符号」を返します。これは、x <> 0 に対して signum(x) = x/abs(x) で定義されます。
|
•
|
signum(0) の値は、環境変数 _Envsignum0 によって制御されます。_Envsignum0 に値が割り当てられていないときは、それは何にでも評価できるので signum(0) は定義されません。たとえば、Envsignum0 に値が割り当てられていないとき、signum(abs(x)) は 1 に簡単化され signum(-abs(x)) は -1 に簡単化されます。_Envsignum0 に値が割り当てられていると、signum(0) はその値を返します。
|
•
|
環境変数 _Envsignum0 の値は、直接割り当てることにより大域的に設定することができ、また引数が 3 個の呼び出し手順を使うことにより signum の 1 個の呼び出しの間だけ設定することができます。この場合 _Envsignum0 は、 signum 呼び出しが評価している間 signum へ第 3 引数の値が設定され、signum から抜け出ると以前の値にリセットされます (詳しくは environment を参照)。 3 個の引数の形では、第1引数は 0 でなければいけません。
|
•
|
_Envsignum0 の値は、どの変形および簡単化を適用することができるかを決定します。たとえば、Envsignum0 に値が割り当てられていないと、おそらく 0 を除いて至るところ有効な、任意の変換を適用できます。_Envsignum0 が値を持っているとき、これが signum(0) の値を割り当てたことを考慮に入れて、至るところ有効な変形だけを適用できます。下の例を参照して下さい。
|
•
|
数学的な一貫性については、signum(0) の値は、Envsignum0 の値や signum への第3引数のいずれかによって決定されるので、定義してはいけないか、絶対値が 0 または 1 の複素数でなければいけません(上の2番目の段落を参照)。
|
•
|
x が実数の定数のとき、signum は evalr を用いて浮動小数点数へ用心深く x を評価しようとします。evalr がこの浮動小数点数の符号を求められないとき、signum(x) は未評価を返します。evalr がその計算のために Digits の現在の設定を使うので、Digits を増加させることは、そのような場合助けになるかもしれません。
|
•
|
signum の導関数は、signum(1, x) で表します。これは、すべての零でない実数に対して 0 です。そうでなければ定義されません。
|
•
|
signum の高階の導関数は、signum(n, x) で表されます。ここで、n は正の整数です。上記の signum(1, x) の性質より、1 より大きい任意の整数 n に対して、signum(n, x) は signum(1, x) と同じです。ゆえに、n が整数でわかっているとき、signum(n, x) は自動的に signum(1, x) に簡単化されます。
|
•
|
x が関数 f を含んでいるとき、 signum は x の対応する部分の signum を決定するために手続き signum/f を実行することを試みます。 ユーザはこのように容易に signum の機能を拡張することができます。手続き signum/f は関数 f の引数にだけ渡されることに注意して下さい。環境変数の値は、 signum 内に設定されるので signum/f によってチェックすることができますが、それはパラメータとして渡されません。ルーチン signum/f が signum(f(<argument>)) に対して値を決定することができないとき、それが FAIL を返すかもしれないことに注意して下さい。
|
|
|
例
|
|
| (2.1) |
| (2.2) |
| (2.3) |
| (2.4) |
>
|
expr := 3*x^2*y^4 - 2*x*y^5 + x;
|
| (2.5) |
| (2.6) |
>
|
eval(subs({x=1/3,y=exp(1)},%));
|
| (2.7) |
| (2.8) |
| (2.9) |
| (2.10) |
| (2.11) |
| (2.12) |
>
|
assume(x,real);
signum(x^2);
|
| (2.13) |
>
|
_Envsignum0 := 0:
signum(x^2);
|
| (2.14) |
>
|
_Envsignum0 := 1:
signum(x^2);
|
| (2.15) |
| (2.16) |
| (2.17) |
| (2.18) |
| (2.19) |
| (2.20) |
| (2.21) |
|
|