exponenta event banner

fminunc

Найти минимум неограниченной многовариантной функции

Описание

Решатель нелинейного программирования.

Находит минимум проблемы, указанный в

minxf (x)

где f (x) - функция, возвращающая скаляр.

x - вектор или матрица; см. Аргументы матрицы.

пример

x = fminunc(fun,x0) начинается в точке x0 и пытается найти локальный минимум x функции, описанной в fun. Пункт x0 может быть скаляром, вектором или матрицей.

Примечание

В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как передать дополнительные параметры целевой функции и, при необходимости, нелинейным функциям ограничения.

fminunc для нелинейных задач без ограничений. Если проблема имеет ограничения, обычно используйте fmincon. См. таблицу решений по оптимизации.

пример

x = fminunc(fun,x0,options) минимизирует fun с опциями оптимизации, указанными в options. Использовать optimoptions для установки этих параметров.

пример

x = fminunc(problem) находит минимальное значение для problem, структура, описанная в problem.

пример

[x,fval] = fminunc(___)для любого синтаксиса возвращает значение целевой функции fun на решении x.

пример

[x,fval,exitflag,output] = fminunc(___) дополнительно возвращает значение exitflag который описывает условие выхода fminuncи структура output с информацией о процессе оптимизации.

[x,fval,exitflag,output,grad,hessian] = fminunc(___) дополнительно возвращает:

  • grad - Градиент fun на решении x.

  • hessian - Гессен из fun на решении x. См. fminunc Гессен.

Примеры

свернуть все

Минимизируйте функцию f (x) = 3x12 + 2x1x2 + x22-4x1 + 5x2.

Для этого необходимо написать анонимную функцию fun вычисляет цель.

fun = @(x)3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2);

Звонить fminunc чтобы найти минимум fun рядом [1,1].

x0 = [1,1];
[x,fval] = fminunc(fun,x0)
Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
x = 1×2

    2.2500   -4.7500

fval = -16.3750

fminunc может быть быстрее и надежнее, когда вы предоставляете производные.

Запишите целевую функцию, которая возвращает градиент, а также значение функции. Используйте условную форму, описанную в разделе Включение градиентов и гессенов. Целевой функцией является функция Розенброка,

f (x) = 100 (x2-x12) 2 + (1-x1) 2,

который имеет градиент

∇f (x) = [-400 (x2-x12) x1-2 (1-x1) 200 (x2-x12)].

Код целевой функции с градиентом появляется в конце этого примера.

Создайте параметры для использования градиента целевой функции. Также установите алгоритм в значение 'trust-region'.

options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true);

Установите начальную точку на [-1,2]. Затем позвоните fminunc.

x0 = [-1,2];
fun = @rosenbrockwithgrad;
x = fminunc(fun,x0,options)
Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
x = 1×2

    1.0000    1.0000

Следующий код создает rosenbrockwithgrad функция, которая включает градиент в качестве второго выходного сигнала.

function [f,g] = rosenbrockwithgrad(x)
% Calculate objective f
f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;

if nargout > 1 % gradient required
    g = [-400*(x(2)-x(1)^2)*x(1) - 2*(1-x(1));
        200*(x(2)-x(1)^2)];
end
end

Решите ту же задачу, что и в Supply Gradient, используя структуру задачи вместо отдельных аргументов.

Запишите целевую функцию, которая возвращает градиент, а также значение функции. Используйте условную форму, описанную в разделе Включение градиентов и гессенов. Целевой функцией является функция Розенброка,

f (x) = 100 (x2-x12) 2 + (1-x1) 2,

который имеет градиент

∇f (x) = [-400 (x2-x12) x1-2 (1-x1) 200 (x2-x12)].

Код целевой функции с градиентом появляется в конце этого примера.

Создайте параметры для использования градиента целевой функции. Также установите алгоритм в значение 'trust-region'.

options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true);

Создание структуры проблемы, включающей начальную точку x0 = [-1,2]. Необходимые поля в этой структуре см. в разделе Проблема.

problem.options = options;
problem.x0 = [-1,2];
problem.objective = @rosenbrockwithgrad;
problem.solver = 'fminunc';

Решите проблему.

