- •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. Порядок виконання роботи
- •Список літератури
Вступ
Комп’ютерний практикум з дисципліни “Обчислювальна техніка та програмування” проводяться зі студентами спеціальності “Системи управління виробництвом та розподілом електроенергії” у першому, другому і третьому семестрах. Відповідні методичні вказівки складаються з 4-х частин.
Зміст Частини 4 методичних вказівок до виконання комп’ютерного практикуму “Математичні методи розв’язання задач: алгоритмізація і програмування” відповідає навчальній програмі дисципліни у третьому семестрі. Тут вивчаються математичні методи розв’язання рівнянь і систем рівнянь, методи чисельного інтегрування і диференціювання функцій, інтерполяції функцій, методи розв’язання диференційних рівнянь, визначення екстремумів функцій тощо. Значна увага в методичних вказівках приділяється питанням алгоритмічної та програмної реалізації цих методів.
В результаті студенти набувають навичок самостійного розв’язання задач наукового програмування на мові Pascal.
Методичні вказівки містять матеріали 12-ти занять комп’ютерного практикуму. Матеріали кожного заняття присвячені одному із методів, що вивчаються і включають теоретичні відомості, приклади розв’язання задач, фрагменти алгоритмів і програм на мові Pascal, що реалізують відповідний метод, індивідуальні завдання і порядок їх виконання.
При виконанні завдань студент повинен ознайомитись з теоретичним матеріалом, наведеним у методичних вказівках і додатковій літературі, виконати “ручне” розв’язання індивідуального завдання, розібравшись у наведеному алгоритмі і фрагменті програми, розробити на їх основі докладний алгоритм і програму Pascal для розв’язання завдання. Після цього з використанням розробленої програми розв’язується поставлена задача і проводиться серія порівняльних розрахунків з метою дослідити характеристики математичного методу що вивчається, вплив на них різних чинників.
По результатам роботи студенти готують звіт, в якому наводять результати виконання всіх пунктів завдання.
Заняття № 1
Розробка програми
розв’язання нелінійних рівнянь методом Ньютона
Мета роботи: Закріплення знань із застосування ітераційних методів для чисельного розв’язання нелінійних алгебраїчних рівнянь, вивчення алгоритму метода Ньютона, розробка відповідної комп’ютерної програми на мові Pascal і використання її для розв’язання заданих нелінійних рівнянь.
1.1 Теоретичні відомості
Ітераційні методи. Метод Ньютона для розв’язання нелінійних
алгебраїчних рівнянь
У загальному вигляді нелінійне рівняння (алгебраїчне, трансцендентне) можна записати :
F(x) = 0 . (1.1)
Припускаємо, що
функція F(x)
диференціюється.
Коренем рівняння (1.1) називається будь-яке
значення
,
що обертає функцію F(x)
на нуль, тобто при якому
=0.
Графічно корінь рівняння відповідає значенню , при якому крива F(x) перетинає вісь абсцис:
Розв’язання рівняння заключається у визначені одного або всіх його коренів на відрізку [a,b]. Алгебраїчне рівняння n-го ступеня має не більше n дійсних коренів.
У загальному випадку нелінійні рівняння не мають аналітичних формул для визначення коренів. Тоді для їх розв’язання використовують чисельні методи, які є наближеними. Вони дозволяють знайти корені рівняння із заданою точністю.
Чисельні методи знаходження коренів рівняння складаються з двох основних етапів:
Визначення початкового наближення значення кореня
;Покрокове уточнення початкового наближення до досягнення заданої точності
.
Як результат
розв’язання
рівняння чисельним методом приймається
чергове наближення кореня
, для якого виконується загальна умова
:
, (1.2)
де
-
точне
значення кореня.
Початкове наближення
кореня
рівняння (1.1) іноді відоме із фізичної
суті задачі. Інакше його часто можна
визначити , використовуючи аналіз
функції F(x).
При цьому
підбором треба знайти такі два значення
,
за яких F(x)
має
протилежні знаки, тобто:
.
Тоді на відрізку між a і b є не менше однієї точки, де функція F(x) перетинає вісь абсцис, тобто, F(x)=0. Як початкове наближення для визначення кореня рівняння F(x) можна взяти значення:
(1.3)
Для визначення початкового наближення кореня можна застосувати, також графічне розв’язання рівнянь. Для цього треба побудувати графік функції у = F(x). Значення параметру х у точках перетину функцією вісі абсцис приймаються як початкові наближення коренів. Інший спосіб: рівняння (1.1) замінюють рівносильним рівнянням виду:
,
де функції
і
простіші за функцію F(x).
Побудувавши графіки функцій
і
,
початкові наближення коренів рівняння
визначаємо як абсциси точок перетину
цих графіків.
Чисельний метод, у якому відбувається послідовне, крок за кроком, уточнення початкового наближення, називається ітераційним методом.
Кожний крок
уточнення невідомих у такому методі
називається ітерацією.
Якщо при послідовних ітераціях отримуємо
значення, які все ближче наближуються
до точного значення кореня
,
то такий метод ітерацій збігається.
Одним з ефективних ітераційних методів розв’язання рівнянь є метод Ньютона (метод дотичних).
Його суть полягає
у заміні кривої F(x)
в точці
чергового наближення
дотичною до неї, перетин якої з віссю x
дає наступне наближення невідомого.
Тут виконується лінійна апроксимація.
Наступне (к+1)-ше
наближення невідомого в методі Ньютона
визначається за формулою:
, (1.4)
де
- чергове к-те
і наступне (к+1)-ше
наближення
невідомого;
- значення
функції у точці чергового наближення
(нев’язка
рівняння). Визначається при підстановці
у функцію;
-
значення похідної функції в точці
чергового наближення.
Графічна ілюстрація метода Ньютона показана на Рис. 1.1.
Рис. 1.1.
Примітки:
Як початкове наближення кореня доцільно вибрати кінець відрізку [a,b], в якому виконується умова:
(1.5)
Контроль завершення ітераційного процесу виконується за умовами досягнення заданої точності :
а) за зміною наближень невідомого на суміжних ітераціях:
,
(1.6)
б) по величині нев’язки рівняння (1.1) на черговій ітерації:
(1.7)
Нев’язка
визначається при підстановці наближення
у рівняння.
Метод Ньютона збігається набагато швидше, ніж інші ітераційні методи.
Похибка округлення не накопичується – загальна властивість ітераційних методів.
Послідовність дій при розв’язанні рівняння методом Ньютона:
а) Підготовчий етап:
Записати рівняння у формі (1.1);
Визначити похідну від функції
;Записати формулу (1.4) для заданого рівняння;
Визначити початкове наближення невідомого кореня з використанням (1.3), (1.5) тощо;
б) Розв’язання рівняння:
Визначити значення функції і її похідної в точці наближення;
За формулою (1.4) обчислити наступне наближення невідомого;
Перевірити умови завершення ітераційного процесу за формулами (1.6) або (1.7).
Якщо умови виконуються, то обчислене на останній ітерації наближення кореня , є розв’язком рівняння із заданою точністю .
Якщо умови не виконуються, то ітераційний розрахунок повторюється з пункту 5 при новому наближенні кореня.
Приклад розв’язання нелінійного рівняння методом Ньютона:
Знайти один із
коренів рівняння
з точністю
Розв’язання:
а) Підготовчий етап. Записуємо рівняння у формі (1.1):
Похідна від функції:
Запишемо формулу (1.4) для заданого рівняння:
Визначаємо початкове наближення кореня: обчислимо значення функції в точках х=2 і х=3:
.
Тобто на інтервалі
[2,3]
існує не менше одного кореня. Як початкове
наближення можна взяти значення
,
при якому виконується умова (1.5).
б) Розв’язання рівняння. Ітерація 1.
.
Нев’язка рівняння в цій точці:
Необхідно виконати наступну ітерацію.
Ітерація 2:
Задана точність досягнута. Як корінь рівняння із точністю приймається значення х=2.905.
1.2. Алгоритмічна та програмна реалізація метода Ньютона
Var X0, E, XK, XK1, FK, FK1: real;
k: integer;
label M,M1;
Begin
<введення вихідних даних>
K:=0; XK:=X0;
M1: FK:=XK*XK*XK-5*XK-10;
FK1:=3*XK*XK-5;
XK1:=XK-FK/FK1;
FK:=XK1*XK1*XK1-5*XK1-10;
If abs(FK)< =E then goto M;
XK:=XK1;
K:=K+1;
goto M1;
M: <виведення результатів>
…
Примітки:
Фрагмент програми реалізує розв’язання рівняння, яке розглянуто у прикладі;
Вихідними даними є початкове наближення кореня і точність Е;
Результати – наближення кореня із заданою точністю ХК1, точність Е і кількість ітерацій k.
Порядок виконання роботи
Вибрати індивідуальне завдання. Номер варіанту в Таблиці 1.1. відповідає номеру студента у списку групи;
Ознайомитись із теоретичним матеріалом по чисельним методам розв’язання рівнянь;
Виконати «ручне» розв’язання заданого рівняння методом Ньютона (до 5 ітерацій);
Скласти докладний алгоритм розв’язання рівняння методом Ньютона;
Скласти і відлагодити програму на мові Pascal, яка реалізує введення вихідних даних, розв’язання заданого рівняння, виведення результатів у зручній формі на екран і в файл.
Основні фрагменти програми оформити як процедури і функції. Описати алгоритм і програму (змінні, масиви, процедури і функції, особливості реалізації тощо );
Розв’язати задане рівняння за допомогою розробленої програми з точністю ε =0.01. Порівняти отримані результати із результатами «ручних» розрахунків.
Побудувати графік
збіжності ітераційного процесу
;
Обчислити корінь рівняння при 5 різних значеннях точності (
).
Контроль завершення ітераційного
процесу – за умовою (1.7);Повторити п.7 з використанням умови (1.6), внісши відповідні зміни у програму. Результати п.6 і п.7 оформити у вигляді таблиці;
Обчислити інші дійсні корені рівняння;
Підготувати висновки по роботі.
Результати виконання кожного пункту докладно описати у звіті по роботі.
Для отримання підвищеної оцінки необхідно на основі наведеного фрагменту програми розробити власну програму.
Таблиця 1.1. Варіанти завдань до Заняття № 1
Варіант |
Рівняння |
Варіант |
Рівняння |
1 |
|
21 |
|
2 |
|
22 |
|
3 |
|
23 |
|
4 |
|
24 |
|
5 |
|
25 |
|
6 |
|
26 |
|
7 |
|
27 |
|
8 |
|
28 |
|
9 |
|
29 |
|
10 |
|
30 |
|
11 |
|
31 |
|
12 |
|
32 |
|
13 |
|
33 |
|
14 |
|
34 |
|
15 |
|
35 |
|
16 |
|
36 |
|
17 |
|
37 |
|
18 |
|
38 |
|
19 |
|
39 |
|
20 |
|
40 |
|
Заняття № 2
Розробка програми
розв’язання систем лінійних алгебраїчних рівнянь (СЛАР) методом Гауса
Мета роботи: Закріплення знань із застосування метода Гауса для
розв’язання СЛАР, вивчення алгоритму метода, розробка відповідної комп’ютерної програми на мові Pascal і застосування її для розв’язання заданої системи рівнянь
Теоретичні відомості
Метод Гауса для розв’язання СЛАР
Система n лінійних рівнянь з n невідомими у загальному вигляді може бути записана:
(2.1)
де
-
невідомі
величини, які необхідно визначити при
розв’язанні
системи;
-
коефіцієнти при невідомих;
- вільні члени
рівнянь системи.
У матричній формі ця система рівнянь має вигляд:
(2.2)
або
де А - квадратна
матриця коефіцієнтів системи розмірністю
x - вектор невідомих;
В - вектор вільних членів.
Розв’язати
систему (2.1)
- означає обчислити такі значення
елементів вектора невідомих
,
за яких кожне рівняння системи
перетворюється на тотожність.
Для цього можна застосувати як прямі, так і ітераційні методи. Найбільш поширеним прямим способом розв’язання систем лінійних рівнянь є алгоритм послідовного виключення невідомих, що має назву метод Гауса.
Існують різні алгоритми його реалізації. Один із них - метод Гауса із зворотнім ходом для розв’язання СЛАР розглядається у цій роботі.
Метод Гауса із
зворотнім ходом передбачає виконання
двох етапів: прямий і зворотній хід
методу. Прямий хід - послідовність
однотипних кроків виключення невідомих
із системи рівнянь. В результаті його
виконання вихідна система (2.1) або (2.2) з
прямокутною
матрицею коефіцієнтів перетворюється
на еквівалентну
систему рівнянь з верхньою трикутною
матрицею коефіцієнтів. На зворотному
ході обчислюються значення невідомих,
починаючи з останнього (від
до
).
Розглянемо докладно можливий варіант
перетворень.
Прямий хід:
Перший крок
виключення невідомих. Виключаємо
невідому
із рівнянь системи (2.1), починаючи з
другого. Виберемо на діагоналі опорний
елемент a
.
При цьому
необхідно, щоб виконувались умови:
і
i=2,…n. (2.3)
Тобто він повинен бути відмінним від нуля і серед елементів першого стовпця матриці коефіцієнтів в (2.2) найбільшим за абсолютною величиною. В іншому разі переставимо рівняння в системі так, щоб ці умови виконувались.
Ділимо перше
рівняння системи (2.1) на опорний елемент
;
(2.4)
Для виключення
складових з невідомим
із решти рівнянь необхідно рівняння
(2.4) по черзі домножати на коефіцієнт
і результат віднімати від відповідних
рівнянь вихідної системи (2.1). В результаті
отримаємо
еквівалентну
систему:
(2.5)
де
(2.6)
номер рівняння в системі, і = 2, …, n;
j - номер елемента в рівняннях, j = 1, …, n.
На
другому
кроці
виключення
невідомих
необхідно виключити
з рівнянь системи (2.5), починаючи з
третього. Вибираємо опорний елемент
згідно з умовами, подібними до (2.3), тобто
Якщо вони не виконуються, переставимо
відповідним чином рівняння 2,3,…, цієї
системи. Ділимо друге рівняння системи
(2.5) на опорний елемент
. (2.7)
Виключаємо доданки
з невідомим
із рівнянь 3,4,…,n
системи (2.5). Для цього рівняння (2.7) по
черзі домножаємо на
(і = 3, …, n)
і результат віднімаємо від відповідних
рівнянь. Отримуємо еквівалентну систему:
(2.8)
де
(2.9)
Наступні кроки виключення невідомих виконуються аналогічно. На k-му кроці коефіцієнти і вільні члени системи рівнянь обчислюються за такими формулами:
,
(2.10)
де к = 1, …, n-1 – номер кроку виключення невідомих, що збігається з
номером рівняння системи, в якому розташований
опорний елемент;
і = k+1, …, n - номер рівняння, з якого виключається невідома;
j = k, …, n - номер елемента в рівнянні.
Опорний елемент
вибирається в стовпці відповідно до
умов:
(2.11)
Після виконання останнього (n-1)-го кроку виключення невідомих вихідна система рівнянь перетворюється на еквівалентну систему з верхньою трикутною матрицею коефіцієнтів:
(2.12)
Зворотній хід:
Обчислюємо значення всіх невідомих, починаючи з . Із останнього рівняння системи (2.12) отримаємо:
(2.13)
Підставляємо його
в передостаннє рівняння і обчислюємо
(2.14)
Послідовно
визначаємо
із решти рівнянь. Останнім обчислюється
із першого рівняння при підстановці в
нього всіх значень
,…,
.
В загальній формі ці обчислення можна
описати:
(2.15)
Для перевірки
правильності
розв’язання
системи рівнянь, необхідно обчислені
значення невідомих
підставити у вихідну систему (2.1). Усі
рівняння повинні перетворитись при
цьому на тотожності.
Приклад розв’язання СЛАР методом Гауса
Обчислити корені
системи 3-х лінійних рівнянь з трьома
невідомими
(2.16)
Прямий хід.
Необхідно виконати
2 кроки виключення невідомих. На першому
кроці (к=1)
виключаємо
невідому
із другого і третього рівнянь системи
(2.16). Опорний елемент
=5.
Ділимо на нього перше рівняння системи
(2.16):
і виконуємо виключення. Для цього робимо перетворення відповідно до (2.6) при і=2,3; j=1,2,3:
і=2,
Таким чином, в результаті перетворень, друге рівняння (i=2) набуває вигляду:
і=3,
Третє рівняння (і=3) набуває вигляду:
0+0.6
Отримуємо еквівалентну систему рівнянь:
(2.17)
На другому
кроці (к=2)
виключаємо невідому
із третього рівняння системи (2.17). Опорний
елемент
Ділимо на нього друге рівняння системи
(2.17):
і виконуємо виключення. При і=3, j=2,3 відповідно до (2.9) отримуємо:
і=3
Третє рівняння системи (2.17) набуває вигляду:
0+0.3182
Отримуємо еквівалентну систему рівнянь з трикутною матрицею коефіцієнтів:
(2.18)
Зворотній хід.
Із останнього рівняння системи (2.18) знаходимо:
Підставляємо
обчислене значення
в передостаннє рівняння системи (2.18) і
знаходимо:
Із першого рівняння системи знаходимо:
Таким чином, розв’язком системи є вектор
.
Для перевірки правильності розв’язання системи рівнянь підставляємо елементи вектора Х у вихідну систему (2.16). Рівняння системи перетворюється на тотожності, що підтверджує правильність її розв’язання.
