! simeq_newton.f90 solve nonlinear system of equations ! method: newton iteration using Jacobian ! ! Given problem A X = Y where x may have terms x1, x2, x3, x4, x1*x2, x3*x4 ! A is 6 by 6 matrix of reals (could be complex) ! Y is vector of reals (could be complex) ! independent unknowns are x1, x2, x3, x4 ! ! for testing, generate A using pseudo random numbers ! choose x1=1.1 x2=1.2 x3=1.4 x4 =1.5, compute x1*x2, x3*x4 ! compute terms of Y using Y = A X ! ! Solve by initial guess at values of x1, x2, x3, x4 computing x1*x2, x3*x4 ! X_next = X_initial - J_initial^-1 * (A * X_initial - Y) ! in general X_next = X_prev - (J_prev^-1 * (A * X_prev - Y))*b ! where 0 < b < 1, often 0.5, for stability ! ! solved when abs sum each row A * X_next -Y < epsilon ! ! It may stall, stop if abs(X_next-X_prev)