一元三次方程(I)
程式修改日期: 2005年12月25日 (更新日期: 2007年9月3日)
程式可以解一元三次方程式,若果答為分數(有理數),本程式較第(II)版有較大機會可直接得出分數答案,建議將計數機預先設定為假分數形式表示(按六次 Mode,再按 1 2 )。
第三及第四個程式只能計算實根,若果有學習過複數的朋友或需要計算複數根,請使用第 一及第二個程式。
第一個程式 (130 bytes)
程式需要在 CMPLX 模式下執行,因此在輸入程式前請先按 Mode 2。
?→A: ?→B: B┘- 3A→B: ?→C: C┘A→C: ?→M:
B3 - BAns┘2 - M┘(2A→M:√( ( C┘3 - B2)3 +
Ans2 M+: Ansi => 2 3√Abs M cos ( arg M ÷ 3) => Goto 0:
3√M + 3√( M + 2Ansi: Lbl 0: Ans + B→A◢ 3B - Ans→M:
M┘2 + √(AM - C + M2┘4→B◢ M - Ans→C
第二個程式 (125 bytes,不儲存第二個根)
程式需要在 CMPLX 模式下執行,因此在輸入程式前請先按 Mode 2。
?→A: ?→B: B┘- 3A→B: ?→C: C┘A→C: ?→M:
B3 - BAns┘2 - M┘(2A→M:√( ( C┘3 - B2)3 +
Ans2 M+: Ansi => 2 3√Abs M cos ( arg M ÷ 3) => Goto 0:
3√M + 3√( M + 2Ansi: Lbl 0: Ans + B→A◢ 3B - Ans→M:
M┘2 + √(AM - C + M2┘4 M-◢ M
第三個程式 (138 bytes 實數版 (Comp模式) )
?→A: ?→B: B┘- 3A→B: ?→C: C┘A→C: ?→M:
B3 - BAns┘2 - M┘(2A→M: B2 - C┘3→D: M2 - Ans3→X:
0>X => 2 √D cos ( 3-1 cos-1 M┘√D3) => Goto 0: √XM+:
3√M + 3√( M - 2 Ans: Lbl 0: Ans + B→A◢ 3B - Ans→M:
M┘2 + √(AM - C + M2┘4→B◢ M - Ans→C
第四個程式 (133 bytes 實數版 (Comp模式),不儲存第二個根)
?→A: ?→B: B┘- 3A→B: ?→C: C┘A→C: ?→M:
B3 - BAns┘2 - M┘(2A→M: B2 - C┘3→D: M2 - Ans3→X:
0>X => 2 √D cos ( 3-1 cos-1 M┘√D3) => Goto 0: √XM+:
3√M + 3√( M - 2 Ans: Lbl 0: Ans + B→A◢ 3B - Ans→M:
M┘2 + √(AM - C + M2┘4 M-◢ M
例題1: 解 3x3 - 5x2 + x - 4 =0
按 Prog 1 再按 3 EXE - 5 EXE 1 EXE - 4 EXE (顯示第一個根為1.86977)
EXE (第三及第四個程式出現 Math ERROR,而第一及第二個程式右上角出現R<=>I,表示為複數解)
(顯示第二個根實數部為 - 0.101554)
Shift Re<=>Im (顯示第 二個根虛數部為 0.838323 i)
EXE (顯示第三個根的實數部為 - 0.101554)
Shift Re<=>Im (顯示第 三個根虛數部為 - 0.838323 i)
例題2: 解 2x3 - x2 - 72x + 36 =0
按 Prog 1 再按 2 EXE - 1 EXE - 72 EXE 36 EXE (顯示第一個根為6)
EXE (顯示第二個根為 1/2) EXE (顯示第 三個根為 -6)
例題3: 解 x2 - 7x + 12 = 0 (一元二次方程)
方程可以寫成 x3 - 7x2 + 12x = 0 (其中捨去一個 x=0 的解)
按 Prog 1 再按 1 EXE - 7 EXE 12 EXE 0 EXE(顯示第一個實數根為4)
EXE (顯示第二個實數根為3) EXE (顯示第三個根為0 (捨去))
註1: 第一個程式執行完成後,可按 RCL A、RCL B 及RCL C分別會顯示三個根的數值。 第二個及第四個程式的第一個根及第三個根記存在記憶A及M中,第二個根沒有記存,若為複數根(第二個程式)可以參考第三個根,因為第二個根與第三個根有共軛複數的關係。
註2: 輸入的係數為整數或分數較為理想,若果輸入的係數為小數,準確度有可能會減少一點。
註3: 第一個根必為實數根。
註4: 程式用作解一元二次方程時,要捨去其中一個0的解,另外這個0的解有可能因計數機的誤差而出現一個很小的數值。