DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 6 «Задачі оптимізації»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
КН
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Чисельні методи в інформатиці
Група:
КН-11
Коротко про документ

Про що ця робота

У звіті наведено результати виконання лабораторної роботи з чисельних методів оптимізації. Описано реалізацію методів одновимірної оптимізації та наведено код програми на Delphi.

У роботі розглядаються

  • Оптимізація функцій
  • Чисельні методи
  • Метод золотого перетину
  • Метод дихотомії
  • Програмування на Delphi
  • Табуляція функції

Зміст і розділи

  1. Мета роботи
  2. Теоретичні відомості
  3. Завдання
  4. Текст програми
  5. Висновок
Для кого:Студенти технічних спеціальностей та викладачі вищих навчальних закладів.
Викладачі:Не вказано

Ключові поняття

оптимізаціяфункціяекстремумметод золотого перетинудихотоміяінтервалточністьтабуляціяDelphiграфік

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут ІКНІ Кафедра ПЗ ЗВІТ до лабораторної роботи № 6 На тему: “ Задачі оптимізації ” З дисципліни: “ Чисельні методи в інформатиці ” Мета роботи: навчитись чисельно розв’язувати задачу одновимірної оптимізації, застосовуючи один з класичних методів (метод бісекцій, метод золотого перетину або метод параболічної екстраполяції). Теоретичні відомості Задача одновимірної оптимізації Надана функція F(x) . Треба знайти мінімум (максимум) цієї функції на наданому інтервалі [a,b] з наданою точністю (. У більшості чисельних методів розв’язання цієї задачі вважається, що функція F(x) є унімодальною, тобто має єдиний екстремум на [a,b]. Далі, у методах, що розглянуті нижче, вважається, що розв’язується задача на мінімум. Метод рівномірного пошуку Виконується табуляція функції F(x) із деяким кроком змінювання x і визначається її найменше (найбільше) значення. Метод рівномірного пошуку – це найбільш непродуктивний метод розв’язання задачі оптимізації. Метод ділення відрізку пополам Цей метод дозволяє виключити рівно половину поточного інтервалу на кожній ітерації. Схема методу має такий вигляд. 1. Ввести значення a, b, ( . 2. Обчислити xm = (a+b)/2 . 3. Обчислити значення функції fm = F(xm) . 4. Обчислити значення L = b-a . 5. Якщо L < ( процес завершити, за точку мінімуму вважати xm . 6. Обчислити значення x1 = a+L/4 , x2 = b-L/4 , f1 = F(x1) , f2 = F(x2) . 7. Якщо f1 < fm , тоді b = xm , xm = x1 , fm = f1 ; перейти до п.4. Якщо f2 < fm , тоді a = xm , xm = x2 , fm = f2 ; перейти до п.4. 8. Виконати a = x1 , b = x2 ; перейти до п.4. Метод дихотомії Вихідними даними для цього методу є: цільова функція F(x), інтервал оптимізації [a,b], точність розв’язку (. Крім того обирається параметр диференціювання h, значення якого пропонується обирати по правилу: h = 10-d/2 , де параметр d є кількість десяткових розрядів мантиси числового значення для того типу, який застосовується. Наприклад, якщо для розрахунків застосовано тип double, то d = 16, h = 10-8. Параметр точності ( не повинен бути менше, ніж h. Схема алгоритму наведена нижче. 1. Обчислити x = (a+b)/2 . 2. Якщо b-a < ( процес завершити, значення x є шуканий результат. 3. Якщо F(x-h) < F(x+h) , тоді b = x ; перейти до п.1. Якщо ні, тоді a = x ; перейти до п.1. Метод золотого перетину Цей метод є найбільш ефективним: для досягнення заданої точності він потребує найменшої кількості обчислень цільової функції F(x). Параметри, що надаються: a,b,(. У алгоритмі застосовується параметр (, він дорівнює:  Схема алгоритму виглядає так. 1. Обчислити l = b-a . 2. Якщо l < ( , то завершити процес. За точку мінімуму вважати значення x = (a+b)/2 . 3. Обчислити x1 = a+(1-()l , x2 = a+(l . 4. Обчислити нове значення l по правилу: l = (l . 5. Якщо F(x1) < F(x2), тоді b = x2 , x2 = x1, x1 = a+(1-()l , якщо ні , тоді a = x1 , x1 = x2 , x2 = a+(l . 6. Перейти до п.2. Завдання Протабулювати вказану функцію f(x) на інтервалі [a,b] та побудувати її графік. За допомогою графіку наближено знайти точку мінімуму функції. Чисельно розв’язати задачу одновимірної оптимізації, застосовуючи один з класичних методів (метод бісекцій, метод золотого перетину або метод параболічної екстраполяції). Визначити мінімуму функції на інтервалі [a,b] із точністю 10-4.  a = -0.5 , b = 0.5 Текст програми unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, ExtCtrls, Grids, ValEdit,math, TeEngine, Series, TeeProcs, Chart; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; GroupBox1: TGroupBox; Label2: TLabel; Edit2: TEdit; Image1: TImage; Bevel1: TBevel; Label6: TLabel; ValueListEditor1: TValueListEditor; Button2: TButton; Chart1: TChart; Series1: TLineSeries; XPManifest1: TXPManifest; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; k:real; const a:real = -0.5; b:real = 0.5; implementation {$R *.dfm} function F(x:real):real; begin result:=5*ln(1+x)+2/x*x*x-5; end; function GoldenSectionOptimize2(var e : real):double; var z,a2,b2,x1,x2,l :double; begin a2:=a; b2:=b; z:=(sqrt(5)-1)/2; l:=b2-a2; while l>=e do begin x1:=a2+(l-z)*l; x2:=a2+z*l; l:=z*l; if f(x1)<f(x2) then begin b2:=x2; x2:=x1; x1:=a2+(l-z)*l; end else begin a2:=x1; x1:=x2; x2:=a2+a2*l; end; end; result:=(a2+b2)/2; end; procedure TForm1.Button1Click(Sender: TObject); begin k:=StrToFloat(Edit1.Text); Edit2.Text:= FloatToStr(GoldenSectionOptimize2(k)); end; procedure TForm1.Button2Click(Sender: TObject); var x,y:real; begin Series1.Clear; ValueListEditor1.Strings.Clear; x:=a; while x<=b do begin y:= RoundTo(f(x),-5); ValueListEditor1.InsertRow(FloatToStr(RoundTo(x,-2)),FloatTostr(y),true); Series1.AddXY(x,y,'',clYellow); x:=x+0.01; end; end; end. Протокол роботи програми  Висновок: під час виконання лабораторної роботи я навчився чисельно розв’язувати задачу одновимірної оптимізації, застосовуючи один з класичних методів (метод бісекцій, метод золотого перетину або метод параболічної екстраполяції).
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!