Алгоритмы решения уравнений

Определение решения уравнения

Учитывая набор n нелинейных функций Fi (x), где n - количество компонентов в векторном x, цель решения уравнения состоит в том, чтобы найти векторную x, которая делает все Fi ( x) = 0.

fsolve пытается решить систему уравнений путем минимизации суммы квадратов компонентов. Если сумма квадратов равна нулю, система уравнений решается. fsolve имеет три алгоритма:

  • Доверительный регион

  • Trust-region-dogleg

  • Левенберг-Марквардт

Все алгоритмы большие шкалы; см. «Алгоритмы большого и среднего масштаба».

fzero функция решает одно одномерное уравнение.

mldivide функция решает систему линейных уравнений.

Алгоритм доверительной области

Многие методы, используемые в решателях Optimization Toolbox™, основаны на доверительных областях, простой, но мощной концепции в оптимизации.

Чтобы понять подход доверительной области к оптимизации, рассмотрим задачу минимизации без ограничений, минимизируйте f (x), где функция принимает векторные аргументы и возвращает скаляры. Предположим, что текущая точка x в n -пространство, и вы хотите улучшить, перейдя в точку с более низким значением функции. Для этого алгоритм аппроксимирует f с более простой функциональной q, которая разумно отражает поведение функциональной f в окрестности N вокруг точечной x. Этот район - доверительная область. Решатель вычисляет пробный шаг s путем минимизации (или приблизительно минимизации) по N. Подпрограмма доверительной области

mins{q(s), sN}.

Решатель обновляет текущую точку на x + s, если f ( x + s ) < f (x); в противном случае текущая точка остается неизменной, и решатель сжимается N (область доверия) и повторяет расчет пробного шага.

Ключевыми вопросами в определении конкретного подхода доверительной области к минимизации f (x) являются то, как выбрать и вычислить q приближения (заданную в текущей точке x), как выбрать и изменить N доверительной области и как точно решить подблем доверительной области.

В стандартном методе доверительной области ([48]) квадратичное q приближения определяется первыми двумя слагаемыми приближения Тейлора к F при x. Окрестная N обычно сферическая или эллипсоидальная по форме. Математически подпрограмма доверительной области обычно указывается

min{12sTHs+sTg  таким , что  DsΔ},(1)

где g - градиент f в текущей точке x, H - матрица Мешковины (симметричная матрица вторых производных), D - диагональная матрица масштабирования, Δ - положительная скалярная величина и ∥. ∥ - 2-норма. Чтобы решить Уравнение 1, алгоритм (см. [48]) может вычислить все собственные значения H и затем применить процесс Ньютона к светскому уравнению

1Δ1s=0.

Такой алгоритм обеспечивает точное решение уравнения 1. Однако для этого требуется время, пропорциональное нескольким факторизациям H. Поэтому проблемы доверительной области требуют иного подхода.  В литературе было предложено несколько аппроксимационных и эвристических стратегий, основанных на уравнении 1 ([42] и [50]). Решатели Optimization Toolbox придерживаются приближения, который ограничивает подблем доверительной области двумерным подпространством (S [39] и [42]). После того, как решатель вычисляет S подпространства, работа по решению Уравнения 1 тривиальна, потому что в подпространстве задача является только двумерной. Доминирующая работа теперь смещается к определению подпространства.

Решатель определяет двумерное подпространство S с помощью предварительно обусловленного сопряженного градиентного метода (описанного в следующем разделе). Решатель определяет S как линейное пространство, охватываемое s 1 и s 2, где s 1 находится в направлении градиента g, и s 2 является либо приблизительным направлением Ньютона, то есть решением

Hs2=g,

или направление отрицательной кривизны,

s2THs2<0.

Философия этого выбора S состоит в том, чтобы форсировать глобальное сходимость (через направление наискорейшего спуска или направление отрицательной кривизны) и достичь быстрого локального сходимости (через шаг Ньютона, когда он существует).

Процесс минимизации без ограничений с использованием подхода доверительной области теперь легко определить:

  1. Сформулируйте двумерную подпрограмму доверительной области.

  2. Решите уравнение 1, чтобы определить пробный шаг s.

  3. Если f (x + s) <f (<reservedrangesplaceholder3>), то x = x + s.

  4. Отрегулируйте

Решатель повторяет эти четыре шага до сходимости, корректируя ему размерность trust-region в соответствии со стандартными правилами. В частности, решатель уменьшает размер доверительной области, если он не принимает пробный шаг, когда f (x + s) ≥ f (x). Для обсуждения этого аспекта см. [46] и [49].

Решатели Optimization Toolbox обрабатывают важные случаи f со специализированными функциями: нелинейными методами наименьших квадратов, квадратичными функциями и линейными методами наименьших квадратов. Однако базовые алгоритмические идеи те же, что и в общем случае.

Предварительно обусловленный сопряженный градиентный метод

Популярным способом решения больших, симметричных, положительно определенных систем линейных уравнений Hp = - g является метод Предварительно обусловленных сопряженных градиентов (PCG). Этот итеративный подход требует способности вычислять матрично-векторные продукты вида H·v где v является произвольным вектором. Симметричная положительная определенная матричная M является предварительным условием для H. То есть  M = C2, где C–1HC–1 является хорошо обусловленной матрицей или матрицей с кластеризованными собственными значениями.

В контексте минимизации можно предположить, что H матрицы Гессия симметрична. Однако H гарантированно будет положительно определено только в окрестности сильного минимизатора. Алгоритм PCG выходит, когда он сталкивается с направлением отрицательной (или нулевой) кривизны, то есть dTHd ≤ 0. Выходное направление PCG p является либо направлением отрицательной кривизны, либо приблизительным решением системы Ньютона Hp = - g. В любом случае p помогает задать двумерный подпространство, используемый в подходе доверительной области, обсуждаемом в Методах доверительной области для нелинейной минимизации.

