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

5 Лаборторная работа ВМ

.docx
Скачиваний:
0
Добавлен:
02.01.2024
Размер:
172.29 Кб
Скачать

Федеральное агентство связи Ордена

Трудового Красного Знамени

федеральное бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

(МТУСИ)

Кафедра Информатики

Предмет: Вычислительные модели

Лабораторная работа № 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.