牛頓法(II)
程式由網友 roviury 提供。
牛頓法(II)程式會使用一個合適△值計算近似值,亦可以避免函數一階導數為0問題(f'(x)=0),程式會自動選取足夠準確度,不用經過很多中間很多近似值答案,直接得出最後答案。
程式編寫日期: 2011年2月28日
注意: E是按 EXP。
程式一(89 bytes,不包括綠色的函數方程)
?→X: E-15→C: MM-: Lbl 0: X3-2X-1→D: MM- => Goto 1:
D=0 => X◢ D→B: 1M+: X+C→X: Goto 0: Lbl 1: If B=D:
Then 4C+5C2→C: Else X + DC÷ (B-D→X: . 8C→C: IfEnd: Goto 0
程式二(97 bytes,不包括綠色的函數方程,綠色函數方程變數可用X或Ans)
?→X: E-15→C: MM-: X: Lbl 0: X3-2X-1→D: MM- => Goto 1:
D=0 => X◢ D→B: 1M+: X+C→X: Goto 0: Lbl 1: If B=D:
Then 4C+5C2→C: X: Else . 8C→C: X + DC÷ 1.25(B-D→X:
IfEnd: Goto 0
註1: 綠色的X3 - 2X - 1是函數方程(變數是X,若果是程式二變數亦可以使用Ans),若果想計算其它方程,只要修改綠色的部份。
註2: 本程式是用近似值的方法去計微分值,所以有可能與真正的牛頓法會有小小分別。
註3: 若果希望計算複數根,可將程式改為在複數模式輸入,輸入後只要初始值為a+bi (a可為0),但不能計算實根。
例題: 用牛頓法計算方程式 x3 – 2x – 1 = 0 的其中一個根,以1為開始的數值 。
按 Prog 1 再按 1 EXE (顯示答案為1.618033989)