Градієнтні методи

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Градієнтні методичисельні методи рішення з допомогою градієнта задач, що зводяться до знаходження екстремумів функції.

Постановка задачі розв'язання системи рівнянь в термінах методів оптимізації

Завдання рішення системи рівнянь:

{f1(x1,x2,,xn)=0fn(x1,x2,,xn)=0(1)

з n x1,x2,,xn еквівалентна задачі мінімізації функції

F(x1,x2,,xn)i=1n|fi(x1,x2,...,xn)|2 (2)

або якій-небудь іншій зростаючій функції від абсолютних величин |fi| нев'язок (помилок) fi=fi(x1,x2,,xn), i=1,2,,n. Завдання знаходження мінімуму (або максимуму) функції n змінних і сама по собі має велике практичне значення.

Для вирішення цієї задачі ітераційними методами починають з довільних значень xi[0](i=1,2,...,n) і будують послідовні наближення:

x[j+1]=x[j]+λ[j]v[j]

або покоординатно:

xi[j+1]=xi[j]+λ[j]vi[j],i=1,2,,n,j=0,1,2, (3)

які зводяться до деякого рішенням x[k] при j.

Різні методи відрізняються вибором «напрямку» для чергового кроку, тобто вибором відносин

v1[j]:v2[j]::vn[j].

Величина кроку (відстань, на яку треба піднятися в заданому напрямку в пошуках екстремуму) визначається значенням параметра λ[j], який мінімізує величину F(x1[j+1],x2[j+1],,xn[j+1]) як функцію від λ[j]. Цю функцію зазвичай апроксимують її розкладанням у ряд Тейлора або інтерполяційним многочленом з трьох-п'яти вибраних значень λ[j]. Останній метод застосуємо для знаходження max і min таблично заданої функції F(x1,x2,...,xn).

Градієнтні методи

Основна ідея методів полягає в тому, щоб йти в напрямку найшвидшого спуску, а цей напрямок задається антиградієнтом F:

x[j+1]=x[j]λ[j]F(x[j])

де λ[j] вибирається:

  • сталою, в цьому випадку метод може розходитися;
  • дробовим кроком, тобто довжина кроку в процесі спуску ділиться на деяке число;
  • якнайскорішим спуском: λ[j]=argminλF(x[j]λ[j]F(x[j]))

Метод найшвидшого спуску (метод градієнта)

Вибирають vi[j]=Fxi, де всі похідні обчислюються при xi=xi[j], і зменшують довжину кроку λ[j] по мірі наближення до мінімуму функції F.

Для аналітичних функцій F і малих значень fi тейлорівський розклад F(λ[j]) дозволяє вибрати оптимальну величину кроку

λ[j]=k=1n(Fxk)2k=1nh=1n2FxkdxhFxkFxh(5)

де всі похідні обчислюються при xi=xi[j]. Параболічна інтерполяція функції F(λ[j]) може виявитися більш зручною.

Алгоритм

  1. Задаються початкове наближення і точність розрахунку x0,ϵ
  2. Розраховують x[j+1]=x[j]λ[j]F(x[j]), де λ[j]=argminλF(x[j]λ[j]F(x[j]))
  3. Перевіряють умову зупинки:
    • Якщо |x[j+1]x[j]|>ϵ, то j=j+1 і перехід до кроку 2.
    • Інакше x=x[j+1] і зупинка.

Метод покоординатного спуску Гауса — Зейделя

Цей метод названий за аналогією з методом Гауса — Зейделя для розв'язання системи лінійних рівнянь. Покращує попередній метод за рахунок того, що на черговій ітерації спуск здійснюється поступово уздовж кожної з координат, однак тепер необхідно обчислювати нові λn раз за один крок.

Алгоритм

  1. Задаються початкове наближення і точність розрахунку x00,ε
  2. Розраховують{x1[j]=x0[j]λ1[j]F(x0[j])x1e1xn[j]=xn1[j]λn[j]F(xn1[j])xnen, де λi[j]=argminλF(xi1[j]λ[j]F(xi1[j])xiei)
  3. Перевірють умову зупинки:
    • Якщо |xn[j]x0[j]|>ε, то x0[j+1]=xn[j],j=j+1 і перехід до кроку 2.
    • Інакше x=xn[j] і зупинка.

Метод спряжених градієнтів

Шаблон:Докладніше Метод спряжених градієнтів ґрунтується на поняттях прямого методу багатовимірної оптимізації — методу спряжених напрямів.

Застосування методу до квадратичних функцій n визначає мінімум за n кроків.

Алгоритм

  1. Задаються початковим наближенням і похибкою: x0,ε,k=0
  2. Розраховують початковий напрямок: j=0,Skj=f(xk),xkj=xk
  3. xkj+1=xkj+λSkj,λ=argminλf(xkj+λSkj),Skj+1=f(xkj+1)+ωSkj,ω=||f(xkj+1)||2||f(xkj)||2
    • Якщо ||Skj+1||<ε або ||xkj+1xkj||<ε, то x=xkj+1 і зупинка.
    • Інакше
      • якщо (j+1)<n, то j=j+1 і перехід до 3;
      • xk+1=xkj+1,k=k+1 і перехід до 2.

Див. також

Література

Шаблон:Методи оптимізації Шаблон:ВП-портали Шаблон:Math-stub Шаблон:Refimprove