Алгоритм доверительной области-резкого искривления

Другой подход - решить линейную систему уравнений, чтобы найти направление поиска. Метод Ньютона задает, чтобы решить для поискового направления dk такое, что

J (<reservedrangesplaceholder3>) dk = – F (<reservedrangesplaceholder0>)
<reservedrangesplaceholder3> <reservedrangesplaceholder2> + 1 = xk + dk,

где J (xk) является n -by n якобианом

J(xk)=[F1(xk)TF2(xk)TFn(xk)T].

Метод Ньютона может оказаться проблематичным. J (xk) может быть сингулярным, и в этом случае dk шага Ньютона даже не задан. Кроме того, точные dk шага Ньютона могут быть дорогими в вычислении. В сложение метод Ньютона может не сходиться, если начальная точка далёка от решения.

Использование методов доверительной области (введенных в методы доверительной области для нелинейной минимизации) обрабатывает случай, когда J (xk) сингулярна и улучшает робастность, когда начальная точка далека от решения. Чтобы использовать стратегию доверительной области, вам нужна функция заслуг, чтобы решить, лучше ли x k + 1 или хуже xk. A возможного элемента для выбора есть

mindf(d)=12F(xk+d)TF(xk+d).

Но минимум f (d) не обязательно является корнем F (x).

Шаг Ньютона dk является корнем из

M (xk + d) = F (<reservedrangesplaceholder3>) + J (<reservedrangesplaceholder1>) d,

так что это также минимум m (d), где

mindm(d)=12M(xk+d)22=12F(xk)+J(xk)d22=12F(xk)TF(xk)+dTJ(xk)TF(xk)+12dTJ(xk)TJ(xk)d.(2)

m (d) является лучшим выбором функции заслуг, чем f (d), поэтому подпрограмма доверительной области является

mind[12F(xk)TF(xk)+dTJ(xk)TF(xk)+12dTJ(xk)TJ(xk)d],(3)

таким образом, что  <reservedrangesplaceholder1> · <reservedrangesplaceholder0>   Δ. Можно эффективно решить эту подпрограмму с помощью стратегии резкого искривления.

Обзор методов доверительной области см. в Conn [4] и Nocedal [31].

Реализация доверительной области-резкого искривления

Ключевая возможность алгоритма резкого искривления доверительной области является использование процедуры резкого искривления Пауэлла для вычисления d шага, которая минимизирует уравнение 3. Для получения подробного описания см. Powell [34].

Алгоритм строит d шага из выпуклой комбинации шага Коши (шаг по направлению наискорейшего спуска) и шага Гаусса-Ньютона для f (x). Шаг Коши вычисляется как

dC = – αJ (<reservedrangesplaceholder0>)TF (<reservedrangesplaceholder0>),

где α минимизирует уравнение 2.

Шаг Гаусса-Ньютона вычисляется решением

J (<reservedrangesplaceholder3>) · dGN = – F (<reservedrangesplaceholder0>),

использование MATLAB® mldivide (матричный оператор левого деления).

Алгоритм выбирает d шага так, чтобы

d = dC + λ (dGNdC),

где λ - самое большое значение в интервале [0,1] таким образом что  <reservedrangesplaceholder2>   Δ. Если Jk (почти) сингулярна, d всего лишь направление Коши.

Алгоритм доверительной области-резкого искривления эффективен, потому что он требует только одного линейного решения на итерацию (для расчета шага Гаусса-Ньютона). Кроме того, алгоритм может быть более устойчивым, чем с помощью метода Гаусса-Ньютона с линией поиском.

Метод Левенберга-Марквардта

Алгоритм Левенберга-Марквардта ([25] и [27]) использует поисковое направление, которое является решением линейного множества уравнений

(J(xk)TJ(xk)+λkI)dk=J(xk)TF(xk),(4)

или, опционально, уравнений

(J(xk)TJ(xk)+λkdiag(J(xk)TJ(xk)))dk=J(xk)TF(xk),(5)

где скаляр λk управляет как величиной, так и направлением dk. Установите fsolve опция ScaleProblem на 'none' чтобы использовать Уравнение 4, или установите эту опцию равной 'jacobian' для использования уравнения 5.

Когда λk меньше нуля, dk направления является методом Гаусса-Ньютона. Когда λk стремится к бесконечности, dk стремится к наискорейшему спуску направлению с амплитудой, стремящейся к нулю. Подразумевается, что для некоторых достаточно больших λk термин F (xk  + dk ) < F (xk) имеет истину. Поэтому алгоритм может управлять терминами, λk для обеспечения спуска, несмотря на условия второго порядка, которые ограничивают эффективность метода Гаусса-Ньютона. Алгоритм Левенберга-Марквардта, следовательно, использует поисковое направление, которое является сечением между направлением Гаусса-Ньютона и направлением наискорейшего спуска. Для получения дополнительной информации смотрите Метод Левенберга-Марквардта в документации методом наименьших квадратов.

fzero алгоритм

fzero пытается найти корень скалярной функции f скалярной переменной x.

fzero ищет интервал вокруг начальной точки, так что f (x) изменяет знак. Если вы задаете начальный интервал вместо начальной точки ,fzero проверяет, что f (x) имеет различные знаки в конечных точках интервала. Начальный интервал должен быть конечным; он не может содержать ± Inf.

fzero использует комбинацию интервала бисекции, линейной интерполяции и обратной квадратичной интерполяции в порядок, чтобы найти корень f (x). Посмотритеfzero для получения дополнительной информации.

\ Алгоритм

The \ алгоритм описан в разделе MATLAB арифметических операторов для mldivide.

См. также

|

Похожие темы