ділення беруть відрізок [a, c], інакше – [c, b]. Обчислення відбувається поки довжина відрізка більша за о. Метод називається золотого перерізу тому, що при виборі точок c i d задовільняється умова
(c - a)/(b - a) = (b - d)/(b - a) ? 0.38. Ця умова дозволяє використовувати значення f(c) або f(d) вже обчислені на попередньому кроці циклічного процесу.
Алгоритм методу золотого перерізу представляє собою цикл з розгалуженням всередині циклу. Перед циклом знаходять місцезнаходження точок c i d за формулами: c = a + 0.38*(b-a), d = b - 0.38*(b - a) та обчислюють y1 = f(c) i y2=f(d). В циклі перевіряють умову: якщо f(c) < f(d), то b = d, d = c, y2 = y1, c = a + 0.38*(b-a), y1 = f(c), інакше a = c, c = d, y1 = y2, d = b - 0.38*(b - a), y2 = f(d). Цикл виконується поки b - a > о.
3.2. Графічний алгоритм підпрограми оптимізації функцій
1
2
3
4
5
6
7
8
ні
9
так
10
ні
так
3.3. Опис алгоритму оптимізації функцій
Блок 1. Заходимо в функцію Zolper.
Блок 2-4. Присвоєння значень усім константам.
Блок 5. Звертаємось до підпрограми числового інтегрування функцій.
Блок 6-7. Обраховуємо значення d, і присвоюємо його змінній с0.
Блок 8. Звертаємось до підпрограми числового інтегрування функцій.
Блок 9. Задаємо умову, при якій порівнюється різниця b-a і похибка eps.
Блок 10. Порівнюємо змінні у1 і у2, і якщо у1<y2: b=d;d=c;c=a+0.38*(b-a);c0=c;y2=y1; і змінній u присвоюється значення с, в іншому
випадку: a=c;c=d;d=b-0.38*(b-a);c0=d;y1=y2; а змінна u=d.
Блок 11. Повернення із функції.
4. Підпрограма розв’язування системи дифрівнянь
4.1. Перетворення заданого дифрівняння в систему дифрівнянь
Для перетворення заданого дифрiвняння в систему рiвнянь першого по---рядку застосуємо таку пiдстановку:
Ваpiант 0: y=x3;
y'=x3'=x2;
y''=x3''=x2'=x1.
Система дифрiвнянь прийме вигляд
x1'=(b0-a0*x3-a1*x2-a2*x1)/a3;
x2'=x1;
x3'=x2.
Початковi умови: x1=x2=x3=0 при t=0. Вихiдна величина y=x3.
4.2. Опис методу розв’язування системи дифрівнянь
Постановка задачі (задача Коші) має вигляд диференціального рівняння з початковими умовами
yР = f(t,y), y = y0 при t = t0. t Є [a, b].
Для її наближеного розв’язання застосовуються так звані однокрокові методи: Ейлера, Ейлера покращений, Ейлера-Коші та Рунге-Кута. Їх суть полягає в тому, що діапазон інтегрування [a, b] ділять на n елементарних відрізків довжиною h. Значення шуканої функції в точці t0=a відомо з початкових умов, а її обчислення в першій і наступних точках аж до точки tn=b виконують за поданими нижче формулами. При цьому h=(b-a)/n, t0 = a, tn = b, ti+1 = ti+h, yi=f(ti), i=0,1,2, ... n.
Алгоритм розв’язування дифрівняння однокроковими методами представляє собою цикл з накопиченням суми.
Відповідно до одного з методів, рішення задачі можна отримати за правилом Рунге-Кутта вигляду (1). Метод Рунге-Кута має четвертий порядок точності. Ця формула визначає ітераційний процес, який зводиться до операцій матрично-векторної арифметики.
(1)
Всі проміжні коефіцієнти ki можуть бути обчислені лише послідовно. Паралелізм може бути реалізований при розрахунку кожного з коефіцієнта. Це може бути досягнуто за рахунок використання паралельних матрично–векторних арифметичних операцій, описаних вище.
Альтернативний метод рішення задачі Коші за правилом Рунге-Кутта – розрахунок повного оператора (матриці) переходу. Ця операція виконується заздалегідь і одного разу (до виконання ітерацій методу) по формулі (3.3). Таким чином, весь ітераційний процес зводиться до серії послідовних множень матриці на вектор.
(3.3)
Перевага підходу з розрахунком матриці переходу виявляється при великій кількості ітерацій методу Рунге-Кутта. Відповідно для певної кількості ітерацій кращі показники демонструватиме підхід з розрахунком проміжних величин.
Характерна межа методів Рунге-Кутта: ітераційний процес пошуку рішення задачі Коші. Паралелізм реалізується в процесі обчислень на кожному кроці при розрахунку проміжних величин. Обчислювальна залежність проміжних величин в загальному випадку не дозволяє здійснювати одночасний розрахунок наближень рішення на різних кроках методу Рунге-Кутта.
4.3. Графічний алгоритм розв’язування системи дифрівнянь
4.4. Опис графічного алгоритму розв’язування системи дифрівнянь
· Заходимо в функцію RunKut.
· Присвоєння значень усім константам.
y[0]=y[1]=y[2]=0 - Масив правих частин системи диф. рівнянь.
b0=c0*k1*k2;
a0=1+b0;
yb[0]=0 - Масив значень величини у (для графіка).
· Задаємо умову з накопиченням змінної і при і=1,і<=n.
Дальше задається ще шість раз умова з накопиченням вже змінної j, при j=0,j<m. Після перевірки кожної умови знаходяться значення коефіцієнтів формули Руннге-Кута, та відбувається звернення до підпрограми systema.
· Знаходимо масив значень величини уb (для графіка), і повертаємо отримані значення у головну програму.
5. Підпрограма числового інтегрування функцій
5.1. Опис методу числового інтегрування функцій
Постановка задачі обчислення означеного інтегралу функції має вигляд
.
Інтеграл функції чисельно дорівнює площі (на рисунку 1 заштрихована), обмеженій лініями: t=a, t=b, y=0 i y=f(t). Для її наближеного обчислення застосовуються методи: прямокутників, трапецій і парабол, які передбачають заміну кривої y=f(t) відповідно ступінчатою та ламаною лініями або параболою. Суть цих методів полягає в тому, що діапазон інтегрування [a, b] ділять на n елементарних відрізків довжиною h, після чого виконують обчислення за поданими нижче формулами, які називаються квадратурними. При цьому h=(b-a)/n, t0 = a, tn = b, ti+1 = ti+h, yi=f(ti).
Алгоритм числового інтегрування функцій представляє собою цикл з накопиченням суми.
Метод парабол (Сімпсона)
Точність чисельного інтегрування помітно зростає, якщо підінтегральну функцію y=f(x) на відрізку [a,b] замінити квадратичною функцією, яка у вузлах x0, x1, x2 співпадає з функцією f(x). Підінтегральну функцію f(x) замінимо інтерполяційним многочленом Ньютона другого степеня, записаним у наступному вигляді
Тоді
Для підвищення точності обчислень відрізок [a,b] розбивають на n пар відрізків і замінюють підінтегральну функцію інтерполяційним