x = fminunc(problem)
Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
x = 1×2

    1.0000    1.0000

Следующий код создает rosenbrockwithgrad функция, которая включает градиент в качестве второго выходного сигнала.

function [f,g] = rosenbrockwithgrad(x)
% Calculate objective f
f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;

if nargout > 1 % gradient required
    g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));
        200*(x(2)-x(1)^2)];
end
end

Найдите как расположение минимума нелинейной функции, так и значение функции на этом минимуме. Целевая функция:

f (x) = x (1) e- x‖22+‖x‖22/20.

fun = @(x)x(1)*exp(-(x(1)^2 + x(2)^2)) + (x(1)^2 + x(2)^2)/20;

Найдите местоположение и значение целевой функции минимизатора, начиная с x0 = [1,2].

x0 = [1,2];
[x,fval] = fminunc(fun,x0)
Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
x = 1×2

   -0.6691    0.0000

fval = -0.4052

Выбирать fminunc варианты и результаты для изучения процесса решения.

Задайте опции для получения итеративного отображения и используйте 'quasi-newton' алгоритм.

options = optimoptions(@fminunc,'Display','iter','Algorithm','quasi-newton');

Целевая функция:

f (x) = x (1) e- x‖22+‖x‖22/20.

fun = @(x)x(1)*exp(-(x(1)^2 + x(2)^2)) + (x(1)^2 + x(2)^2)/20;

Начать минимизацию в x0 = [1,2]и получать выходные данные, которые позволяют проверить качество решения и процесс.

x0 = [1,2];
[x,fval,exitflag,output] = fminunc(fun,x0,options)
                                                        First-order 
 Iteration  Func-count       f(x)        Step-size       optimality
     0           3         0.256738                         0.173
     1           6         0.222149              1          0.131  
     2           9          0.15717              1          0.158  
     3          18        -0.227902       0.438133          0.386  
     4          21        -0.299271              1           0.46  
     5          30        -0.404028       0.102071         0.0458  
     6          33        -0.404868              1         0.0296  
     7          36        -0.405236              1        0.00119  
     8          39        -0.405237              1       0.000252  
     9          42        -0.405237              1       7.97e-07  

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
x = 1×2

   -0.6691    0.0000

fval = -0.4052
exitflag = 1
output = struct with fields:
       iterations: 9
        funcCount: 42
         stepsize: 2.9343e-04
     lssteplength: 1
    firstorderopt: 7.9721e-07
        algorithm: 'quasi-newton'
          message: '...'

  • Флаг выхода 1 показывает, что решение является локальным оптимумом.

  • output структура показывает количество итераций, число оценок функций и другую информацию.

  • Итеративный экран также показывает количество итераций и оценок функций.

Входные аргументы

свернуть все

Функция для минимизации, заданная как дескриптор функции или имя функции. fun - функция, принимающая вектор или массив; x и возвращает действительный скаляр f, целевая функция, оцененная на x.

Определить fun как дескриптор функции для файла:

x = fminunc(@myfun,x0)

где myfun является функцией MATLAB ®, такой как

function f = myfun(x)
f = ...            % Compute function value at x

Можно также указать fun как дескриптор функции для анонимной функции:

x = fminunc(@(x)norm(x)^2,x0);

Если можно вычислить градиент fun и SpecifyObjectiveGradient параметр имеет значение true, как установлено

options = optimoptions('fminunc','SpecifyObjectiveGradient',true)
тогда fun должен возвращать вектор градиента g(x) во втором выходном аргументе.

Если вы также можете вычислить матрицу Гессена и HessianFcn параметр имеет значение 'objective' через options = optimoptions('fminunc','HessianFcn','objective') и Algorithm параметр имеет значение 'trust-region', fun должен возвращать гессенское значение H(x)симметричная матрица в третьем выходном аргументе. fun может дать разреженный гессен. Дополнительные сведения см. в описании алгоритмов fminunc trust-region или fmincon trust-region-reflective.

trust-region алгоритм позволяет предоставить гессеновскую функцию умножения. Эта функция даёт результат гессеновского векторного произведения без непосредственного вычисления гессенского. Это может сэкономить память. См. раздел Функция умножения Гессена.

Пример: fun = @(x)sin(x(1))*cos(x(2))

Типы данных: char | function_handle | string

Начальная точка, заданная как вещественный вектор или вещественный массив. Решатели используют количество элементов в x0 и размер x0 для определения количества и размера переменных, которые fun принимает.

Пример: x0 = [1,2,3,4]

Типы данных: double

Опции оптимизации, указанные как выходные данные optimoptions или структура, такая как optimset возвращает.

Некоторые опции применимы ко всем алгоритмам, а другие актуальны для конкретных алгоритмов. Дополнительные сведения см. в разделе Справочник по опциям оптимизации.

Некоторые опции отсутствуют в optimoptions дисплей. Эти параметры выделены курсивом в следующей таблице. Дополнительные сведения см. в разделе Параметры просмотра.

Все алгоритмы

Algorithm

Выберите fminunc алгоритм. Варианты: 'quasi-newton' (по умолчанию) или 'trust-region'.

'trust-region' алгоритм требует предоставления градиента (см. описание fun), или иначе fminunc использует 'quasi-newton' алгоритм. Сведения о выборе алгоритма см. в разделе Выбор алгоритма.

CheckGradients

Сравните поставляемые пользователем производные (градиент цели) с конечноразностными производными. Варианты: false (по умолчанию) или true.

Для optimset, имя: DerivativeCheck и значения 'on' или 'off'. См. раздел Имена текущих и устаревших опций.

Диагностика

Отображение диагностической информации о функции, которая должна быть свернута или решена. Варианты: 'off' (по умолчанию) или 'on'.

DiffMaxChange

Максимальное изменение переменных для градиентов конечных разностей (положительный скаляр). Значение по умолчанию: Inf.

DiffMinChange

Минимальное изменение переменных для градиентов конечных разностей (положительный скаляр). Значение по умолчанию: 0.

Display

Уровень отображения (см. Итерационный просмотр):

  • 'off' или 'none' не отображает выходные данные.

  • 'iter' отображает выходные данные в каждой итерации и выдает сообщение о выходе по умолчанию.

  • 'iter-detailed' отображает выходные данные в каждой итерации и выдает сообщение о техническом выходе.

  • 'notify' отображает выходные данные только в том случае, если функция не сходится, и выдает сообщение о выходе по умолчанию.

  • 'notify-detailed' отображает выходные данные только в том случае, если функция не сходится, и выдает сообщение о техническом выходе.

  • 'final' (по умолчанию) отображает только окончательный вывод и выдает сообщение о выходе по умолчанию.

  • 'final-detailed' отображает только окончательный вывод и выдает сообщение о техническом выходе.

FiniteDifferenceStepSize

Коэффициент размера шага скаляра или вектора для конечных разностей. При установке FiniteDifferenceStepSize к вектору v, прямые конечные различия delta являются

delta = v.*sign′(x).*max(abs(x),TypicalX);

где sign′(x) = sign(x) кроме sign′(0) = 1. Центральными конечными различиями являются

delta = v.*max(abs(x),TypicalX);

Скаляр FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию: sqrt(eps) для прямых конечных разностей, и eps^(1/3) для центральных конечных разностей.

Алгоритм доверительной области использует FiniteDifferenceStepSize только когда CheckGradients имеет значение true.

Для optimset, имя: FinDiffRelStep. См. раздел Имена текущих и устаревших опций.

FiniteDifferenceType

Конечные различия, используемые для оценки градиентов: 'forward' (по умолчанию), или 'central' (по центру). 'central' занимает вдвое больше оценок функций, но должно быть более точным. Алгоритм доверительной области использует FiniteDifferenceType только когда CheckGradients имеет значение true.

Для optimset, имя: FinDiffType. См. раздел Имена текущих и устаревших опций.

FunValCheck

Проверьте допустимость значений целевой функции. Настройка по умолчанию, 'off', не выполняет проверку. 'on' параметр отображает ошибку, когда целевая функция возвращает значение, complex, Inf, или NaN.

MaxFunctionEvaluations

Максимально допустимое число оценок функций, положительное целое число. Значение по умолчанию: 100*numberOfVariables. См. раздел Допуски и критерии остановки, итерации и подсчеты функций.

