 
 
 
 
 
   
論よりrunで行ってみましょう8。
| newton.BAS | 
| REM newton.BAS --- Newton法で f(x)=0 の近似解を求める
REM 新x=x+Δx, Δx=-f(x)/f'(x) という漸化式で近似解更新
REM 注意! 1000桁モードにしても超越関数は17桁
REM 超越関数を使わなければ 1000 桁モードで高精度の近似値が求められる
REM その場合は PRINT USING の書式等を適当に直す
REM OPTION ARITHMETIC DECIMAL_HIGH
OPTION ARITHMETIC NATIVE
REM ---------------------------------------------------------------
REM 解きたい方程式 f(x)=0 の左辺 f(x) の定義
FUNCTION F(x)
   LET F=COS(X)-X
   REM LET F=x^2-2
END FUNCTION
REM f'(x)の定義
FUNCTION dfdx(x)
   LET DFDX=-SIN(x)-1
   REM dfdx=2*x
END FUNCTION
REM ---------------------------------------------------------------
INPUT PROMPT "初期値、許容精度(1e-14など)=": X,EPS
REM Newton法を実行
LET MAXITR=100
FOR i=1 TO MAXITR
   LET dx=-f(x)/dfdx(x)
   LET x=x+dx
   PRINT USING "f(--%.################)=---%.##^^^^": x, f(x)
   IF ABS(dx)<EPS THEN
      PRINT USING "Δx=---%.##^^^^":dx
      STOP
   END IF
NEXT I
PRINT "修正量 |Δx| は十分小さくなりませんでした。" 
END
 | 
実行すると「区間の左端、右端」を尋ねてくる。 例えば 0,1 と答える。
| bisection.TXT | 
| 初期値、許容精度(1e-14など)=1,1e-14 f( 0.7503638678402439)= -1.89E-02 f( 0.7391128909113617)= -4.65E-05 f( 0.7390851333852840)= -2.85E-10 f( 0.7390851332151607)= 0.00E+00 f( 0.7390851332151607)= 0.00E+00 Δx= 0.00E+00 | 
 
 
 
 
