Методы одномерной оптимизации

Слайд 2

Метод деления на три равных отрезка. Дан отрезок [a;b] на котором

Метод деления на три равных отрезка.

Дан отрезок [a;b] на котором определена

функция f(x) и точность ε. Надо уточнить точку минимума с заданной точностью. Введём новое обозначение точек x1=a и x4=b. Вычислим Z=1/3.
Делим отрезок на три равные части и определяем точку x2=x1+Z(x4-x1) и точку x3=x4-Z(x4-x1). Вычисляем значения функции в этих точках F2=f(x2) F3=f(x3).
Определяем новый отрезок, содержащий точку экстремума, сравнив значения функций F2 и F3. Если F2 < F3, то границы нового отрезка определим как x1=x1, а x4=x3, иначе x1=x2, а x4=x4.
Проверяем условие окончания итерационного процесса | x4-x1 | ≤ 2ε. Если оно выполняется, то определим решение, как x=(x4+x1)/2 и значение функции в этой точке f(x). Иначе перейдем на пункт 2.

Введем понятие эффективности, как отношение доли сокращения отрезка к количеству вычисления функции на одной итерации тогда Q=0,33/2≈0,17

Слайд 3

Слайд 4

f(x)=3*sin(2*x)-1.5*x-1

f(x)=3*sin(2*x)-1.5*x-1

Слайд 5

Попробуем увеличить долю сокращения отрезка Дан отрезок [a;b] на котором определена

Попробуем увеличить долю сокращения отрезка

Дан отрезок [a;b] на котором определена функция

f(x) и точность ε. Надо уточнить точку минимума с заданной точностью. Введём новое обозначение точек x1=a и x5=b. Делим отрезок [x1;x5] пополам и определяем точку середины x3=(x5+x1)/2 и значение функции F3=f(x 3).
Делим отрезок [x1;x3] пополам и определяем точку середины x2=(x1+x3)/2 и значение функции F2=f(x2). Делим отрезок [x3;x5] пополам и определяем точку середины x4=(x3+x5)/2 и значение функции F4=f(x4).
Определяем новый отрезок, содержащий точку экстремума, сравнив значения функций F2 и F3. Если F2 < F3, то границы нового отрезка определим как: x1=x1, x5=x3, x3=x2 и F3=F2 иначе если F4

Метод деления отрезка пополам.

Эффективность метода Q≈0,5/2=0,25

Слайд 6

Слайд 7

Метод половинного деления f(x)=3*sin(2*x)-1.5*x-1

Метод половинного деления

f(x)=3*sin(2*x)-1.5*x-1

Слайд 8

Попробуем разбивать отрезок на такие части, чтобы одну из двух точек

Попробуем разбивать отрезок на такие части, чтобы одну из двух точек

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

делим на

Заменяем

Решая получим

Слайд 9

Метод Золотого сечения. Дан отрезок [a;b] на котором определена функция f(x)

Метод Золотого сечения.

Дан отрезок [a;b] на котором определена функция f(x) и

точность ε. Надо уточнить точку минимума с заданной точностью. Введём новое обозначение точек x1=a и x4=b и вычислим Z=(3-√5)/2.
Делим отрезок на три части и определяем точку x2=x1+Z(x4-x1) и точку x3=x4-Z(x4-x1). Вычисляем значения функции в этих точках F2=f(x2) F3=f(x3).
Определяем новый отрезок, содержащий точку экстремума, сравнив значения функций F2 и F3. Если F2 < F3, то границы нового отрезка определим как x1=x1, x4=x3 , x3=x2, F3=F2 x2=x1+z(x4-x1) F2=f(x2) иначе x1=x2, x4=x4, x2=x3 F2=F3 x3=x4-z(x4-x1) F3= f(x3).
Проверяем условие окончания итерационного процесса | x4-x1 | ≤ 2ε. Если оно выполняется, то определим решение, как x=(x4+x1)/2 и значение функции в этой точке f(x). Иначе перейдем на пункт 3.

Введем понятие эффективности, как отношение доли сокращения отрезка к количеству вычисления функции на одной итерации тогда Q=0,3819/1≈0,3819

Слайд 10

начало F2 x, f(x) a, b, ε || f(x). x1 :=

начало

F2

x, f(x)

a, b, ε || f(x).

x1 := a; x4:=b: Z=(3-√5)/2

x2:=x1+Z(x4-x1); x3:=x4-Z(x4-x1)
F2:=f(x2);

F3:=f(x3)

|x4-x1|≤2ε

конец

x:=(x1+x4)/2

нет

да

x1=x2: x2=x3: F2=F3
x3:=x4-Z(x4-x1): F3:=f(x3)

x4=x3: x3=x2: F3=F2
x2:=x1+Z(x4-x1):F2:=f(x2)

Слайд 11

f=inline(‘3*sin(2*x)-1.5*x-1'); [x,y]=fminbnd(f,1.2,-0.4)

f=inline(‘3*sin(2*x)-1.5*x-1');
[x,y]=fminbnd(f,1.2,-0.4)