Я пытаюсь проанализировать результаты для различных итерационных вспомогательных решателей системы уравнений Ньютона, используя переформулировку Ньютона-Фишера LCP (проблема линейной комплементарности). До сих пор я реализовал точный решатель - Gauss-Siedel и модифицированный Ньютоном метод, который использует bicg matlab как вспомогательный решатель уравнения J * h = -p (где J является jacobian, p - значение функции Фишера и h - это мой этап активации).Какие итеративные вспомогательные решатели, кроме бигга, можно использовать для решения уравнения Ньютона в MATLAB?
Часть коды, где я реализовал в BiCG subsolver и точный решатель:
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
Итак, мой вопрос будет то, что другой итерационный суб-решателей вы бы использовали? Я не возражаю против их реализации, если для них нет функции в matlab. Я понимаю, что это скорее теоретический вопрос. Спасибо.
Это интересный вопрос. Мне интересно, лучше ли это на SE Math? – macduff