Нелинейные уравнения с якобианом конечной разности

В примере Нелинейные уравнения с Аналитическим якобианом, функциональным bananaobj оценивает F и вычисляет якобиевский J. Что, если код, чтобы вычислить якобиан не доступен? По умолчанию, если вы не указываете, что якобиан может быть вычислен в целевой функции (путем установки SpecifyObjectiveGradient опция в options к true), fsolve, lsqnonlin, и lsqcurvefit вместо этого используйте конечное дифференцирование, чтобы аппроксимировать якобиан. Это - якобиевская опция по умолчанию. Можно выбрать конечное дифференцирование установкой SpecifyObjectiveGradient к false использование optimoptions.

Этот пример использует bananaobj из примера Нелинейные уравнения с Аналитическим якобианом как целевая функция, но наборы SpecifyObjectiveGradient к false так, чтобы fsolve аппроксимирует якобиан и игнорирует второй bananaobj вывод .

n = 64;  
x0(1:n,1) = -1.9; 
x0(2:2:n,1) = 2;
options = optimoptions(@fsolve,'Display','iter','SpecifyObjectiveGradient',false);
[x,F,exitflag,output,JAC] = fsolve(@bananaobj,x0,options);

Пример производит следующий выход:

                                    Norm of    First-order   Trust-region
Iteration  Func-count   f(x)        step       optimality    radius
    0         65       8563.84                       615               1
    1        130       3093.71            1          329               1
    2        195       225.104          2.5         34.8             2.5
    3        260        212.48         6.25         34.1            6.25
    4        261        212.48         6.25         34.1            6.25
    5        326       102.771       1.5625         6.39            1.56
    6        327       102.771      3.90625         6.39            3.91
    7        392       87.7443     0.976562         2.19           0.977
    8        457       74.1426      2.44141         6.27            2.44
    9        458       74.1426      2.44141         6.27            2.44
   10        523        52.497     0.610352         1.52            0.61
   11        588       41.3297      1.52588         4.63            1.53
   12        653       34.5115      1.52588         6.97            1.53
   13        718       16.9716      1.52588         4.69            1.53
   14        783       8.16797      1.52588         3.77            1.53
   15        848       3.55178      1.52588         3.56            1.53
   16        913       1.38476      1.52588         3.31            1.53
   17        978      0.219553      1.16206         1.66            1.53
   18       1043             0    0.0468565            0            1.53

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.

Версия конечной разности этого примера требует, чтобы то же количество итераций сходилось как аналитическая якобиевская версия в предыдущем примере. Обычно имеет место, что обе версии сходятся приблизительно на том же уровне в терминах итераций. Однако версия конечной разности требует многих дополнительных вычислений функции. Стоимость этих дополнительных оценок может или не может быть значительной, в зависимости от конкретной проблемы.

Смотрите также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте