home *** CD-ROM | disk | FTP | other *** search
-
-
-
- { -> 252 }
- procedure newton(var x: real);
- const tol = 1.0E-6;
- max = 20;
- var fx,dfx,dx,x1 : real;
- i : integer;
-
- begin { newton }
- error:=false;
- i:=0;
- repeat
- i:=i+1;
- x1:=x;
- func(x,fx,dfx);
- if dfx=0.0 then
- begin
- error:=true;
- x:=1.0;
- writeln(chr(7),'ERROR: slope zero')
- end
- else
- begin
- dx:=fx/dfx;
- x:=x1-dx;
- writeln('x=',x,' fx=',fx,' dfx=',dfx)
- end
- until
- error or
- (i>max) or
- (abs(dx)<=abs(tol*x));
- if i>max then
- begin
- writeln(chr(7),'ERROR: no convergence in ',max,' loops');
- error:=true
- end
- end; { newton }
-
-