Chapter Contents 
Previous 
Next 
General Statistics Examples 
This example solves a nonlinear system of equations by Newton's method. Let the nonlinear system be represented by
In order to find x such that F goes to 0, an initial estimate x_{0} is chosen, and Newton's iterative method for converging to the solution is used:
For optimization problems, the same method is used, where F(x) is the gradient of the objective function and J(x) becomes the Hessian (NewtonRaphson).
In this example, the system to be solved is
/* Newton's Method to Solve a Nonlinear Function */ /* The user must supply initial values, */ /* and the FUN and DERIV functions. */ /* on entry: FUN evaluates the function f in terms of x */ /* initial values are given to x */ /* DERIV evaluates jacobian j */ /* tuning variables: CONVERGE, MAXITER. */ /* on exit: solution in x, function value in f close to 0 */ /* ITER has number of iterations. */ start newton; run fun; /* evaluate function at starting values */ do iter=1 to maxiter /* iterate until maxiter iterations */ while(max(abs(f))>converge); /* or convergence */ run deriv; /* evaluate derivatives in j */ delta=solve(j,f); /* solve for correction vector */ x=x+delta; /* the new approximation */ run fun; /* evaluate the function */ end; finish newton; maxiter=15; /* default maximum iterations */ converge=.000001; /* default convergence criterion */ /* Usersupplied function evaluation */ start fun; x1=x[1] ; x2=x[2] ; /* extract the values */ f= (x1+x2x1*x2+2)// (x1*exp(x2)1); /* evaluate the function */ finish fun; /* Usersupplied derivatives of the function */ start deriv; /* evaluate jacobian */ j=((1x2)(1x1) )//(exp(x2)(x1*exp(x2))); finish deriv; do; print "Solving the system: X1+X2X1*X2+2=0, X1*EXP(X2)1=0" ,; x={.1, 2}; /* starting values */ run newton; print x f; end;
The results are shown below.

Chapter Contents 
Previous 
Next 
Top 
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.