Для optimset, имя: MaxFunEvals. См. раздел Имена текущих и устаревших опций.

MaxIterations

Максимальное допустимое число итераций, положительное целое число. Значение по умолчанию: 400. См. раздел Допуски и критерии остановки, итерации и подсчеты функций.

Для optimset, имя: MaxIter. См. раздел Имена текущих и устаревших опций.

OptimalityTolerance

Допуск окончания для оптимальности первого порядка (положительный скаляр). Значение по умолчанию: 1e-6. См. раздел Измерение оптимальности первого порядка.

Для optimset, имя: TolFun. См. раздел Имена текущих и устаревших опций.

OutputFcn

Укажите одну или несколько пользовательских функций, вызываемых функцией оптимизации в каждой итерации. Передача дескриптора функции или массива ячеек дескрипторов функции. Значение по умолчанию - нет ([]). См. раздел Функция вывода и синтаксис функции печати.

PlotFcn

Отображает различные показатели прогресса во время выполнения алгоритма; выбрать из предопределенных графиков или написать свой собственный. Передача имени встроенной функции графика, дескриптора функции или массива ячеек имен встроенных функций графика или дескрипторов функций. Для пользовательских функций печати передайте дескрипторы функций. Значение по умолчанию - нет ([]):

  • 'optimplotx' строит график текущей точки.

  • 'optimplotfunccount' строит график подсчета функций.

  • 'optimplotfval' строит график значения функции.

  • 'optimplotstepsize' строит график размера шага.

  • 'optimplotfirstorderopt' строит график измерения оптимальности первого порядка.

Пользовательские функции печати используют тот же синтаксис, что и функции вывода. См. раздел Функции вывода для оптимизации Toolbox™ и Функция вывода и синтаксис функции печати.

Для optimset, имя: PlotFcns. См. раздел Имена текущих и устаревших опций.

SpecifyObjectiveGradient

Градиент для целевой функции, определенной пользователем. См. описание fun чтобы увидеть, как определить градиент в fun. Установить в значение true иметь fminunc использовать определяемый пользователем градиент целевой функции. Дефолт false причины fminunc для оценки градиентов с использованием конечных разностей. Необходимо указать градиент и задать SpecifyObjectiveGradient кому true, чтобы использовать алгоритм доверительной области. Эта опция не требуется для алгоритма квази-Ньютона.

Для optimset, имя: GradObj и значения 'on' или 'off'. См. раздел Имена текущих и устаревших опций.

StepTolerance

Допуск окончания на x, положительный скаляр. Значение по умолчанию: 1e-6. См. раздел Допуски и критерии остановки.

Для optimset, имя: TolX. См. раздел Имена текущих и устаревших опций.

TypicalX

Типичный x значения. Количество элементов в TypicalX равно количеству элементов в x0, отправная точка. Значение по умолчанию: ones(numberofvariables,1). fminunc использование TypicalX для масштабирования конечных разностей для градиентной оценки.

trust-region использование алгоритма TypicalX только для CheckGradients вариант.

trust-region Алгоритм
FunctionTolerance

Допуск окончания для значения функции, положительный скаляр. Значение по умолчанию: 1e-6. См. раздел Допуски и критерии остановки.

Для optimset, имя: TolFun. См. раздел Имена текущих и устаревших опций.

HessianFcn

Если установлено значение [] (по умолчанию), fminunc аппроксимирует гессен с помощью конечных разностей.

Если установлено значение 'objective', fminunc использует определяемый пользователем гессен для целевой функции. Гессен - третий вывод целевой функции (см. fun).

Для optimset, имя: HessFcn. См. раздел Имена текущих и устаревших опций.

HessianMultiplyFcn

Функция умножения Гессена, заданная как дескриптор функции. Для крупномасштабных структурированных задач эта функция вычисляет матричное изделие Гессена H*Y без фактического формирования H. Функция имеет вид

W = hmfun(Hinfo,Y)

где Hinfo содержит матрицу, используемую для вычисления H*Y.

Первый аргумент совпадает с третьим аргументом, возвращаемым целевой функцией fun, например,

[f,g,Hinfo] = fun(x)

