Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОМ_лаб_укр.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.81 Mб
Скачать

11.2. Алгоритмічна та програмна реалізація методу Рунге-Кутта четвертого порядку

Var x0,y0,x,y,b,h: real;

k1,k2,k3,k4: real;

i,n: integer;

Begin

<введення вихідних даних>

h:=(b-x0)/n;

x:=x0; y:=y0;

for i:=1 to n do

begin

k1:=x+y;

k2:=(x+h/2)+(y+h*k1/2);

k3:=(x+h/2)+(y+h*k2/2);

k4:=(x+h)+(y+h*k3);

у:=у+h*(k1+2*k2+2*k3+k4)/6;

<виведення x,y>

x:=x+h;

end;

end.

Примітка:

у програмі реалізовано розв’язання диференційного рівняння, що розглянуте у прикладі.

11.3. Порядок виконання роботи

Вибрати індивідуальне завдання у Таблиці 10.1. і виконати всі пункти завдання із Розділу 10.3, застосувавши для розв’язання заданого диференційного рівняння метод Рунге-Кутта четвертого порядку.

Заняття № 12

Розробка програми

визначення екстремумів функцій градієнтним методом

Мета роботи: Закріплення знань із застосування градієнтних методів для визначення екстремумів функцій, розробка відповідного алгоритму і програми на мові Pascal і застосування її для розв’язання індивідуального завдання.

12.1. Теоретичні відомості

Загальні положення

Екстремумом функції називається її мінімальне або максимальне значення. У загальному випадку функція може мати декілька екстремумів. Один із них – головний - називається глобальним, інші - локальні. Задача пошуку екстремумів зводиться до їх локалізації і уточнення значень параметрів та функції в точці екстремума.

На параметри накладаються, зазвичай, обмеження у вигляді нерівностей . В межах відрізку функцію вважаємо унімодальною, тобто такою, що має один екстремум. За таких умов для пошуку екстремуму функції найчастіше застосовують методи можливих напрямків. Це методи послідовних наближень, у яких, в результаті виконання ряду кроків оптимізації у просторі параметрів, формується послідовність точок , що збігається до точки екстремума функції . Їх сукупність складає траєкторію спуску до мінімуму (максимуму) функції.

На траєкторії спуску кожна наступна точка повинна бути кращою за попередню точку по критерію оптимальності:

- якщо визначається мінімум функції , і - якщо визначається максимум функції.

Координати кожної точки на траєкторії спуску обчислюються за рекурентною формулою:

(12.1)

де - вектори координат -ї і наступної -ї точок траєкторії;

- коефіцієнт кроку. Дозволяє впливати на довжину кроку при переході від точки до точки . В роботі приймається як постійна величина ;

- крок, задає напрям кроку.

Градієнтний метод

Градієнтом функції в точці називається вектор, ортогональний до дотичної до поверхні рівня функції в цій точці площини і направлений в сторону найшвидшого збільшення функції. Позначається .

Протилежний йому напрям антиградієнта показує шлях найшвидшого зменшення функції.

Визначений таким чином напрям вектора-градієнта (антіградієнта) дозволяє виконувати оптимальні кроки і спрямовувати траєкторію спуску в бік екстремума функції, який треба знайти. Саме тому в градієнтному методі кроки оптимізації виконуються вздовж вектора градієнта:

(12.2)

Знак залежить від виду екстремуму функції, який визначається:

знак “+” - при пошуку максимуму функції, знак “-” – мінімуму.

Вектор-градієнт визначається через похідні функції по всім незалежним змінним:

(12.3)

Вони є складовими вектора, визначають його напрям і довжину. Для визначення чергового кроку необхідно обчислювати, відповідно до (12.2), значення похідних .

З врахуванням (12.1) і (12.2) рекурентна формула градієнтного метода набуває вигляду:

(12.4)

Вона дозволяє отримати координати чергової -ї точки на траєкторії спуску до екстремуму функції.

При наближенні до екстремуму функції довжина вектора-градієта зменшується. В точці екстремуму вона дорівнює нулю. Якщо чергова точка траєкторії наблизилась до екстремуму в межах заданої точності , то виконуватиметься умова:

