- •1.2. Алгоритмічна та програмна реалізація метода Ньютона
- •Порядок виконання роботи
- •2.2. Алгоритмічна і програмна реалізація метода Гауса
- •Порядок виконання роботи
- •Заняття № 3 Розробка програми розв’язання слар методом подвійної факторизації
- •3.1. Теоретичні відомості
- •. Алгоритмічна і програмна реалізація метода подвійної факторизації
- •3. Інші елементи рядка і відповідно до (3.5);
- •4. Елемент матриці відповідно до (3.4);
- •Алгоритмічна та програмна реалізація метода Зейделя
- •Порядок виконання роботи
- •5.2. Алгоритмічна та програмна реалізація метода Ньютона-Рафсона (для системи 3-х нелінійних рівнянь з трьома невідомими)
- •6.2. Алгоритмічна та програмна реалізація інтерполяційного полінома Лагранжа
- •6.3. Порядок виконання роботи
- •Заняття № 7 Розробка програми чисельного інтегрування функцій методом трапецій
- •7.1. Теоретичні відомості
- •7.Алгоритмічна та програмна реалізація методу трапецій
- •7.3. Порядок виконання роботи
- •8.2. Алгоритмічна та програмна реалізація формули Сімпсона
- •8.3. Порядок виконання роботи
- •Розробка програми чисельного диференціювання функцій
- •9.1. Теоретичні відомості
- •9.2. Алгоритмічна та програмна реалізація чисельного диференціювання функцій
- •9.3. Порядок виконання роботи
- •10.2. Алгоритмічна та програмна реалізація методів Ейлера для розв’язання здр
- •10.3. Порядок виконання роботи
- •11.2. Алгоритмічна та програмна реалізація методу Рунге-Кутта четвертого порядку
- •12.2. Алгоритмічна та програмна реалізація градієнтного методу
- •12.3. Порядок виконання роботи
- •Список літератури
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)
де
-
-
норма вектора, яка
дорівнює його довжині. Обчислюється як
корінь із суми квадратів складових
вектора
.
Координати цієї
точки
і значення функції в ній
і є розв’язком
задачі.
Загальний алгоритм визначення екстремума функції
градієнтним методом
Підготовчий етап:
визначення структури вектора-градієнта і аналітичних виразів його складових диференціюванням функції по усім змінним ;
вибір коефіцієнту кроку ;
Вибір і завдання начальних наближень вектора змінних
,
які є координатами початкової точки
траєкторії спуску. Обчислення значення
функції в цій точці
;Обчислення значень похідних функції (складових вектора-градієнта) в точці :
;Контроль завершення відповідно до умов (12.5). Якщо ці умови не виконуються – перехід до п. 5, якщо виконується – до п. 6;
Виконання кроку вздовж вектора-градієнта, заданого його складовими, відповідно до (12.4), визначення координат чергової точки :
.
Повернення до п. 3;
Точка траєкторії спуску , координати якої
визначені в результаті останнього
кроку, є шуканим екстремумом функції
із заданою точністю
.
Обчислюємо значення
функції в цій точці
.
Приклад визначення екстремумів функції градієнтним методом
Знайти максимум
функції однієї змінної
в інтервалі
з точністю
.
Визначаємо структуру вектора-градієнта. Він має одну складову:
.
Приймаємо коефіцієнт
кроку
;
Як початкове наближення параметра беремо початок інтервалу
.
Значення функції в цій точці:
Виконуємо крок
оптимізації (
).
Вектор-градієнт в точці початкового наближення х(0):
Контроль завершення відповідно до (12.5):
.
Необхідно виконати наступний крок (к=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-х кроків оптимізації
в напрямку вектора-градієнта. При цьому
монотонно зменшується довжина вектора
(збігається до
нуля ) і
збільшується значення функції
,
наближуючись до
.
На хід процесу оптимізації можно впливати, змінюючи коефіцієнт кроку .
