#include #include /* minsnln.c : 1999 5 3 by Oguni */ #define N 2 main(){ double x[N]={-2., 5.}, A[N][N], an[N]; double tol=0.0001, val; int n=2, itr[2]={10,1}; minsnln(A,an,x,tol,n,itr); printf("Minimization of simultaneous non-linear equations.\n"); printf("%f %f \n", x[0], x[1]); printf("%d\n", itr[1]); val=100.0*(x[1]-x[0]*x[0])*(x[1]-x[0]*x[0])+(1.-x[0])*(1.-x[0]); printf("Substtution check %f\n", val); } /* function */ nabla(A,x,an,n) double A[N][N], x[N], an[N]; int n; { an[0]=-400.0*x[0]*(x[1]-x[0]*x[0])+2.0*(x[0]-1.); an[1]=200.0*(x[1]-x[0]*x[0]); A[0][0]=1200.0*x[0]*x[0]-400.0*x[1]+2.0; A[1][0]=-400.0*x[0]; A[0][1]=-400.0*x[0]; A[1][1]=200.0; return; } /* minsnln */ minsnln(A,an,x,tol,n,itr) double A[N][N], an[N], x[N], tol; int n, itr[2]; { int i,j,k; double tol1=0.000000001, r, s, w[N]; for (i=1; i<=itr[0]; i++) { nabla(A,x,an,n); an[0]=-an[0]; an[1]=-an[1]; gauss(A, an, w, tol1, n); for (j=0; j=0; k--){ s=0.0; for (j=k+1; j