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