Розв’язування системи нелінійних рівнянь методом простої ітерації (методом Ньютона)

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

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

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

Рік:
2020
Тип роботи:
Лабораторна робота
Предмет:
Чисельні методи аналізу автоматичних систем

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ <<ЛЬВІВСЬКА ПОЛІТЕХНІКА>> Інститут ІКНІ Кафедра автоматизовані системи управління ЗВІТ Лабораторна робота №5 З курсу “Чисельні методи” «Метод ітерацій» Лабораторна робота № 5 Розв’язування системи нелінійних рівнянь методом простої ітерації (методом Ньютона) Мета роботи: вивчити і засвоїти метод Ньютона. Порядок роботи: Попереднє опрацювання теоретичного матеріалу. Отримання допуску до виконання лабораторної роботи. Опрацювання типового навчального завдання (прикладів). Створення проекту для виконання індивідуального завдання. Оформити звіт для захисту лабораторної роботи за зразком: назва роботи; мета роботи; короткі теоретичні відомості; алгоритм розв’язування задачі; тексти відповідних модулів проекту; аналіз отриманих результатів та висновки. Захист лабораторної роботи. 1.Короткі теоретичні відомості 1.1 Метод Ньютона для системи двох рівнянь. Нехай потрібно знайти розв’язок системи двох нелінійних рівнянь F(x,y)=0 (1) G(x,y)=0 де F,G:Rn→Rn Послідовні наближення обчислюємо за формулами xn+1=xn- (2) n=0,1,2… Якобіан  повинен бути відмінним від нуля. Початкове наближення x0,y0 визначають наближено (графічно). Але зауважимо, що метод ефективний лише при достатній близькості початкового наближення в (2) до розв’язку системи (1). 1.2 Метод простої ітерації для системи двох нелінійних рівнянь. Нехай потрібно з заданою точністю ε знайти дійсні корені системи двох нелінійних рівнянь. F1(x,y)=0 (3) F2(x,y)=0 Кількість і наближення коренів системи (3) знаходимо графічно. Нехай система має тільки ізольовані дійсні корені. При використанні методу ітерацій систему (3) зводимо до еквівалентної системи наступного вигляду:  (4) де , – так звані інтегруючі функції. На основі системи (4) будуємо ітерації  (5) Згідно з теоремою [3, с. 79] для збіжності процесу (5) до кореня системи (4) необхідно, щоб виконувалася умова на неперервнодиференційовні функції ,  (6) Оцінка похибки n-го наближення дається формулою  (7) де M=max{q1,q2} Збіжність методу ітерацій є доброю, якщо М<1/2, при цьому М/(1-М)<1. Побудуємо ітеруючі функції для системи (4)   (8) Коефіцієнти α,β,γ,δ знаходимо з системи  (9) За такого підбору параметрів α,β,γ,δ умова (6) виконується, якщо часткові похідні функцій ,  змінюється мало в околі точки  Приклад.. Нехай маємо систему  Записуємо еквівалентну систему  В квадраті будуть виконуватися умови 0<φ1<1, 0<φ2<1 Тоді умови (6) матимуть вигляд  1.3 Метод Ньютона для системи n рівнянь. Нехай задано систему  (10) Систему (10) можна записати в компактному вигляді (векторна форма запису)  (11) де , . Для розв’язування (11) користуємося методом послідовних наближень Ньютона. Розв’язок системи представимо у вигляді  p=0,1,2…. (12) Вводимо матрицю Якобі для системи функцій   Якщо ця матриця не особлива, то Тоді поправку  обчислюємо за формулою  p=0,1,2… (13) де -обернена матриця Якобі. Отже, послідовні наближення знаходять за формулою p=0,1,2… (14) За нульове наближення  можна взяти наближене значення вектор-кореня. Для отримання кожного наближення потрібно знаходити обернену матрицю . Умови збіжності методу Ньютона досліджені Л.В.Канторовичем та А.М.Островським. 1.4 Метод ітерацій для системи n рівнянь. Нехай  (15) де  дійсні, визначені в околі ω ізольованого кореня системи (15). Запишемо її в векторній формі  де  (16) Для знаходження вектор-кореня системи (16) можна використати метод ітерацій  p=0,1,2… (17) Для цього систему n лінійних рівнянь загального вигляду (11)  як і в (16) запишемо в еквівалентному вигляді  де – ітеруюча вектор-функція, що має вигляд  (18) При цьому матриця Λ у методі ітерацій вибирається так:  (19) причому матриця  має бути неособливою. Підставляючи  з (18) в (16), отримуємо ітераційну формулу  p=0,1,2… (20) яку використовуємо у методі ітерацій. Вона дещо простіша для обчислень, ніж ітераційна формула методу Ньютона (14). 2. Індивідуальне завдання Використовуючи метод простої ітерації, розв’язати з точністю від ε = 10до ε = 10 такі нелінійні системи рівнянь. Початкове наближення знайти графічно. Дослідити залежність кількості ітерацій від точності. Подати відповідні таблиці та графіки. Номер завдання для кожного cтудента відповідає його порядковому номеру в списку групи. Варіант 27  3. Виконання завдання 3.1 Текст програми #include <iostream> #include <math.h> #include < iomanip> using namespace std; #define eps 0.001 double function1(double x, double y) { return sin(27 * x - y) - x * y + 1; } double function2(double x, double y) { return x * x - 2.7 * y * y - 2.75; } double func11(double x, double y) { return 27 * cos(27 * x - y) - y; } double func12(double x, double y) { return -x - cos(27 * x - y); } double func21(double x, double y) { return 2*x; } double func22(double x, double y) { return -((27 * y) / 5); } void ober_matr(double a[2][2]) { double det, aa; det = a[0][0] * a[1][1] - a[0][1] * a[1][0]; aa = a[0][0]; a[0][0] = a[1][1] / det; a[1][1] = aa / det; aa = a[0][1]; a[0][1] = -a[0][1] / det; a[1][0] = -a[1][0] / det; } void iter(double x, double y) { int i = 1; double a[2][2], dx, dy, b[2], norm; do { a[0][0] = func11(x, y); a[0][1] = func12(x, y); a[1][0] = func21(x, y); a[1][1] = func22(x, y); ober_matr(a); dx = -a[0][0] * function1(x, y) + -a[0][1] * function2(x, y); dy = -a[1][0] * function1(x, y) + -a[1][1] * function2(x, y); x = x + dx; y = y + dy; b[0] = function1(x, y); b[1] = function2(x, y); norm = sqrt(b[0] * b[0] + b[1] * b[1]); cout << i << " | " << "x - " << setprecision(10) << x << " y - " << y << endl; i++; } while (norm >= eps); cout << x << endl << y << endl; } int main() { system("chcp 1251"); system("cls"); cout << "Чисельні методи" << endl << "Лабораторна робота №5" << endl<< "Виконав студент групи КН-203 - Фурдас Андрій" << endl; double x, y; cout << "x = "; cin >> x; cout << "y = "; cin >> y; cout << "eps = " << eps << endl; iter(x, y); cout << endl; return 0; } 3.2 Результати виконання програми / 3.3 Графік функції / Графік побудовано на сайті desmos.com 3.4 залежність кількості ітерацій від точності Eps 0.1 0.01 0.001 10^-4 10^-5 10^-6 10^-7 10^-8 10^-9 10^-10  Iter 39 40 40 41 41 41 41 42 42 42  / 3.5 Пояснення до коду double function1 – верхня функія системи double function2 – нижня функія системи double func11,12,21,22 – похідні по x та y функцій void ober_matr – функція, яка обертає матрицю void iter – функція, яка ітерує, знаходить точки та виводить результат 4. Висновок В результаті виконання цієї лабораторної роботи я вивчив та засвоїв метод Ньютона, написав програму, яка реалізовує метод Ньютона, після чого ввів дані декілька раз та перевірив точки на графіку і переконався, що моя програма працює корректно.
Антиботан аватар за замовчуванням

03.06.2021 15:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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