Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Word / Одномерная Оптимизация1

.doc
Скачиваний:
26
Добавлен:
07.01.2014
Размер:
181.25 Кб
Скачать

Российский химико-технологический университет им. Д.И.Менделеева

Кафедра вычислительной математики

ОТЧЕТ

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

Вариант 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

Соседние файлы в папке Word