符号関数:実数の符号を読み解く関数
符号関数 (sign function, signum function) は、入力された
実数 x の符号に基づいて、-
1,
0,
1 のいずれかの値を出力する関数です。x が正であれば
1、負であれば -
1、そして x が
0 であれば
0 を返します。これは、数式で以下のように表現できます。
sgn(x) =
1 (x >
0)
0 (x =
0)
-
1 (x <
0)
この関数は、しばしば `sgn(x)`、`sgn x`、`sign(x)`、`Sign(x)` といった表記で表されます。中でも `sgn` という表記は、数学者
レオポルト・クロネッカーによって導入されたものです。
英語圏では「サイン関数」と呼ばれることもありますが、これは三角関数の正弦関数 (sin) と混同しやすいので注意が必要です。そのため、「シグナム関数」 (signum function) と呼ばれることもあります。
符号関数は、
実数だけでなく
複素数にも拡張できます。
絶対値を用いると、以下のようになります。
sgn(x) = x/|x| (x ≠
0)
=
0 (x =
0)
これは、
複素数平面上で考えると、零ベクトルでない
複素数ベクトルに対し、そのベクトルと同じ方向を持つ長さ
1の単位ベクトルを求める操作に相当します。ただし、様々なソフトウェアや数学ライブラリでは、
複素数の符号関数の定義が異なる場合があります。例えば、gnuplotでは実部の符号関数を使用し、Maple Vでは実部が
0の時は虚部の符号関数を使用するといった違いがあります。本稿では、上記で定義した符号関数についてのみ議論します。
符号関数の性質
符号関数は様々な重要な性質を持っています。以下に代表的な性質を挙げます。これらの性質は
複素数に対しても成り立ちます。
極形式との関係: `|sgn(x)|` は x が 0 でなければ 1、0 であれば 0 となります。また、`arg(sgn(x)) = arg(x)` という関係が成立します。ここで `arg` は偏角を表します。更に、`x = |x|sgn(x)` という関係も重要です。x が 0 でない場合、`sgn(x) = exp(i arg(x))` とも表せます。
符号の演算: 符号関数は以下の演算規則に従います。
`sgn(sgn(x)) = sgn(x)` (冪等性)
`sgn(-x) = -sgn(x)` (奇関数)
`sgn(1/x) = 1/sgn(x)` (x ≠ 0)
`sgn(xy) = sgn(x)sgn(y)`
`sgn(x/y) = sgn(x)/sgn(y)` (y ≠ 0)
`sgn(x^y) = (sgn(x))^y`
実数の場合の追加性質: 実数の場合、以下の性質も成り立ちます。
微分: `d(sgn(x))/dx = 2δ(x)` (δ は
ディラックのデルタ関数)
絶対値との関係: `sgn(x) = d|x|/dx` (x ≠ 0)
ヘヴィサイドの階段関数との関係: `sgn(x) = 2H_{
1/2}(x) -
1` (H_{
1/2} はヘヴィサイドの階段関数)
* アイヴァーソンのブラケットを用いた表現: `sgn(x) = [x >
0] - [x <
0]` ([ ] はアイヴァーソンのブラケット)
まとめ
符号関数は、一見単純な関数ですが、その性質は豊かで、数学の様々な分野、特に解析学や信号処理において重要な役割を果たしています。
絶対値関数や
ディラックのデルタ関数、ヘヴィサイドの階段関数など、他の重要な数学的概念とも密接に関連しており、これらの関数の理解を深める上で、符号関数の理解は不可欠です。様々なソフトウェアや数学ライブラリでの扱いに違いがある点には注意が必要です。