一元三次方程(II)
最新更新日期: 2011年4月24日
程式一由網友 roviury 提供。
第一個程式只能計算實根,若果有學習過複數的朋友或需要計算複數根,請使用第二個程式。
注意: 60o 是按 6 0 SHIFT Ans 1。
程式一 (126 bytes 實數版,使用記憶為A, B, C及M)
程式需要在 COMP 模式下執行,因此在選擇新程式位置後,按 1 選用COMP模式。
?→A: ?→B: ?→C: ?→M: - B┘(3A→B: BCM+:
B3 - M┘(2A→M: B2 - C┘(3A→C: M2 - C3:
If Ans>0: Then √( AnsM+: B + 3√( M ) + 3√( M - 2Ans◢ Lbl IfEnd:
2√( C→C: C => 3-1 cos-1( 8M÷C3→M: B + C cos(M◢
B - C cos( M + 60o◢ B - C cos( M - 60o
程式二 (132 / 128 bytes 複數版)
注意 : 若果不需要記存答案,程式中綠色部份可以不輸入 ,5!o是按 5 SHIFT x! SHIFT Ans 1
程式需要在 CMPLX 模式下執行,因此在選擇新程式位置後,按 2 選用CMPLX模式。
?→A: ?→B: ?→C: ?→M: - B┘(3A→B: BCM+:
B3 - M┘(2A→M: B2 - C┘(3A: √(M2 - Ans3M+:
If Ans=Conjg( Ans: Then 3√( M - 2Ans→C: 3√( M→M:
Else 3√( Abs( M ) )∠( 3-1arg( M→M: Conjg( M→C: IfEnd:
M + C + B→A◢ 1∠5!o: M ÷ Ans + B + CAns→C◢
3B - A - Ans→B
例題1: 解 3x3 - 5x2 + x - 4 =0
按 Prog 1 再按 3 EXE - 5 EXE 1 EXE - 4 EXE (顯示第一個根為1.86977)
EXE (第一個程式出現 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 (顯示第二個根為 0.5) EXE (顯示第三個根為 -6)
例題3: 解 x3 + 3x2 + 3x + 1 =0
按 Prog 1 再按 1 EXE 3 EXE 3 EXE 1 EXE (顯示第一個根為 -1)
EXE (顯示第二個根為 -1) EXE (顯示第三個根為 -1)
例題4: 解 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: 輸入的係數為整數或分數較為理想,若果輸入的係數為小數,準確度有可能會減少一點。
註2: 第一個根必為實數根。
註3: 程式用作解一元二次方程時,要捨去其中一個0的解,另外這個0的解有可能因計數機的誤差而出現一個很小的數值。
註4: 若使用程式一及三根均為實數,答案會由大至小順序顯示出現(例如: x3-5x2+8x-4=0)。