プログラムな日常>理数学習このままでイイン会?>
一変数多項式の因数分解(実係数)について
(arguments on factorizing mono-variant polynomials within real factors)

 この記事は、過去のページ 一変数多項式の因数分解(実係数) に関し、またその成果は、最近のページである 二変数多項式の因数分解(実係数) にも使われている(前者のページには「課題集」を追加してみた; 読み易いソースコードは後者の方にある --- Windows なら (ctrl+shift)-I で読めます)。

【一変数多項式因数分解の原理】
 任意の多項式は、任意の二次式で割ることができる --- 任意の自然数を任意の自然数で割ることができるように。
 ここで「割ることができる」とは、「割切れる」と言っているのではない。7は3で割ることができる --- 単に1が余るだけ --- そういう感覚だ。
 多項式の割算は、こんな感じになる。
   (x6 +Ax5 +Bx4 +Cx3 +Dx2 +Ex +F) = (x2 +Px +Q) * (x4 + Rx3 + Sx2 +Tx +U) + (Vx +W)
 左辺を (x2 +Px +Q) で割った結果の (x4 + Rx3 + Sx2 +Tx +U) が商で、 (Vx+W) が余りだ。 与えられた P,Q に対し、商と余りを計算する手続きは、(百何十何といった)3桁の数によって自然数を割算する手続きと大体同じだ。 違うのは、(桁に相当する)個々の係数がすでに実数であること、繰上りがないこと、余りとして負の数が許されることだ。
 この式では左側に位置する上位の係数から順に消していくので、(P,Q) を決めた後は選択肢はなく、余りである (V,W) が決定する。 この余りをゼロベクトルとすべく (P,Q) を工夫する。果たしてそんなことができるだろうか? 大丈夫だ。(V,W) をゼロベクトルにできる (P,Q) は必ずどこかにある。問題はそれが(2次元空間の)どこにあって、どう探すかだ。
 教科書には、一次元の探索には Newton-Raphson、多次元の探索には simplex といった方法が説明されている。 simplex は、細かくは色んなやり方があるのかも知れないが、アフィン変換の逆計算を利用する一方法も考えられる。
 やってみると、こういうスマートな方法は、課題によってうまく行く場合も確かにあるが、安定しない。 非ゼロの傾きを保ってゼロクロスするような場合なら問題ないのだが、二重根、三重根といった重根の場合はスマートな方法の収束は極めて悪くなる。 ゼロ値を追求するノルムとして V,W の二乗和ではなく、それぞれの絶対値の和を取ってみたが、これは誤差に対する感度を高め、有効数字を無駄にしないためだ。 多くの場合、このノルムを高さとした地形はうねうねと走るとても狭い谷となるが、(極小を目指す)simplex では狭い視野で早期に狙いを決めてしまい、大局的な谷底の高低を見逃す傾向がある。
 採用したのは、基準点から一定の半径を置いて、円状にサンプリング点を置く方法だ。具体的には一周を40分割してみた。 有効な降下方向が見つかればそれに従い、なければ、少しずつ半径を縮めて再サンプリングしていく。 これも1スレッドではなく、複数の始点からコンカレントで進める。

【実数という限定について】
 係数範囲は実数としたのは、複素数である必要がない、という意味があると同時に、有理数ではない、という点を意外に思われる人も居るらしいが、私から見たら逆にそれは意外だ。
 そもそも、自然が作り出す数値に有理数か否かという区別があるわけではない。それならば、実数というのは当然の要請なのだ。 にも拘わらず、「有理係数多項式の因数分解が有理係数多項式であるとは限らない」という当然なことを言うのに、数学の世界では猛烈な抵抗に合う。 それも日本だけではない。英語圏の数学界でも同じ模様で、Wikipedia 執筆時に揉めている。
 これは一つには van der Waerden という人の古い教科書が原因であり、 この著者は別に「有理係数多項式の因数分解は有理係数多項式に決まっている」と断言しているわけでもないのだが、そういうケースを中心に遊んで、 これが数学の深い真実だ、みたいな言い方をしているので、世界中の後進の頭は、これだけが真理と誤認してしまっているようなのだ。
 「2のルートは有理数の範囲には存在しない」などという言い方(正しいかも知れないが)やめませんか?「2のルートは有理数ではない」でいいじゃないですか? 命題「有理係数多項式の因数分解が有理係数多項式であるとは限らない」を否定するということは、x2-2 を (x+√2)(x-√2) にする変形はそもそも因数分解とは言えないということでしょうか? それとも有理係数多項式の因数分解はデフォで有理係数多項式の範囲でなくてはならないという国際理解でもあると思っているのかも知れません。 そういう人からすると、x2-1.9881 や、x2-2.0164 は因数分解しても良いが、 x2-2 は因数分解するべきでない式なのかも知れません。 でもこれは、自然と「有理係数多項式になる」のではなくて、有理係数多項式になる例だけを承認しているに過ぎないと言うべきです。