Y - матрица, имеющая такое же количество строк, как и размеры в задаче. Матрица W = H*Y, хотя H не формируется явным образом. fminunc использование Hinfo для вычисления предварительного условия. Для получения информации о том, как предоставить значения для любых дополнительных параметров hmfun , см. раздел Передача дополнительных параметров.

Примечание

Для использования HessianMultiplyFcn опция, HessianFcn необходимо установить значение [].

Пример см. в разделе Минимизация с помощью плотных структурированных гессенских линейных уравнений.

Для optimset, имя: HessMult. См. раздел Имена текущих и устаревших опций.

HessPattern

Узор разреженности гессена для конечных разностей. Набор HessPattern(i,j) = 1 когда вы можете иметь ∂2fun/∂x(i)x(j)  ≠ 0. В противном случае установите HessPattern(i,j) = 0.

Использовать HessPattern когда неудобно вычислять матрицу Гессена H в fun, но вы можете определить (скажем, инспекцией), когда i-й компонент градиента fun зависит от x(j). fminunc может аппроксимировать H через разреженные конечные разности (градиента), если вы предоставляете структуру разреженности H в качестве значения для HessPattern. Другими словами, укажите местоположения ненулевых значений.

Если структура неизвестна, не устанавливайте HessPattern. Поведение по умолчанию: HessPattern - плотная матрица из них. Тогда fminunc вычисляет полное аппроксимацию конечных разностей в каждой итерации. Это вычисление может быть дорогостоящим для больших проблем, поэтому обычно лучше определить структуру разреженности.

MaxPCGIter

Максимальное количество предварительно обработанных итераций сопряженного градиента (PCG), положительный скаляр. Значение по умолчанию: max(1,floor(numberOfVariables/2)). Дополнительные сведения см. в разделе Алгоритм области доверия.

PrecondBandWidth

Верхняя полоса пропускания устройства предварительного кондиционирования для PCG, неотрицательное целое число. По умолчанию fminunc использует диагональное предварительное кондиционирование (верхняя полоса пропускания 0). При некоторых проблемах увеличение полосы пропускания уменьшает количество итераций PCG. Настройка PrecondBandWidth кому Inf использует прямую факторизацию (Cholesky), а не сопряженные градиенты (CG). Прямая факторизация в вычислительном отношении дороже, чем CG, но обеспечивает более качественный шаг к решению.

SubproblemAlgorithm

Определяет способ вычисления шага итерации. Значение по умолчанию, 'cg', делает более быстрый, но менее точный шаг, чем 'factorization'. См. раздел Алгоритм fminunc trust-region.

TolPCG

Допуск окончания для итерации PCG, положительный скаляр. Значение по умолчанию: 0.1.

quasi-newton Алгоритм
HessUpdate

Метод выбора направления поиска в алгоритме Квази-Ньютона. Возможны следующие варианты:

ObjectiveLimit

Допуск (критерий остановки), являющийся скаляром. Если значение целевой функции в итерации меньше или равно ObjectiveLimit, итерации останавливаются, потому что проблема, предположительно, является неограниченной. Значение по умолчанию: -1e20.

UseParallel

Когда true, fminunc оценивает градиенты параллельно. Отключите, установив значение по умолчанию, false. trust-region требует градиента в цели, поэтому UseParallel не применяется. См. раздел Параллельные вычисления.

Пример: options = optimoptions('fminunc','SpecifyObjectiveGradient',true)

Структура проблемы, заданная как структура со следующими полями:

Имя поляВход

objective

Целевая функция

x0

Начальная точка для x

solver

'fminunc'

options

Параметры, созданные с помощью optimoptions

Типы данных: struct

Выходные аргументы

свернуть все

Решение, возвращаемое в виде вещественного вектора или вещественного массива. Размер x совпадает с размером x0. Как правило, x является локальным решением проблемы, когда exitflag является положительным. Сведения о качестве решения см. в разделе Когда решатель добьется успеха.

Значение целевой функции в решении, возвращаемое как вещественное число. Как правило, fval = fun(x).

Причина fminunc остановлено, возвращено как целое число.

1

Величина градиента меньше OptimalityTolerance толерантность.

2

Изменение в x был меньше, чем StepTolerance толерантность.

3

