5 Лаборторная работа ЧМ
.docxФедеральное агентство связи Ордена
Трудового Красного Знамени
федеральное бюджетное образовательное учреждение высшего образования
«Московский Технический Университет Связи и Информатики»
(МТУСИ)
Кафедра Информатики
Предмет: Вычислительные модели
Лабораторная работа № 5
Тема:
«Одномерная оптимизация»
Вариант 00
Выполнил:
Проверил(а): Величайший преподаватель
_______________
Москва 0000
Задание
1. Выбрать индивидуальное задание по номеру варианта из табл. 1.6-1 для решения задачи одномерной оптимизации:
· функцию f(x), минимум которой необходимо найти;
· метод оптимизации для ручного расчета - значение параметра p;
· метод оптимизации для расчета на ПК - значение параметра t.
2. Провести исследование индивидуального варианта задания:
· построить график функции;
· выбрать начальный отрезок неопределенности (отрезок, содержащий точку минимума);
· проверить выполнение аналитического условия унимодальности функции на выбранном отрезке.
3. Провести «ручной расчет» трех итераций и определить длину отрезка, содержащего точку минимума, после трех итераций.
4. Составить схему алгоритма, написать программу решения задачи оптимизации
указанным в задании методом для «расчета на ПК» и провести контрольное тестирование программы, воспользовавшись исходными данными и результатами рассмотренного примера.
5. Решить задачу оптимизации с точностью E = 10-4с помощь написанной программы («расчета на ПК»).
6. Вычислить число итераций, необходимых, чтобы локализовать точку минимума с
точностью E1 = 10-4, расчет сравнить с результатом, полученным на ПК.
Задание для решения задачи одномерной оптимизации:
функция, для которой необходимо найти минимум:
;
методы решения задачи оптимизации для «ручного расчета»–
дихотомия;
методы решения задачи оптимизации для «расчета на ПК»– золотого сечения.
График функции y=f(x):
На отрезке [1;2] функция f(x) дважды дифференцируема
и f2(x) = f ˈˈ(х*)>0 в любой точке этого отрезка, следовательно,
функция f(x) унимодальная на этом отрезке.
Ручной расчет методом дихотомии:
, f -4,38681
Выполним расчеты в Mathcad:
Для метода дихотомии длина отрезка неопределенности, содержащего точку минимума, после трёх итераций равна
, Δ3= +0.01= 0.13375 ,
Схема алгоритма:
Программный код :
Option Strict On
Option Explicit On
Imports System.Math
Public Class Form1
Sub vivodList(ByVal Z As Double, ByVal LB As ListBox)
LB.Items.Add(Format(Z, "0.00000"))
End Sub
Sub vivodtxt(ByVal x As Double, ByRef t As TextBox)
t.Text = CStr(x)
End Sub
Function f(ByVal x As Double) As Double
Dim fun As Double
fun = -5 * x * Sin(x + 1) + 2 * Cos(x)
Return fun
End Function
Sub zol(ByRef a As Double, ByRef b As Double, ByRef E As Double, ByRef xmin As Double, ByRef fxmin As Double)
Dim n As Integer
Dim x1, x2, k1, k2, F1, F2 As Double
k1 = (3 - Sqrt(5)) / 2
k2 = (Sqrt(5) - 1) / 2
x1 = a + k1 * (b - a)
x2 = a + k2 * (b - a)
F1 = f(x1)
F2 = f(x2)
Do Until Abs(b - a) <= E
n = n + 1
If F1 < F2 Then
b = x2
x2 = x1
x1 = a + k1 * (b - a)
F2 = F1
F1 = f(x1)
Else : a = x1
x1 = x2
x2 = a + k2 * (b - a)
F1 = F2
F2 = f(x2)
End If
vivodListt(n, ListBox1)
vivodList(a, ListBox2)
vivodList(b, ListBox3)
vivodList(x1, ListBox4)
vivodList(x2, ListBox5)
vivodList(f(x1), ListBox6)
vivodList(f(x2), ListBox7)
vivodList(Abs(a - b), ListBox8)
Loop
xmin = (a + b) / 2
fxmin = f(xmin)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear() : ListBox2.Items.Clear() : ListBox3.Items.Clear() : ListBox4.Items.Clear() : ListBox5.Items.Clear() :
ListBox6.Items.Clear() : ListBox7.Items.Clear() : ListBox8.Items.Clear()
Dim a, b, exp, xmin, fxmin As Double
a = Val(TextBox1.Text)
b = Val(TextBox2.Text)
exp = Val(TextBox3.Text)
zol(a, b, exp, xmin, fxmin)
vivodtxt(xmin, TextBox4)
vivodtxt(fxmin, TextBox5)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
End
End Sub
Sub vivodListt(ByVal Z As Double, ByVal LB As ListBox)
LB.Items.Add(Z)
End Sub
End Class
Результат выполнения программы:
Число итераций, необходимых для локализации точки минимума:
В программе при N=19 длина конечного отрезка равна 0,00011. Точность достигнута при N=20.