複素数と複素数コンストラクタ
使い方
Complex(x, y)
パラメータ
x - 式
y - (オプション) 式
|
説明
|
|
•
|
複素数は、2 つの形、純虚数または一般的な complex number () のいずれかをとり得ます。
|
|
1. 純虚数 とは、I*y の形をした数で、y は整数、有理数、あるいは浮動小数点数です。I は -1 の平方根です。
|
|
2. 一般的な複素数 とは、x + I*y の形をした数で、x と y は整数、有理数、あるいは浮動小数点数です。一般的な複素数の場合、 x か y のどちらかが浮動小数点数のとき、自動換算が行われ、 x と y の両方とも強制的に float 型にされます。
|
•
|
Complex(x, y) コンストラクタ関数は、指定された値 x と y に対して、以下の型のオブジェクトを返します。
|
|
* xが既に型 complex を持ち、y が呼び出し手順に含まれないときは x。
|
|
* x が extended numeric で y が呼び出し手順には含まれないときは、1 つの引数からなる複素数 (I*x)。
|
|
* x と y の両方が extended numerics であり、x と y の両方が型 float を持つかどちらも型 float を持たないときは、 2つの引数を持つ複素数。
|
|
* x または y のいずれかが型 float を持つときは、両方の引数が型 float の 2 つの引数を持つ複素数。
|
|
* いずれでもないときは、コンストラクタは未評価を返します。
|
|
通常の状況の下では、このコンストラクタを呼び出す必要はありません。 y*I や x + y*I の形の式は自動的に複素数コンストラクタに適切に渡されるからです。
|
|
複素数は、式の中の原子的なオブジェクトと見なされます。特に、map は複素数の成分を変更するために使うことはできません。 たとえば、 subs(3=z, 3+4*I+3*x) = 3+4*I+z*x で map(sin, 3+4*I) = sin(3+4*I) です。
|
|
* x を実数とするとき、複素数 x + 0*I は x 自身と同じではありません。しかしながら記号領域の中でこれに執着すると、急速にそのような 0 でごちゃごちゃした大きな式になってしまうでしょう。したがって,妥協策として Maple は以下の規則を用います。
|
|
** x が、 extended_numeric 型であるとき、 x + 0.0*I, x - 0.0*I, x はすべて異なるオブジェクトとして表現されます。 0.0 + x*I, -0.0 + x*I, x*I についても同様です。
|
|
** x が、 extended_numeric 型でないときは、 x + 0*I, x + 0.0*I と x - 0.0*I はすべて x と評価され、 0 + x*I, 0.0 + x*I と -0.0 + x*I はすべて x*I と評価されます。
|
|
** 上の規則は、手続きが入力されたときではなく、実行されるときに、手続き自身の中で式に適用されます。
|
|
** 複素数コンストラクタは、 x が extended_numeric 型でないとき、 x + 0.0*I と x - 0.0*I の x への(そして 0.0 + x*I, -0.0 + x*I の x*I への)簡単化を防ぐために使うことができます。 たとえば、 complex(CopySign(1,x), 0.0) は、そのような x に対して未評価のままになります。
|
|
* Maple が複素数に対して使う表現で 1 点「複素無限大」(ここでは cx-infinity で表す) を表す明らかな方法はありません (標準的な表現は極形式 infinity e^(i * undefined) )。しかしながら、たとえば GAMMA(-1) などの極での関数の値を表すためにこうしたオブジェクトを持つことは重要です。したがって、 Maple はこのオブジェクトのために次の規約を用います。
|
|
Maple ルーチンは、両方の引数がある形の実無限大であるような任意の 2 引数の複素数を複素無限大として解釈します。
|
|
この既約から導かれるいくつかの重要な結果があります。第 1 に、cx-infinity は複素平面の特定な部分に位置しないので、次のようにします。
|
|
** csgn(cx-infinity), signum(cx-infinity), argument(cx-infinity) は、すべて定義されない。
|
|
注意: 有理数 0 に有理数 0 + 0*I を簡単化するので、逆数変換の下で記号 cx-infinity の数学的な特性を保存することはできません。
|
|
** Re または Im を使うことにより cx-infinity の実部あるいは虚部を求めることは意味をしません。(しかし、そうしても、Re と Im は苦情をうったえません。)
|
|
* 計算的には 1.0 + 0.0*I, 1.0 - 0.0*I と 1.0 は異なりますが、数学的にはそれらは同じです。 通常の状況下(すなわち、分枝のカットが必要ないとき)では、数 1.0 のこれらの形式のうちのどれを使用して計算しても数学的に同値な結果を返します。したがって、 Maple は以下の規約を用います。
|
|
0 でない複素数の実部 0 あるいは虚部 0 の符号に含まれている情報を要求しない計算 (すなわち、枝のカットに関連する必要のない計算) は、もし存在すれば、その 0 成分および 符号のある無しに数学的に依存しない値を返します。
|
|
|
例
|
|
| (2.1) |
| (2.2) |
| (2.3) |
| (2.4) |
| (2.5) |
| (2.6) |
| (2.7) |
|
|
参照
|
|
I, constant, convert exceptions, float, infinity, integer, プロテクトされた名前: complex, type, type[complex], type[extended_numeric], type[float], type[fraction], type[infinity], type[imaginary], type[nonreal], type[rational]
|
|