(12.5)

де - - норма вектора, яка дорівнює його довжині. Обчислюється як корінь із суми квадратів складових вектора .

Координати цієї точки і значення функції в ній і є розв’язком задачі.

Загальний алгоритм визначення екстремума функції

градієнтним методом

  1. Підготовчий етап:

  • визначення структури вектора-градієнта і аналітичних виразів його складових диференціюванням функції по усім змінним ;

  1. вибір коефіцієнту кроку ;

  2. Вибір і завдання начальних наближень вектора змінних , які є координатами початкової точки траєкторії спуску. Обчислення значення функції в цій точці ;

  3. Обчислення значень похідних функції (складових вектора-градієнта) в точці : ;

  4. Контроль завершення відповідно до умов (12.5). Якщо ці умови не виконуються – перехід до п. 5, якщо виконується – до п. 6;

  5. Виконання кроку вздовж вектора-градієнта, заданого його складовими, відповідно до (12.4), визначення координат чергової точки :

.

Повернення до п. 3;

  1. Точка траєкторії спуску , координати якої визначені в результаті останнього кроку, є шуканим екстремумом функції із заданою точністю .

Обчислюємо значення функції в цій точці .

Приклад визначення екстремумів функції градієнтним методом

Знайти максимум функції однієї змінної в інтервалі з точністю .

  1. Визначаємо структуру вектора-градієнта. Він має одну складову:

.

Приймаємо коефіцієнт кроку ;

  1. Як початкове наближення параметра беремо початок інтервалу . Значення функції в цій точці:

Виконуємо крок оптимізації ( ).

  1. Вектор-градієнт в точці початкового наближення х(0):

  1. Контроль завершення відповідно до (12.5):

.

Необхідно виконати наступний крок (к=1).

  1. Координати наступної точки траєкторії спуску відповідно до (12.4):

.

Значення функції в цій точці:

F(X(1)) = 0.1*(Х(1))3 – 2*(Х(1))2 + 10*Х = 0.1*(2.6875)3 – 2*(2.6875)2 +10*2.6875 =14.3708.

Переходимо до наступного кроку ( ):

Повторюємо кроки оптимізації до досягнення заданої точності. Результати розрахунків записуємо в таблицю:

Крок

0

1

2

3

4

5

6

7

8

9

2.5

2.6875

2.8292

2.9376

3.0215

3.0868

3.1379

3.1781

3.2099

3.235

F(X(к))

14.0625

14.3708

14.5479

14.652

14.7145

14.7525

14.7759

14.7903

14.7994

14.8051

1.875

1.4168

1.0846

0.8384

0.6529

0.5114

0.4023

0.3176

0.2514

0.1995

2.6875

2.8292

2.9376

3.0215

3.0868

3.1379

3.1781

3.2099

3.235

3.255

Крок

10

11

12

13

14

15

16

17

18

19

3.255

3.2708

3.2834

3.2935

3.3015

3.3079

3.313

3.3171

3.3204

3.323

F(X(к))

14.8086

14.8109

14.8123

14.8132

14.8138

14.8142

14.8144

14.8146

14.8147

14.8147

0.1585

0.1262

0.1005

0.0801

0.064

0.051

0.0401

0.0326

0.026

0.0208

3.2708

3.2834

3.2935

3.3015

3.3079

3.313

3.3171

3.3204

3.323

3.325

Крок

20

21

22

23

3.325

3.3267

3.328

3.3291

F(X(к))

14.8148

14.8148

14.8148

14.8148

0.0166

0.0133

0.0106

0.0085

3.3267

3.328

3.3291

3.3299

Після виконання 23-го кроку оптимізації довжина вектора-градієнта становить:

.

Розрахунок закінчується.

Максимум функції з точністю дорівнює і досягається при після виконання 23-х кроків оптимізації в напрямку вектора-градієнта. При цьому монотонно зменшується довжина вектора (збігається до нуля ) і збільшується значення функції , наближуючись до .

На хід процесу оптимізації можно впливати, змінюючи коефіцієнт кроку .