論より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 |
実行すると、「初期値と要求精度」を尋ねて来るので、 例えば 1,1e-14 と答えます。
newton.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 |