Изменение значения целевой функции было меньше значения FunctionTolerance толерантность.

5

Прогнозируемое снижение целевой функции было меньше, чем FunctionTolerance толерантность.

0

Превышено число итераций MaxIterations или количество превышенных оценок функций MaxFunctionEvaluations.

-1

Алгоритм был завершен функцией вывода.

-3

Целевая функция при текущей итерации была ниже ObjectiveLimit.

Информация о процессе оптимизации, возвращенная в виде структуры с полями:

iterations

Количество выполненных итераций

funcCount

Количество оценок функций

firstorderopt

Мера оптимальности первого порядка

algorithm

Используемый алгоритм оптимизации

cgiterations

Общее количество итераций PCG ('trust-region' только алгоритм)

lssteplength

Размер шага поиска строки относительно направления поиска ('quasi-newton' только алгоритм)

stepsize

Окончательное смещение в x

message

Выйти из сообщения

Градиент в решении, возвращенный как действительный вектор. grad дает градиент fun в точке x(:).

Приблизительный Гессен, возвращенный в виде вещественной матрицы. Для значения hessian, см. Гессенский вывод.

Алгоритмы

свернуть все

Алгоритм Квази-Ньютона

quasi-newton алгоритм использует метод Квази-Ньютона BFGS с процедурой поиска кубических строк. Этот квазиньютоновский метод использует формулу BFGS ([1], [5], [8] и [9]) для обновления аппроксимации гессенской матрицы. Можно выбрать формулу DFP ([4], [6] и [7]), которая аппроксимирует обратную матрицу Гессена, установив HessUpdate опция для 'dfp'Algorithm опция для 'quasi-newton'). Можно выбрать самый крутой метод спуска, задав HessUpdate кому 'steepdesc'Algorithm кому 'quasi-newton'), хотя эта настройка обычно неэффективна. См. fminunc quasi-newton Алгоритм.

Алгоритм области доверия

trust-region алгоритм требует ввода градиента в fun и набор SpecifyObjectiveGradient кому true использование optimoptions. Этот алгоритм является методом области доверия подпространства и основан на способе Ньютона с внутренним отражением, описанном в [2] и [3]. Каждая итерация включает в себя приблизительное решение большой линейной системы методом предварительно кондиционированных сопряженных градиентов (PCG). См. разделы Алгоритм fminunc trust-region, Методы Trust-region для нелинейной минимизации и Метод предварительно кондиционированного сопряженного градиента.

Альтернативная функциональность

Приложение

Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для fminunc.

Ссылки

[1] Бройден, С. Г. «Сходимость класса алгоритмов минимизации двойного ранга». Журнал Inst. Math. Applic., том 6, 1970, стр. 76-90.

[2] Коулман, Т. Ф. и Я. Ли. «Подход» Внутренняя область, область доверия «для нелинейной минимизации с учетом ограничений». Журнал СИАМ по оптимизации, том 6, 1996, стр. 418-445.

[3] Коулман, Т. Ф. и Я. Ли. «О сходимости отражающих методов Ньютона для масштабной нелинейной минимизации, зависящей от границ». Математическое программирование, том 67, номер 2, 1994, стр. 189-224.

[4] Давидон, W.C. «Метод переменной метрики для минимизации». A.E.C. Доклад об исследованиях и разработках, ANL-5990, 1959 год.

[5] Флетчер, Р. «Новый подход к алгоритмам переменной метрики». Компьютерный журнал, том 13, 1970, стр. 317-322.

[6] Флетчер, Р. «Практические методы оптимизации». Том 1, Неограниченная оптимизация, Джон Уайли и сыновья, 1980.

[7] Флетчер, R. и М. Дж. Д. Пауэлл. «Метод быстро сходящегося спуска для минимизации». Компьютерный журнал, т. 6, 1963, стр. 163-168.

[8] Гольдфарб, Д. «Семейство переменных метрических обновлений, полученных вариационными средствами». Математика вычислительной техники, том 24, 1970, стр. 23-26.

[9] Шанно, Д. Ф. «Кондиционирование квази-ньютоновских методов минимизации функций». Математика вычислительной техники, т. 24, 1970, с. 647-656.

Расширенные возможности

Представлен до R2006a