三次函數因式分解
網友 roviury 及 Skwai 提供修改意見。
更新日期: 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: 第一個係數的數值越大,計算的時間可能會越長。