next up previous contents
: 実装 : 代数方程式 : 代数方程式   目次

二次方程式

(参考文献:Numerical Recipes in C, 5.5 二次方程式、三次方程式)

二次方程式は以下のように定義される。


$\displaystyle a x^2 + b x + c = 0$     (1.1)

ここで、 $x$ は求めるべき解であり、 $a$ は非ゼロのスカラー、 $b$$c$ はスカラーである。

この方程式の解 $x$ の種類は、 以下の判別式 $d$ によって決定される。


$\displaystyle d = b^2 - 4 a c$     (1.2)

もし、$d$ が0の場合、解は一つの重根 $x$ となる。


$\displaystyle x = - \frac{b}{2 a}$     (1.3)

もし、$d$ が正の場合、解は二つの実根 $x_0$$x_1$となる。


$\displaystyle x_0$ $\textstyle =$ $\displaystyle \frac{-b + \sqrt{d}}{2 a}$  
$\displaystyle x_1$ $\textstyle =$ $\displaystyle \frac{-b - \sqrt{d}}{2 a}$ (1.4)

もし、$d$ が負の場合、解は二つの虚根となる。

なお、解をロバストに求めるために、以下の手法を用いる。

まず、以下の $q$ を求める。


$\displaystyle q = -1/2 ( b + sgn( b ) \sqrt{d} )$     (1.5)

これを用いて、


$\displaystyle x_0$ $\textstyle =$ $\displaystyle \frac{q}{a}$  
$\displaystyle x_1$ $\textstyle =$ $\displaystyle \frac{c}{q}$ (1.6)




next up previous contents
: 実装 : 代数方程式 : 代数方程式   目次
Hiroshi KAWAI 平成15年8月11日