fminunc

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

Описание

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

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

minxf(x)

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

x является вектором или матрицей; смотрите Матричные аргументы.

пример

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

Примечание

Передача Дополнительных Параметров объясняет, как передать дополнительные параметры целевой функции и нелинейным ограничительным функциям при необходимости.

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

пример

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

пример

x = fminunc(problem) находит минимум для 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 может быть быстрее и более надежным, когда вы обеспечиваете производные.

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

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

Решите ту же задачу как в Градиенте Предоставления с помощью структуры задачи вместо отдельных аргументов.

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

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-x22+x22/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-x22+x22/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 доверительной области или области доверия fmincon отражающие алгоритмы для деталей.

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' алгоритм. Для получения информации о выборе алгоритма смотрите Выбор Algorithm.

CheckGradients

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

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

Диагностика

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

DiffMaxChange

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

DiffMinChange

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

Display

Level of 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' установка отображает ошибку, когда целевая функция возвращает значение, которое является complexInf, или NaN.

MaxFunctionEvaluations

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

Для optimset, именем является MaxFunEvals. См. текущие и устаревшие таблицы имени опции.

MaxIterations

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

Для optimset, именем является MaxIter. См. текущие и устаревшие таблицы имени опции.

OptimalityTolerance

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

Для optimset, именем является TolFun. См. текущие и устаревшие таблицы имени опции.

OutputFcn

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

PlotFcn

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

  • 'optimplotx' строит текущую точку.

  • 'optimplotfunccount' строит функциональное количество.

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

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

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

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

Для 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компонент th градиента fun зависит от x(j). fminunc может аппроксимировать H через разреженные конечные разности (градиента), если вы обеспечиваете sparsity structure H как значение для HessPattern. Другими словами, обеспечьте местоположения ненулей.

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

MaxPCGIter

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

PrecondBandWidth

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

SubproblemAlgorithm

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

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

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

Типы данных: 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 Алгоритм квазиньютона.

Доверительный алгоритм области

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

Ссылки

[1] Broyden, C. G. “Сходимость Класса Алгоритмов Минимизации Двойного Ранга”. Журналируйте Inst. Математика. Приложение., Издание 6, 1970, стр 76–90.

[2] Коулман, T. F. и И. Ли. “Внутренний, Доверительный Подход области для Нелинейной Минимизации Согласно Границам”. SIAM Journal на Оптимизации, Издании 6, 1996, стр 418–445.

[3] Коулман, T. F. и И. Ли. “На Сходимости Отражающих Методов Ньютона для Крупномасштабной Нелинейной Минимизации Согласно Границам”. Математическое программирование, Издание 67, Номер 2, 1994, стр 189–224.

[4] Davidon, W. C. “Переменный метрический метод для минимизации”. A.E.C. Научно-исследовательский отчет, ANL-5990, 1959.

[5] Флетчер, R. “Новый Подход к Переменным Метрическим Алгоритмам”. Компьютерный Журнал, Издание 13, 1970, стр 317–322.

[6] Флетчер, R. “Практические методы оптимизации”. Издание 1, оптимизация без ограничений, Джон Вайли и сыновья, 1980.

[7] Флетчер, R. и М. Дж. Д. Пауэлл. “Быстро Конвергентный Метод Спуска для Минимизации”. Компьютерный Журнал, Издание 6, 1963, стр 163–168.

[8] Goldfarb, D. “Семейство Переменных Метрических Обновлений, Выведенных Вариационными Средними значениями”. Математика Вычисления, Издания 24, 1970, стр 23–26.

[9] Shanno, D. F. “Создание условий Приближенных методов ньютона для Функциональной Минимизации”. Математика Вычисления, Издания 24, 1970, стр 647–656.

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

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