АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Решения задачи оптимизации с помощью «расчета на ПК». Метод золотого сечения

Читайте также:
  1. F. Метод, основанный на использовании свойства монотонности показательной функции .
  2. FAST (Методика быстрого анализа решения)
  3. I Психологические принципы, задачи и функции социальной работы
  4. I этап Подготовка к развитию грудобрюшного типа дыхания по традиционной методике
  5. I. 1.1. Пример разработки модели задачи технического контроля
  6. I. 1.2. Общая постановка задачи линейного программирования
  7. I. 2.1. Графический метод решения задачи ЛП
  8. I. 3.2. Двойственный симплекс-метод.
  9. I. ГИМНАСТИКА, ЕЕ ЗАДАЧИ И МЕТОДИЧЕСКИЕ ОСОБЕННОСТИ
  10. I. ЗАДАЧИ ПЕДАГОГИЧЕСКОЙ ПРАКТИКИ
  11. I. Значение и задачи учета. Основные документы от реализации продукции, работ, услуг.
  12. I. Метод рассмотрения остатков от деления.

 

 

Метод золотого сечения. Программный код:

Option Strict On

Option Explicit On

Imports System.Math

Public Class Form1

Function f(ByVal x As Double) As Double

Return -5 * x * Sin(x + 1) + 2 * Cos(x) 'описание процедуры-функции

End Function

Sub zolot(ByVal a As Double, ByVal b As Double, ByVal Eps As Double, _

ByRef t As String, ByRef Xmin As Double, ByRef Ymin As Double)

Dim k1, k2, x1, x2, F1, F2 As Double

Dim n As Integer

n = 0

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)

t = Format(n, "00") & Space(5) & Format(a, "0.00000") & Space(5) & Format(b, "0.00000") & _

Space(5) & Format(x1, "0.00000") & Space(5) & Format(x2, "0.00000") & _

Space(5) & Format(F1, "0.00000") & Space(5) & Format(F2, "0.00000") & _

Space(5) & Format(b - a, "0.00000") & vbNewLine

Do Until b - a < Eps 'условие останова

n = n + 1

If F1 < F2 Then

b = x2: x2 = x1: F2 = F1

x1 = a + k1 * (b - a): F1 = f(x1)

Else

a = x1: x1 = x2: F1 = F2

x2 = a + k2 * (b - a): F2 = f(x2)

End If

t = t & Format(n, "00") & Space(5) & Format(a, "0.00000") & Space(5) & Format(b, "0.00000") & _

Space(5) & Format(x1, "0.00000") & Space(5) & Format(x2, "0.00000") & _

Space(5) & Format(F1, "0.00000") & Space(5) & Format(F2, "0.00000") & _

Space(5) & Format(b - a, "0.00000") & vbNewLine

Loop

Xmin = CDbl(Format((a + b) / 2, "0.00000")) ' конечное значение Xmin

Ymin = CDbl(Format(f(Xmin), "0.00000")) 'конечное значение f(Xmin)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim a, b, Eps, Xmin, Ymin As Double

Dim t As String

a = CDbl(TextBox1.Text)

b = CDbl(TextBox2.Text)

Eps = CDbl(TextBox3.Text)

zolot(a, b, Eps, t, Xmin, Ymin)

TextBox4.Text = t

TextBox5.Text = CStr(Xmin)

TextBox6.Text = CStr(Ymin)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

End

End Sub

End Class

 


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)