多項式(polynomial) とは、 「基礎」変数のいろいろなべき乗に係数を掛けた各項の合計です。 例えば、2 x^2 + 3 x - 4 は x の多項式です。 複数の異なる変数の多項式と言える式もあって、 1 + 2 x + 3 y + 4 x y^2 は x と y の多項式です。 多項式の係数はふつう数値ですが、一般に、 基礎変数を含まない任意の式は係数になり得ます。
a f (calc-factor
) [factor
] コマンドは、
多項式を因数分解して積の形にします。
例えば、多項式 x^3 + 2 x^2 + x は `x*(x+1)^2' に因数分解されます。
別の例では、a c + b d + b c + a d は積 (a + b) (c + d) に
因数分解されます。
Calc は現在 3つの因数分解アルゴリズムを持っています。 上の2番目の例のような、いくつかの変数の線形式は、 分配法則に従いくくり出されます。 整数または分数の定数係数を持つ単独変数の多項式は、 それ以上分解できない線形式や2次式に因数分解されます。 上の最初の例では、 3つの線形項(x, x+1, x+1)に因数分解しました。 これらの基準に合わない式は、代数の書替え機構で処理されます。
Calc の(単独変数の)多項式因数分解アルゴリズムは、 一般根探索コマンド(a P)を使って多項式の根を解くことにより動作します。 そして有理数や複素共役の根を探し、それぞれ 1次式や 2次式に変換します。 このアルゴリズムは浮動小数点演算を使うので、 大きな整数(その桁数は計算精度にほぼ等しい)を含む項は発見できないかも知れません。 また、3次以上の因数項は見つかりませんし、複数変数の多項式も扱えません。 (Calc の将来バージョンには、 もっと強力な因数分解アルゴリズムが含まれるかも知れません)
書替えによる因数分解法は、変数 FactorRules
に格納された規則群を使います。
書替え規則操作の議論は、書替え規則(Rewrite Rules) 参照 。
デフォルトの FactorRules
は、
2次式を 2つの線形項 (a x + b) (c x + d) に因数分解することができます。
ユーザーはこれらの規則群を編集して、望むなら他のケースを含めることができます。
この規則群を使うために、
Calc は式 `thecoefs(x, [a, b, c, ...])' を生成します。
ただし x
は基礎変数で、a
, b
, ... は多項式の係数
(数値でも式でも可)です。
定数項を先に、つまり a
の位置に書きます。
書替えが完了すると、
`thefactors(x, [f1, f2, f3, ...])' 形式の式になっているはずです。
ただし各 fi
は因数項、例えば `x - ai' です。
そして Calc はこれらの因数項を掛け合わせて完全な因数分解形式を作ります。
もし書替え規則群が thecoefs
関数を
thefactors
関数に変換しなかったら、「因数分解不可能」の過程のもとに、
a f は元の多項式をそのまま放置します。
(thecoefs
や thefactors
という関数名は目印としてのみ使用され、
そのような名前の実際の Calc 関数は存在しません。)
H a f [factors
] コマンドも多項式を因数分解しますが、
代数表現の答ではなく、因数項のリストを返します。
各因数項は、因数とそのべき乗からなるサブベクトルで表現されます。
例えば、x^5 + x^4 - 33 x^3 + 63 x^2 は、
a f では (x + 7) x^2 (x - 3)^2 に因数分解されますが、
H a f では [ [x, 2], [x+7, 1], [x-3, 2] ] になります。
もし全体に数値因数が掛かっていれば、リストの先頭に来ます
(訳注: 変数因数なら最後尾らしい)。
関数 factor
と factors
は、
代数形式で書かれた場合は第2引数を受入れ、
`factor(x,v)' は x を特定の変数 v について因数分解します。
第2因数がなければ(デフォルト)、
x の中に現われる全ての変数に注目して因数分解します。
a c (calc-collect
) [collect
] コマンドは、
多項式を指定された変数について降べきの順に整理します。
例えば、スタック上の与式 1 + 2 x + 3 y + 4 x y^2 を、
a c x は (2 + 4 y^2) x + (1 + 3 y) のように整理し、
a c y では (4 x) y^2 + 3 y + (1 + 2 x) になります。
多項式は必要に応じて展開され、
(x - 1)^3 を x について整理すると
x^3 - 3 x^2 + 3 x - 1 になります。
x を含まない項は展開されません。
プロンプトに対して指定する「変数」は、実はどんな表現でも構いません。 a c ln(x+1) とすれば、 `ln(x+1)' およびその整数べき乗が掛けられた全ての項を整理します。 式の中に、`ln(x+1)' 以外にも `x' があった場合、 a c はそれらを `ln(x+1)' と無関係な、言わば定数のように扱います。
a x (calc-expand
) [expand
] コマンドは、
式のあらゆる所に分配法則を適用して式を展開します。
積や商、和のべき乗などに適用されます。
デフォルトでは、式の全ての部分が展開されます。
数値接頭引数を付けると、分配法則は指定した回数だけ適用されて、
スタックには部分的に展開された式が残ります。
a x コマンドと j D コマンドは、機能がいくらか重複しています。 式中の和の積を全部展開したい時は a x を使ってください。 式中の指定した特定の項を展開したい場合は j D を使ってください。 これはまさに a f と j M の関係に似ています。 (j D コマンドと j M コマンドは、 `exp(a + b) = exp(a) exp(b)' のような他の展開規則も知っていますが、 a x と a f はそれを知りません。)
Calc の自動簡単化はしばしば部分展開を戻してしまいます。 例えば、(x+1)^3 を展開する最初のステップは、 (x+1) (x+1)^2 と書きなおすことです。 もし(接頭引数などの理由で) a x がここで止まって、 この結果をスタックに置こうとしても、 Calc はそれを自動的に簡単化して (x+1)^3 形式に戻してしまいます。 この解決策は、あらかじめ簡単化を止めておく (簡単化モード 参照 ) か、 数値接頭引数なしの a x で一気に最後まで展開してしまうか、です。
a a (calc-apart
) [apart
] コマンドは、
部分分数を用いて分数関数を展開します。
分数関数とは、2つの多項式の商です。
apart
はこれを簡単な分母の分数関数の和に分けます。
代数表記では、apart
関数は第2引数を取ることができて、
それにより「基礎」変数を指定します。
デフォルトでは、Calc が基礎変数を自分で選びます。
a n (calc-normalize-rat
) [nrat
] コマンドは、
式を変形して 2つの多項式の商にしようとします。
例えば、与式 1 + (a + b/c) / d で結果は
(b + a c + c d) / c d になります。
a n が (x^2 + 2x + 1) / (x^2 - 1) を共通因子 x + 1 で割って
簡単化し (x + 1) / (x - 1) を得るように、商は簡単化されます。
a \ (calc-poly-div
) [pdiv
] コマンドは
2つの多項式 u と v を割り算し、新しい多項式 q を得ます。
入力に何種類かの変数があったら、複数変数の多項式と見なされます。
(Calc はまず、u 中の指数が最大の変数で割り算します。
指数が同じ場合はアルファベット順に変数を選びます。)
例えば、x^2 + 3 x + 2 を x + 2 で割って x + 1 を得ます。
割り算の余りは、もし有れば、スクリーン下部のミニバッファに表示され、
同時にトレイル中に商と共に記録されます。
代数表記で pdiv
を使うと、特定の変数を基礎変数として指定できます。
`pdiv(a,b,x)'.
もし pdiv
に2つの引数しか与えなかったら
(a \ コマンドではいつもの事ですが)
上で触れたように複数変数の割り算を実行します。
a % (calc-poly-rem
) [prem
] コマンドは、
2つの多項式を割算して、その余り r を保持します。
商 q は破棄されます。
任意の式 a, b について、
a \ の結果 q と a % の結果 r は、
a = q b + r の関係を満足します。
(これは2数を割算して整数商と余りを計算する普通のコマンド
\ と % に類似しています。)
a / (calc-poly-div-rem
) [pdivrem
] コマンドは、
2つの多項式を割算して、
その商と余りの両方をベクトル [q, r] として返します。
H a / [pdivide
] コマンドは、
2つの多項式を割算して、
スタックに式 q + r/b を構築します。
(当然の事ながら、余りがゼロであれば、
この式はすぐ簡単化されて q になります。)
a g (calc-poly-gcd
) [pgcd
] コマンドは、
2つの多項式の最大公約数を計算します。
(この最大公約数は、定数係数は別として実質的にユニークです。
Calc はあたりさわりのない最大公約数を選ぼうとします)
例えば、a n コマンドは a g を使って分母・分子の最大公約数を得、
次に a \ を使って分母・分子を得られた最大公約数で割算します。
(最大公約数の定義により、この割算に余りが発生しないことが保証されます。)
a / や a g のような演算に使われる多項式は、 整数係数であることが多いですが、これは必須条件ではありません。 Calc は分数や実数(浮動小数)と一緒に多項式を扱うことができます。 剰余型式(modulo form) の係数を持つ多項式も、多くの分野で有用です。 `(x^2 + 3 x - 1) mod 5' を入力すると、 Calc はこれを自動変換して 5 の剰余系空間の多項式にします。 `(1 mod 5) x^2 + (3 mod 5) x + (4 mod 5)' 。
Ove Ewerlid (ewerlid@mizar.DoCS.UU.SE
) に祝辞と謝辞をささげます。
この人物は、上記コマンド群の多項式処理ルーチンにおいて多大な貢献をしました。
多項式の個々の係数を抽出する便利な関数群は、 多項式を分解する(Decomposing Polynomials) 参照 。
Go to the first, previous, next, last section, table of contents.
利用度数