I am trying to analyze the results for different iterative sub-solvers of the Newton equation system, using a Newton-Fischer reformulation of the LCP(linear complementarity problem). So far I have implemented the exact solver - Gauss-Siedel, and a Newton-modified method which uses bicg matlab as a sub-solver of the J*h = -p equation (where J is the jacobian, p is the value of Fischer function and h is my actualization step).
Part of the code where I implemented the bicg subsolver and the exact solver:
if itt
% use iterative solver for newton eq
while ~all(fischer(x, A*x+b) == 0) & its < max_it
% compute the Jacobian
J = eval_jacobian(A, b, x);
% compute the value of the Fischer function
p = fischer(x, A*x + b);
% the natural merit function for convergence measure
residual(its) = .5*(p'*p);
% the newton eq, solve J*h = -p
h = bicg(J, -p, eps, s_its);
% update the solution vector
x = x + h;
% increment the iteration counter
its = its + 1;
end
else
% the exact solver for newton equation
while ~all(fischer(x, A*x+b) == 0) & its < max_it
% compute the Jacobian
J = eval_jacobian(A, b, x);
% compute the value of the Fischer function
p = fischer(x, A*x + b);
% the natural merit function for convergence measure
residual(its) = .5*(p'*p);
% the newton eq, solve J*h = -p
h = - J/p;
% update the solution vector
x = x + h;
% increment the iteration counter
its = its + 1;
end
So, my question would be what other iterative sub-solvers would you use? I don't mind implemeting code for them if there is no function for them in matlab. I realize this is more of a theoretical question. Thank you.