本題である四次方程式の解法です.フェラーリの解法について説明します.
参考は,また例によってオイラーの贈物とWikipedia(en)です.
双方やり方が若干異なるのですが,オイラーの贈物で書かれている方が簡潔なのでそちらの方法で説明します(自分でわかりやすいようにちょっと説明は変えますが).
フェラーリの解法
三次の項を消去する
まず,チルンハウス変換で三次の項を削除して,両辺を完全平方式にするような定数を挿入します.
この定数を得る過程で三次方程式(分解方程式)を解きます.最終定期に,完全平方式にした両辺を開平して解を得ます.
\(Ax^4 + Bx^3 + Cx^2 + Dx + E = 0\)
\(x=u-\frac{B}{4A}\)
と置く.
\(A\left(u-\frac{B}{4A}\right)^4 + B\left(u-\frac{B}{4A}\right)^3 + C\left(u-\frac{B}{4A}\right)^2 + D\left(u-\frac{B}{4A}\right) + E = 0\)
\(A\left(u^4 – 4\cdot\frac{B}{4A}u^3 + 6\cdot\left(\frac{B}{4A}\right)^{2}u^{2} – 4\cdot\left(\frac{B}{4A}\right)^{3}u + \left(\frac{B}{4A}\right)^{4}\right)\)
\(+B\left(u^3 – 3\cdot\frac{B}{4A}u^2 + 3\cdot\left(\frac{B}{4A}\right)^{2}u – \left(\frac{B}{4A}\right)^{3}\right)\)
\(+C\left(u^2 – 2\cdot\frac{B}{4A}u + \left(\frac{B}{4A}\right)^{2}\right)\)
\(+D\left(u – \frac{B}{4A}\right) + E = 0\)
\(A\left(u^4 – \frac{B}{A}u^3 + \frac{3B^2}{8A^2}u^{2} -\frac{B^3}{16A^3}u + \frac{B^4}{256A^4}\right)\)
\(+B\left(u^3 – \frac{3B}{4A}u^2 + \frac{3B^2}{16A^2}u – \frac{B^3}{64A^3}\right)\)
\(+C\left(u^2 – \frac{B}{2A}u + \frac{B^2}{16A^2}\right)\)
\(+D\left(u – \frac{B}{4A}\right) + E = 0\)
\(Au^4 – Bu^3 + \frac{3B^2}{8A}u^{2} -\frac{B^3}{16A^2}u + \frac{B^4}{256A^3}\)
\(+Bu^3 – \frac{3B^2}{4A}u^2 + \frac{3B^3}{16A^2}u – \frac{B^4}{64A^3}\)
\(+Cu^2 – \frac{BC}{2A}u + \frac{B^{2}C}{16A^2}\)
\(+Du – \frac{BD}{4A} + E = 0\)
\(Au^4 + \left(\frac{3B^2}{8A} – \frac{3B^2}{4A} + C\right)u^2 + \left(-\frac{B^3}{16A^2} + \frac{3B^3}{16A^2} – \frac{BC}{2A} + D\right)u\)
\( + \frac{B^4}{256A^3} – \frac{B^4}{64A^3} + \frac{B^{2}C}{16A^2} – \frac{BD}{4A} + E = 0\)
\(Au^4 + \left(\frac{3B^2 -6B^2}{8A} + C\right)u^2 + \left(\frac{3B^3 – B^3}{16A^2} – \frac{BC}{2A} + D\right)u\)
\( + \frac{B^4 – 4B^4}{256A^3} + \frac{B^{2}C}{16A^2} – \frac{BD}{4A} + E = 0\)
\(u^4+\frac{1}{A}\left(\frac{-3B^2}{8A}+C\right)u^2+\frac{1}{A}\left(\frac{2B^3}{16A^2}-\frac{BC}{2A}+D\right)u+ \frac{-3B^4}{256A^4}+\frac{B^{2}C}{16A^3}-\frac{BD}{4A^2}+\frac{E}{A}= 0\)
\(u^4+\left(\frac{-3B^2}{8A^2}+\frac{C}{A}\right)u^2+\left(\frac{B^3}{8A^3}-\frac{BC}{2A^2}+\frac{D}{A}\right)u+ \frac{-3B^4}{256A^4}+\frac{B^{2}C}{16A^3}-\frac{BD}{4A^2}+\frac{E}{A}= 0\)
$$u^3$$の項が消えました.
\(\alpha=\frac{-3B^2}{8A^2}+\frac{C}{A}\)
\(\beta=\frac{B^3}{8A^3}-\frac{BC}{2A^2}+\frac{D}{A}\)
\(\gamma=\frac{-3B^4}{256A^4}+\frac{B^{2}C}{16A^3}-\frac{BD}{4A^2}+\frac{E}{A}\)
と置いて,
\(u^4 + \alpha u^2 + \beta u + \gamma = 0\)
ここから本題に入ります.
変数の置き換え
\(u^4 + \alpha u^2 + \beta u + \gamma = 0\)
\(u^4 = -\alpha u^2 – \beta u – \gamma\)
両辺を$$u$$に関する完全平方式にしたいわけですが,ここで$$zu^2 + \frac{z^2}{4}$$という項を両辺に足します.
\(u^4 + zu^2 + \frac{z^2}{4}= -\alpha u^2 – \beta u – \gamma + zu^2 + \frac{z^2}{4}\)
ホントにそんなことしていいの?という気もしますが,両辺に足しているので差し引きゼロです.もとの方程式を壊してはいません.$$z$$は何らかの定数だと考えてください.
両辺を$$u$$に関して整理します.
\(\left(u^2 + \frac{z}{2}\right)^2= (z-\alpha)u^2 – \beta u + \frac{z^2}{4} – \gamma\)
左辺は完全平方式になっています(そうなるように$$zu^2 + \frac{z^2}{4}$$という式を選んでるわけですが).
右辺は$$u$$の二次式になっています.これを$$(u+?)^2$$という形にしたいわけです.そのようになる$$z$$の値をこれから探します.
ところで,二次式が完全平方式となるためには判別式がゼロである必要があります.
ということは,右辺の$$u$$に関する二次式から次の方程式を作ることが出来ます.
\((-\beta)^2 – 4(z-\alpha)(\frac{z^2}{4} – \gamma)=0\)
所謂$$B^2 – 4AC$$の形です.この式を$$z$$について整理すると,
\(\beta^2 – 4\left(\frac{1}{4}z^2(z-\alpha) – \gamma(z-\alpha)\right)=0\)
\(\beta^2 – z^2(z-\alpha) + 4\gamma(z-\alpha)=0\)
\(\beta^2 – z^3 + \alpha z^2 + 4\gamma z – 4\gamma\alpha=0\)
\(-z^3 + \alpha z^2 + 4\gamma z – 4\gamma\alpha + \beta^2=0\)
\(z^3 – \alpha z^2 – 4\gamma z + 4\gamma\alpha + \beta^2=0\)
\(z^3 – \alpha z^2 – 4\gamma z + \left(4\gamma\alpha + \beta^2\right)=0\)
これを四次方程式の三次分解方程式と言います.三次方程式の解法は前回やったので省略します.
分解方程式の解の一つ(どれでも良い)を$$\Omega$$とすると,
\(\left(u^2 + \frac{z}{2}\right)^2= (z-\alpha)u^2 – \beta u + \frac{z^2}{4} – \gamma\)
は,以下のようになります.
\(\left(u^2 + \frac{\Omega}{2}\right)^2=(\Omega-\alpha)u^2 – \beta u + \frac{\Omega^2}{4} – \gamma\)
\(=(\Omega-\alpha)\left(u^2 – \frac{\beta}{(\Omega-\alpha)}u + \frac{\frac{\Omega^2}{4} – \gamma}{(\Omega-\alpha)}\right)\)
\(=(\Omega-\alpha)\left(\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2-\left(\frac{\beta}{2(\Omega-\alpha)}\right)^2+\frac{\frac{\Omega^2}{4}-\gamma}{(\Omega-\alpha)}\right)\)
\(=(\Omega-\alpha)\left(\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2-\frac{\beta^2}{4(\Omega-\alpha)^2}+\frac{\frac{\Omega^2}{4}-\gamma}{(\Omega-\alpha)}\right)\)
\(=(\Omega-\alpha)\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2-\frac{\beta^{2}}{4(\Omega-\alpha)}+\frac{\Omega^2}{4}-\gamma\)
\(=(\Omega-\alpha)\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2-\frac{1}{4(\Omega-\alpha)}\left(\beta^{2}-4(\Omega-\alpha)\left(\frac{\Omega^2}{4}-\gamma\right)\right)\)
\(=(\Omega-\alpha)\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2-\frac{1}{4(\Omega-\alpha)}\cdot 0\)
\(=(\Omega-\alpha)\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2\)
\(\left(u^2 + \frac{\Omega}{2}\right)^2=(\Omega-\alpha)\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)^2\)
開平して,
\(u^2 + \frac{\Omega}{2}=\pm\sqrt{\Omega-\alpha}\left(u-\frac{\beta}{2(\Omega-\alpha)}\right)\)
\(u^2 + \frac{\Omega}{2}=\pm\sqrt{\Omega-\alpha}\cdot u \mp\sqrt{\Omega-\alpha}\cdot\frac{\beta}{2(\Omega-\alpha)}\)
\(u^2 \mp\sqrt{\Omega-\alpha}\cdot u + \frac{\Omega}{2} \pm\sqrt{\Omega-\alpha}\cdot\frac{\beta}{2(\Omega-\alpha)}= 0\)
\(u^2 \mp\sqrt{\Omega-\alpha}\cdot u + \frac{\Omega}{2} \pm\frac{\beta}{2\sqrt{\Omega-\alpha}}= 0\)
解の一般形は,
\(u=\frac{1}{2}\left(\pm_{s}\sqrt{\Omega-\alpha}\pm_{t}\sqrt{(\Omega-\alpha)\mp_{s}\left(\frac{\Omega}{2}+\frac{\beta}{2\sqrt{\Omega-\alpha}}\right)}\right)\)
※ $$\pm$$の添え字が違うものは独立に変化すると考えてください.
特殊な場合
四次方程式でも,チルンハウス変換後の
\(u^4 + \alpha u^2 + \beta u + \gamma = 0\)
の係数によっては後の計算を省略できます.
$$\beta=0$$の場合
\(u^4 + \alpha u^2 + 0\cdot u + \gamma = 0\)
\(u^4 + \alpha u^2 + \gamma = 0\)
これは複二次方程式(biquadratic equation)と呼ばれる形式です.見ての通り$$u^2$$の二次式となっています.
\(u^2=\frac{-\alpha \pm \sqrt{\alpha^2 – 4\cdot 1 \dot \gamma}}{2\cdot 1}\)
\(u^2=\frac{-\alpha \pm \sqrt{\alpha^2 – 4\gamma}}{2}\)
\(u=\pm_{t}\sqrt{\frac{-\alpha \pm_{s} \sqrt{\alpha^2 – 4\gamma}}{2}}\)
$$\gamma=0$$の場合
\(u^4 + \alpha u^2 + \beta u + 0 = 0\)
\(u^4 + \alpha u^2 + \beta u = 0\)
\(u(u^3 + \alpha u + \beta)= 0\)
解は$$u=0$$と$$u^3 + \alpha u + \beta=0$$の三つの根になります.
これらを使えばトーラスとレイの交差判定が可能です.
ちゃんと調べていませんが,クラインの壺なんかも四次曲面らしいのでこういった四次方程式の解法が使えます.
プログラムとしてこの解法を実装する場合は複素数が扱える必要があります.C++ならstd::complex<T>というやつがあります.実装例はいずれ載せようかと思います.
次回は数値解析による求解について書こうと思います.
(そういえばトーラスの交点における法線の計算方法を書いていませんでした.トーラスの回にリンクしたPDFに書いてありますケド.)