
Word / Одномерная Оптимизация1
.docРоссийский химико-технологический университет им. Д.И.Менделеева
Кафедра вычислительной математики
ОТЧЕТ
Методы Одномерной Оптимизации
Вариант 15
Выполнил: Михеев Д.И.. гр. И-24
Проверил: Епишкин А.П.
Москва 2006
Методы одномерной оптимизации
Дана некоторая
функция
от одной переменной
,
надо определить такое значение
,
при котором функция
принимает экстремальное значение. Под
ним обычно понимают минимальное или
максимальное значения. В общем случае
функция может иметь одну или несколько
экстремальных точек. Нахождение этих
точек с заданной точностью можно разбить
на два этапа. Сначала экстремальные
точки отделяют, т.е. определяются отрезки,
которые содержат по одной экстремальной
точке, а затем уточняют до требуемой
точности
.
Отделение можно осуществить, как
графически, так и табулированием. Все
методы уточнения точек экстремумов
будем рассматривать относительно
уточнения минимума на заданном отрезке.
Метод деления на три равных отрезка.
1. Дан отрезок
,
на котором определена функция
и точность
.
Надо уточнить точку минимума с заданной
точностью. Введём новое обозначение
точек
и
.
И вычислим Z=1/3.
2. Делим отрезок
на три равные части и определяем точку
и точку
.
Вычисляем значения функции в этих точках
,
.
3. Определяем
новый отрезок, содержащий точку
экстремума, сравнив значения функций
F2 и F3. Если F2 < F3, то границы нового
отрезка определим как
,
а
,
иначе
,
а
.
4. Проверяем
условие окончания итерационного процесса
.
Если оно выполняется, то определим
решение, как
и значение функции в этой точке
.
Иначе перейдем на пункт 2.
Метод деления отрезка пополам.
1. Дан отрезок
,
на котором определена функция
и точность
.
Надо уточнить точку минимума с заданной
точностью. Введём новое обозначение
точек
и
.
2. Делим отрезок
пополам и определяем точку середины
и точку
,
отстоящую на незначительное расстояние
от середины
.
Вычисляем значения функции в этих точках
,
.
3. Определяем
новый отрезок, содержащий точку
экстремума, сравнив значения функций
F2 и F3. Если
,
то границы нового отрезка определим
как
,
а
,
иначе
а
.
4. Проверяем
условие окончания итерационного процесса
.
Если оно выполняется, то определим
решение, как
и значение функции в этой точке
.
Иначе перейдем на пункт 2.
Метод золотого сечения.
1. Дан отрезок
,
на котором определена функция
и точность
.
Надо уточнить точку минимума с заданной
точностью. Вычислим
и введём
новое обозначение точек
и
2. Делим отрезок
на три части и определяем точку
и точку
.
Вычисляем значения функции в этих точках
F2=f(x2)
F3=f(x3).
3. Определяем новый отрезок, содержащий точку экстремума, сравнив значения функций F2 и F3. Если F2 < F3, то пункт 4, иначе пункт 5
4. Границы нового отрезка определим как x1=x1, x4=x3, а x3=x2, F3=F2, x2=x1+Z(x4-x1) и F2=f(x2) пункт 6
5. Границы нового отрезка определим как x1=x2, x4=x4, а x2=x3, F2=F3, x3=x4-Z(x4-x1) и F3=f(x3) пункт 6
6. Проверяем
условие окончания итерационного процесса
| x4-x1
| ≤
2ε.
Если оно выполняется, то определим
решение, как
и значение функции в этой точке
.
Иначе перейдем на пункт 3.
Программа по методу деления отрезка пополам:
Option Explicit
Function F(x As Single) As Single
F = -33.165 - 2.823 * x + 5.425 * x ^ 2 + x ^ 3
End Function
Sub MPD2 ()
Dim F3!, F2!, x1!, x2!, x3!, x4!, a!, b!, e!, i%
a = Cells (1, 2)
b = Cells (2, 2)
e = Cells (3, 2)
i = 0
10: x1 = a
x4 = b
x2 = (x1 + x4) / 2
x3 = x2 + (x4 - x1) / 100
F2 = F(x2)
F3 = F(x3)
If F2 < F3 Then
b = x3
Else
a = x2
End If
i = i + 1
If Abs(x4 - x1) < e Then
Cells (5, 1) = "x ="
Cells (5, 2) = x2
Cells (6, 1) = "f(x) ="
Cells (6, 2) = F(x2)
Cells (7, 1) = "i ="
Cells (7, 2) = i
Else
GoTo 10
End If
End Sub
Ответ: на
отрезке
-
x
0,227587
f(x)
-33,514
i
5
Программа по методу золотого сечения
Option Explicit
Function F(x As Single) As Single
F = -33.165 - 2.823 * x + 5.425 * x ^ 2 + x ^ 3
End Function
Sub zol ()
Dim F3!, F2!, x1!, x2!, x3!, x4!, a!, b!, e!, i%
a = Cells (1, 2)
b = Cells (2, 2)
e = Cells (3, 2)
i = 0
10: x1 = a
x4 = b
x2 = x4 - ((-1 + Sqr (5)) / 2) * (x4 - x1)
x3 = x1 + ((-1 + Sqr (5)) / 2) * (x4 - x1)
F2 = F(x2)
F3 = F(x3)
If F2 < F3 Then
b = x3
Else
a = x2
End If
i = i + 1
If Abs(x4 - x1) < e Then
Cells (5, 1) = "x ="
Cells (5, 2) = x2
Cells (6, 1) = "f(x) ="
Cells (6, 2) = F(x2)
Cells (7, 1) = "i ="
Cells (7, 2) = i
Else
GoTo 10
End If
End Sub
Ответ: на
отрезке
-
x
0,236067
f(x)
-33,5159
i
6