二次函數因式分解及一元二次方程

程式新版

參考了網友roviury意見進行修改。

第一個程式及第三個程式雖然較簡短,但計算較大的因子時(例如: 分解 10000x2 + 200x + 1),速度會很慢,亦是現時大部份二次因式分解程式的問題。第二個程式克服了這方面的問題,能夠快速計算出較大的整數因子。

更新日期: 2012年1月7日

第一個程式 (98 bytes)

ClrMemory: ?→A: ?→B: ?→C: √( B2 - 4AC→C:

(C  - B)┘(2A→X (- B - C )┘(2A→Y

For 0→D To 1: Fix 0: Lbl 0: 1M+:

XM - Rnd( XM => Goto 0: Norm 1: A÷M→A: MM-

- XAns◢ Y→X: Next: A

 

第二個程式 (132 bytes)

ClrMemory: ?→A: ?→B: ?→C: √( B2 - 4AC→C:

(C  - B)┘(2A→X (- C - B)┘(2A→Y

While M≠2M+: Fix 0: 1→B: X→C: Lbl 1: B→D:

X - B Rnd( X÷B→B: D→X: 1→D:

B => Rnd( Abs( B-1→D: DC - Rnd( DC => Goto 1:

Norm 1: D◢ - DC◢ A÷D→A: Y→X:

WhileEnd: A

 

第三個程式由網友 Skwai 提供。

第三個程式(簡短版本) (81 bytes)

注意: 這個程式為第一個程式精簡版本,雖然更加簡短,但速度較慢,另外亦有一些額外限 制,程式可能無法解 ax2 + bx =0 形式的方程(即其中一個解為x=0的情況),因此亦可能無法分解 ax2 + bx (即其中一個因子為x)。

ClrMemory: ?→A: ?→B: ?→C:

 2C┘(- B- √( B2 - 4AC→XC┘(AAns→Y

For 0→D To 1: Lbl 0: 1M+:

sin(πrXM => Goto 0: A┘M→A:

MM-◢ - XAns◢ Y→X: Next: A

 

註1:輸入的係數可以是整數、小數分數。若果所得的答案為小數可按 a b/c 嘗試轉為分數。

註2:若果只計一元二次方程問題,顯示兩根後可直接按AC中止程式。

註3: 若果不想顯示一元二次方程式的根,可將綠色的改為 : 即可。

註4: 若果函數不能分解為有理數因子,第一及第三個程式會出現Math ERROR或是長時間顯示空白,這時請按AC中止程式執行,第二個程式則會出現Math ERROR或顯示很大的分子或分母(大於10個位整數),要注意這 時是近似值答案,實際上沒有簡單因子。

 

例題1: 因式分解 f(x)=42x2 - 20x + 2

按 Prog 1  再按 42 EXE - 20 EXE 2 EXE (顯示 f(x)=0的一個根為1/3)

EXE (顯示 f(x)=0的另一個根為1/7)

EXE (顯示第一個因子x項係數為 3)

EXE (顯示第一個因子常數項係數為 -1)

EXE (顯示第二個因子x項係數為 7)

EXE (顯示第二個因子常數項係數為 -1)

EXE (顯示第三個常數因子)為 2

因此,42x2 – 20x + 2 = 2(3x - 1)(7x - 1)

 

例題2: 因式分解 9a2 - 12ab + 4b2

按 Prog 1  再按 9 EXE - 12 EXE 4 EXE (顯示2/3)

EXE (顯示2/3)

EXE (顯示3) EXE (顯示 - 2)

EXE (顯示3) EXE (顯示 - 2)

EXE (顯示1)

因此,9a2 - 12ab + 4b2 = (3a -  2b)2

 

例題3: 因式分解 18a2 - 32b2

按 Prog 1  再按 18 EXE 0 EXE -32 EXE (顯示 4/3)

EXE (顯示 - 4/3)

EXE (顯示3) EXE (顯示 - 4)

EXE (顯示3) EXE (顯示 4)

EXE (顯示2)

因此,18a2 - 32b2 = 2(3a - 4b)(3a + 4b)

 

返回 CASIO fx-50FH、fx-3650P II、fx-50FH II及fx-50F PLUS 程式集