はじめに
中学生で習う2次関数の因数分解を、中学生が考えるであろう考え方の手順で、プログラムで解く方法を考えてみました。最近流行りのプログラミング的思考で、数学の問題を解く、ってことでしょうか。こういう自由研究があってもいいかなと思います。
解きたい問題はa,b,c が与えられた時
$$ax^2 + bx+c = 0\tag{1}$$
を
$$(px+q)(rx+s) = 0 \tag{2}$$
の形に変形する時のp,q,r,sを求める問題です。ここでは中学生が解く時の考え方に近づけないので、解の公式は使いません。
アルゴリズム概要
a,b,c が与えられたとき、p,q,r,sを求めます。
(2)の式より
$$prx^2+(ps+qr)x+qs=0\tag{3}$$
(3) = (1) ですので、
$$a = pr\tag{4}$$$$b=(ps+qr)\tag{5}$$$$c=qs\tag{6}$$
となります。たぶん中学生が習うときは、aの約数としてのpとrを見つける。cの約数としてのqとsを見つける。たすき掛けで、ps+qrを計算してみて、bを一致するものを見つける。といった手順かと思います。この方法を愚直に実行してみます。下にフォローチャトで考え方の概要を示します。
詳細説明
第1段階
a,b,c が与えらられたとき、もしaが負であった場合、(1)式の両辺に-1をかけて、x^2の係数を正にします。
$$ ax^2+bx+c=0$$$$a<0$$
$$ (-a)x^2-bx-c=0$$$$-a>0$$
-a を改めて a と置きます。
$$ ax^2-bx-c=0$$
と書くことにします。aがマイナスだったことは覚えておいて、答えが出た後に結果にマイナスを付けます。
$$-(px+q)(rx+s) = 0$$
第2段階
(4)式、(5)式より、aとcの約数を求めます。aは必ず正、cはその絶対値の約数を求めます。例えば、$$12x^2+24x+9=0\tag{7}$$とします。$$ a = 12 $$ であれば、約数は$$ 1,2,3,4,6,12 $$です。約数 の数はm=6、それぞれの約数を$$a_0, a_1, ..., a_{m-1}$$
と書いておきます。
$$ a = a_i a_{m-1-i}\tag{8}$$
と書けます。
次にcの約数を求めます。$$ c = 9$$ですので、約数の数は$$n=3$$約数は$$1,3,9$$となりまず。(8)式は、$$c=c_i c_{n-1-i} $$と書けます。i=1の時は$$c=c_1 c_1={c_1}^2$$ となります。
第3段階
a の約数がm個で、$$a_0, a_1,..., a_{m-1}$$ c の約数がn個で$$c_0, c_1,..., c_{n-1}$$です。c>0 であれば、(7)式は$$(a_ix+c_j)(a_{m-1-i}x+c_{n-1-j})\tag{9}$$もしくは$$(a_ix-c_j)(a_{m-1-i}x-c_{n-1-j})\tag{10}$$$$i=0,1,...m-1$$$$j=0,1,...n-1$$のいずれかと一致します。教科書にもあるたすきがけで一致するbの値を求めます。$$a_ic_{n-1-j})+c_ja_{m-1-i}$$$$-a_ic_{n-1-j}-c_ja_{m-1-i}$$
一方、c<0であれば、(7)式は$$(a_ix+c_j)(a_{m-1-i}x-c_{n-1-j})\tag{9}$$もしくは$$(a_ix-c_j)(a_{m-1-i}x+c_{n-1-j})\tag{10}$$$$i=0,1,...m-1$$$$j=0,1,...n-1$$のいずれかと一致します。こちらもたすきがけで一致するbの値を求めます。$$-a_ic_{n-1-j}+c_ja_{m-1-i}$$$$a_ic_{n-1-j}-c_ja_{m-1-i}$$
最後に
一致した、a,c の約数をp,q,r,sとします。もし、最初に与えられたaが負の場合にはp,q を負にします。(r,s を負にしても同じ)
中学生が教科書通りに答えを見つける方法はこんな手順かな、と思います。
プログラム
TBD