Quantcast
Channel: 円周率近似値の日に生まれて理系じゃないわけないだろ! - knifeのblog
Viewing all articles
Browse latest Browse all 5376

因数分解アルゴリズム

$
0
0

午後のひとときに、数学の因数分解の新たなアルゴリズムを試してみる。

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に合わせて使い分けると良いかと思う。


ではでは
 

 


Viewing all articles
Browse latest Browse all 5376

Trending Articles