午後のひとときに、数学の因数分解の新たなアルゴリズムを試してみる。
x2+px+q=0
という2次方程式を因数分解することを考える。
手順
(A) p/2を求める。
(B) (A)で求めたものを2乗してqを引いて平方を取る。
(C) (A)で求めたもに±(B)で求めたものを(C1)、(C2)とすると、(x+(C1))(x+(C2)となる。
つまり、いちいち二次方程式の解の公式を持ち出さずに、因数分解をするアルゴリズムというか、テクニックとなります。
適当な例を試してみましょう。
例)
x2+380x+32851=0
380/2=190
√1902-32851=√36100-32851=√3249=57
190±57=247, 133
(x+247)(x+133)=0
求まりますね。
x2に1以外の係数があるような場合であれば、解の公式で求めるだろうが、1ならばこの方法のほうがスマートに求まるように思う。
なぜそう思うかというと、判別式Dの部分が大きな値になればなるほど面倒になるからです。
b2-4acよりも、(p/2)2-qの方が値は小さくなるので計算が楽ですよね。
例では、
190の2乗の計算、
そこから32851を引いて平方を取る。
36100-32851=3249
3249の素因数分解をすることになり、
3249は9で割り切れる。
3249÷9=361
361は192
3×19=57
190±57=247, 133
もし、解の公式を使ったならば、
380の2乗の計算、
そこから4×32851を引いて平方を取る。
144400-131404=12996
12996は4で割り切れる。
12996÷4=3249
3249は9で割り切れる。
3249÷9=361
361は192
2×3×19=114
(-380±114)/2=-133, -247
計算量がそこまで違いは無いようにみえるが、解の公式の方が多少面倒というのは、実際に計算してみると解るかと思います。
さて、このアルゴリズムを数式として表してみると、
-x = (p/2)±√(p/2)2-q
となる。
p=b/a
q=c/a
を代入すると、
-x=(b/(2a))±√(b/(2a))2-(c/a)
-x=(b/(2a))±√(b/(2a))2-(4ac/(2a)2)
-x=(b±√b2-4ac)/(2a)
x=(-b±√b2-4ac)/(2a)
と解の公式となるので、
先の式は正しいことが証明出来ます。
一応、解の公式への導出も示しておく。
ax2+bx+c=0
x2+(b/a)x+(c/a)=0
x2+(b/a)x+(b2/(4a2))-(b2/(4a2))+(c/a)=0
(x+(b/(2a)))2-(b2/(4a2))+(c/a)=0
(x+(b/(2a)))2=(b2/(4a2))-(c/a)
(x+(b/(2a)))2=(b2-4ac)/(4a2)
x+(b/(2a)=±√b2-4ac)/(2a)
x=(-b±√b2-4ac)/(2a)
TPOに合わせて使い分けると良いかと思う。
ではでは