DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

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

Про що ця робота

У роботі досліджено розв’язування систем нелінійних рівнянь методами простої ітерації та Ньютона. Наведено теоретичні відомості, алгоритми, програмну реалізацію на C++ та результати обчислень.

У роботі розглядаються

  • Чисельні методи
  • Системи нелінійних рівнянь
  • Метод Ньютона
  • Метод простої ітерації
  • Програмування на C++
  • Обчислювальна похибка

Зміст і розділи

  1. Короткі теоретичні відомості
  2. Індивідуальне завдання
  3. Виконання завдання
  4. Текст програми
  5. Результати виконання програми
  6. Графік функції
  7. Залежність кількості ітерацій від точності
  8. Пояснення до коду
  9. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Балич Б.І.

Ключові поняття

метод Ньютонаметод простої ітераціїнелінійні рівнянняякобіанматрицяпохибкаітераційний процесзбіжністьпочаткове наближення

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ <<ЛЬВІВСЬКА ПОЛІТЕХНІКА>> Інститут ІКНІ Кафедра автоматизовані системи управління ЗВІТ Лабораторна робота №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"); 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. Висновок В результаті виконання цієї лабораторної роботи я вивчив та засвоїв метод Ньютона, написав програму, яка реалізовує метод Ньютона, після чого ввів дані декілька раз та перевірив точки на графіку і переконався, що моя програма працює корректно.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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