断り書き
- メモです
- 一般的に高次方程式といえば三次以上のことを指すと思いますが、とりあえず二次も。
二次方程式
ax^2 + bx + c = 0 \tag{1}
二次方程式の解の公式
x = \frac{-b \pm \sqrt{ b^2 - 4ac } }{ 2a }
実装上の注意点
二次方程式の解の公式を単純に実装してしまうと、場合によっては解の精度が悪くなってしまう場合があります。
具体的には、実解があるケースで $4ac$ の絶対値が $b$ の絶対値に比べて非常に小さい場合には $b$ と $\sqrt{ b^2 - 4ac }$ の絶対値が非常に近くなり、解の片方で「桁落ち」が発生してしまいます。
桁落ち(けたおち、英: cancellation)とは、値がほぼ等しく丸め誤差を持つ数値同士の減算を行った場合、有効数字が減少すること[5][7]。絶対値がほぼ等しく符号が異なる数値どうしの加算の場合も同様。
そのため、まずは「桁落ち」の起きない解 $x_1$ を求めてから、解の関係式からもう一つの解 $x_2$ を求める方法を使います(それ以外の解法もあります)。
x_1 = \frac{-b - sign(b) \sqrt{ b^2 - 4ac } }{ 2a }
ここで $sign(b)$ は $b$ が正の場合に $1$ で、負の場合に $-1$ となる関数です($b$ がゼロの場合には「桁落ち」が起きないので、通常の解の公式を使います)。
もう一つの解 $x_2$ は、解の関係から、以下のように求めます。
x_2 = \frac{ c }{ ax_1 }
ちなみに、解の関係は以下の通り。
\begin{align}
ax^2 + bx + c &= 0\\
\Leftrightarrow x^2 + \frac{ b }{ a } x + \frac{ c }{ a } &= 0
\end{align}
この時の実数解を $x_1$ , $x_2$ とすると
\begin{align}
(x - x_1)(x - x_2) &= 0\\
x^2 + (- x_1 - x_2) x + x_1 x_2 &= 0
\end{align}
ゆえに
\begin{align}
x_1 + x_2 &= - \frac{ b }{ a }\\
x_1 x_2 &= \frac{ c }{ a }
\end{align}
三次方程式
ax^3 + bx^2 + cx + d = 0
三次方程式の解法
まず三次の係数の無い式に変形します。
\begin{align}
A &= \frac{b}{a}\\
B &= \frac{c}{a}\\
C &= \frac{d}{a}\\
\end{align}
x^3 + Ax^2 + Bx + C = 0 \tag{2}
以下のように定義した場合
\begin{align}
P &= B - \frac{A^2}{3}\\
Q &= \frac{2A^3}{27} - \frac{AB}{3} + C\\
\omega &= \frac{ -1 + i\sqrt{3} }{2}\\
M &= \sqrt[3]{ -\frac{Q}{2} + \sqrt{ \frac{Q^2}{4} + \frac{P^3}{27} } }\\
N &= \sqrt[3]{ -\frac{Q}{2} - \sqrt{ \frac{Q^2}{4} + \frac{P^3}{27} } }\\
\end{align}
3つの解 $x_0, x_1, x_2$ は
\begin{align}
x_0 &= M + N - \frac{A}{3}\\
x_1 &= \omega M + \omega^2N - \frac{A}{3}\\
x_2 &= \omega^2M + \omega N - \frac{A}{3}\\
\end{align}
つまり
x_n = \omega^n M + \omega^{3-n}N - \frac{A}{3}
となる。
三次方程式の解法のポイント
式(2)に $x = y - \frac{A}{3}$ を代入すると
y^3 + Py + Q = 0
と変形できる。
この方程式の解 $y_0, y_1, y_2$ は
\begin{align}
y_0 &= M + N\\
y_1 &= \omega M + \omega^2N\\
y_2 &= \omega^2M + \omega N\\
\end{align}
となる。
また、 $\omega ^3 = 1$ です。
三次方程式の解法の歴史
三次方程式の解の公式は、 1535 年イタリアの科学者タルターリアが発見した。 しかし、自分の発見を秘密にして、誰にも解けない難問を解く事によって 自分の才能を誇示していた(これは、この時代の風潮らしい)。
同じイタリアの数学者カルダーノは、甘言を弄してタルターリアから 三次方程式の解法を聞き出し、それを発表してしまった。
この事件がきっかけで、 「科学の発見は発見者個人に帰属するものではなく、全ての人が共有するもの」という意識、 「科学の発見の栄誉は、発見者ではなく、発表者に与えられる」というルールが つくられた、らしい(参考文献によると)。
上記の解法は、現在でも「カルダーノの解法」として知られている。
四次方程式
x^4 + Ax^3 + Bx^2 + Cx + D = 0 \tag{3}
四次方程式の解法
式(3)を変形する。
(x^2 + \frac{A}{2}x + \lambda)^2 - \Bigl( x^2(\frac{A^2}{4} + 2\lambda - B) + x(A\lambda - C) + \lambda^2 - D \Bigr) = 0 \tag{3-1}
この式は、カッコを展開すると $\lambda$ が消え、先ほどの式と同じになる。
そのため、 $\lambda$ はどんな値であっても問題無い。
そこで
(A\lambda - C)^2 = (\lambda^2 - D)(A^2 + 8\lambda - 4B) \tag{3-2}
を満たす $\lambda$ を選ぶことにする。
この式は $\lambda$ の三次方程式になっているので、三次方程式の解の公式(一般解法)で解く事が出来る。
$\lambda$ が式(3-2) を満たすならば、式(3-1) の後半は完全平方式となり、 $\alpha, \beta$ を以下のようにおけば
\begin{align}
\alpha^2 &= (\frac{A^2}{4} + 2\lambda - B)\\
2\alpha\beta &= (A\lambda - C)\\
\beta^2 &= \lambda^2 - D\\
\end{align}
つまり
(\alpha x + \beta)^2 = \alpha^2 x^2 + 2\alpha\beta x + \beta^2
となり、式(3-1) は
(x^2 + \frac{A}{2}x + \lambda)^2 - (\alpha x + \beta)^2 = 0\\
\Leftrightarrow \quad (x^2 + \frac{A}{2}x + \lambda)^2 = (\alpha x + \beta)^2\\
と変形できる。 これは
\begin{align}
x^2 + \frac{A}{2}x + \lambda &= \alpha x + \beta\\
x^2 + \frac{A}{2}x + \lambda &= - ( \alpha x + \beta)
\end{align}
の、2つの二次方程式と同じ事になる。
四次方程式の解法の歴史
イタリアの数学者カルダーノは 1545 年、4次方程式の一般解法を完成させた。
ちなみに上の解法は、カルダーノの解法では無いようだ。 また、他にも何通りかの解法が存在する。
五次方程式の解法
ノルウェーの数学者アーベルが 1824 年、 五次以上の高次方程式の解の公式は存在しない事を証明した。
参考文献
- 「共立 数学公式」共立出版
- 「アイザック・アシモフの科学と発見の年表」丸善株式会社