三次函數因式分解

網友 roviurySkwai 提供修改意見。

更新日期: 2015年1月14日

程式可以將三次函數分解,三次函數的形式為 ax3 + bx2 + cx + d 或 ax3 + bx2y + cxy2 + dy3,程式會將函數先分解為一個一次式及一個二次式,若果二次式可以分解,則會再分解二次式為兩個一次式及一個常數因子。

程式一 (311 bytes)

?→A: ?→B: -B┘(3A→B: ?→C: ?→D:

B3 - (BC + D)┘(2A→M: B2-C┘(3A: M2 - Ans3→Y:

0>Y => Goto 0: B + 3√( M + √( Y ) ) + 3√( M - √( Y→D: 1→M: Goto 1:

Lbl 0: 2 3√( Pol( M , √( -Y→X: Y÷3→Y: 3→M: Lbl 4: B + Xcos( Y+ 5!oM→D:

Lbl 1: Fix 0: Rnd(AD: Norm 1: Ans≠Rnd(AD => M - 1→M: Ans => Goto 4: M-1: 1→M:

Lbl 5: Fix 0: Rnd(MD: Norm 1: Ans≠Rnd(MDM+ => Goto 5: M◢ -DM→X◢ A ÷ M→A◢

AD-3AB→B◢ M-1(C - XAns→C◢ -B┘(2A→B: B + √( B2 - C┘A→X:

Fix 0: AX = Rnd( AX: Norm 1: log( Ans: For 0→D To 1: 1→M: Fix 0: Lbl 3:

XM≠Rnd(XMM+ => Goto 3: Norm 1: M◢ - XAns◢ 2B - X→X: A÷M→A: Next

註: 如果是使用fx-3650P II或fx-50FH II,上述程式中紫色的開括號 ( 可以省略,程式長度可減2 byte。

程式二 (269 bytes,速度較慢,注意: 5!o是按 5 SHIFT x! SHIFT Ans 1。)

?→A: ?→B: B┘(3A→B: ?→C: ?→D:

- B3 - (D - BC)┘(2A→M: B2-C┘(3A: M2 - Ans3→Y:

√( Abs(Y: If 0>Y: Then 2 3√( Pol( M , Ans→X: 3→M:

While Ans: B - Xcos( Y÷3+ 5!oM→D:  1M-: Msin( ADπr: WhileEnd:

Else B - 3√( M + Ans ) - 3√( M - Ans→D: IfEnd:

0 P sin( ADπr)^(10→M: While sin(MDπr)^(10: 1M+: WhileEnd: M◢

MD→X◢ A÷M→A◢ 3AB-AD→B◢ M-1(C - XB→C◢

B┘(2A→B: B - √( B2 - C┘A →X:

For 0→D To 0 P sin(AXπr)^(10: MM-: Lbl 3: 1M+: sin(MXπr)^(10 => Goto 3:

M◢ MX◢ 2B - X→X: A÷M→A: Next

 

例題1: 因式分解 3x3 - 7x2 + 29x - 9

按 Prog 1 再按 3 EXE - 7 EXE 29 EXE - 9 EXE (顯示一次因子的x係數為 3)

EXE (顯示一次因子的常數項為 -1)

EXE (顯示二次因子的x2係數為 1)

EXE (顯示二次因子的x係數為 -2)

EXE (顯示二次因子的常數項為 9)

EXE (出現Math ERROR表示二次因子不能再分解)

所以 3x3 - 7x2 + 29x - 9 = (3x - 1)(x2 - 2x + 9)

 

例題2: 因式分解 30x3 + 31x2 - 25x - 6

按 Prog 1 再按 30 EXE 31 EXE - 25 EXE - 6 EXE (顯示一次因子的x係數為 3)

EXE (顯示一次因子的常數項為 - 2)

EXE (顯示二次因子的x2係數為 10)

EXE (顯示二次因子的x係數為 17)

EXE (顯示二次因子的常數項為 3)

EXE (顯示第二個一次因子的x係數為 5)

EXE (顯示第二個一次因子的x常數項為 1)

EXE (顯示第三個一次因子的x係數為 2)

EXE (顯示第三個一次因子的x常數項為 3)

EXE (顯示常數因子1)

所以

30x3 + 31x2 - 25x - 6 = (3x - 2)(10x2 + 17x + 3)

30x3 + 31x2 - 25x - 6 = 1(3x - 2)(5x + 1)(2x + 3) = (3x - 2)(5x + 1)(2x + 3)

 

例題3: 因式分解 8x3 + 27y3

按 Prog 1 再按 8 EXE 0 EXE 0 EXE 27 EXE (顯示一次因子的x係數為 2)

EXE (顯示一次因子的y係數為 3)

EXE (顯示二次因子的x2係數為 4)

EXE (顯示二次因子的xy係數為 - 6)

EXE (顯示二次因子的y2係數為 9)

EXE (出現Math ERROR表示二次因子不能再分解)

所以 8x3 + 27y3 = (2x + 3y)(4x2 - 6xy + 9y2)

 

註: 程式亦可以用作分解二次函數,依次輸入係數,最後的數據輸入0,只要將答案其中一個中 x + 0 的因子捨去即可。

例題4: 因式分解 x2 - 7x + 12

按 Prog 1 再按 1 EXE - 7 EXE 12 EXE 0 EXE (最後輸入0,顯示一次因子的x係數為 1)

EXE (顯示一次因子的常數項為 - 4)

EXE (顯示二次因子的x2係數為 1)

EXE (顯示二次因子的x係數為 -3)

EXE (顯示二次因子的常數項為 0)

EXE (顯示第二個一次因子的x係數為 1)

EXE (顯示第二個一次因子的x常數項為 - 3)

EXE (顯示第三個一次因子的x係數為 1)

EXE (顯示第三個一次因子的x常數項為 0)

EXE (顯示常數因子1)

所以 x2 - 7x + 12 = (x - 4)(x - 3)

 

註1: 注意輸入的係數必須為整數,否則計算不成立。

註2: 若果程式出現math ERROR即表示不能再分解。

註3: 第一個係數的數值越大,計算的時間可能會越長。

 

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

Free Web Hosting