DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Кафедра ЗІ ЗВІТ До лабораторної роботи №5 Мета роботи - ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона. ТЕОРНТИЧНІ ВІДОМОСТІ Метод Ньютона базується на лінеаризації задачі і заміні розв'язування нелінійної системи (2) на послідовність розв'язувань лінійних систем (найчастіше прямими методами). Будемо вважати, що система рівнянь (2) має розв'язок; позначимо його через вектор  і розкладемо кожну функцію в ряд Тейлора в околі розв'язку  (2) де  - члени другого і вищих порядків. Вважаючи, що  дуже близьке до , знехтуємо членами вищих порядків і запишемо систему рівнянь в лінеаризованій формі:  (3) або в іншому вигляді  (4) де  – матриця Якобі (якобіан) системи (1) Враховуючи, що  є розв'язком системи, згідно з (2) можемо записати:  Звідси випливає, що і праву частину (4) також можна прирівняти до нуля:  (5) Розв'язком системи (5) є нове значення вектора X, яке не точно дорівнює значенню вектора  (оскільки знехтували членами другого і вищих порядків). Використовуючи верхні індекси для позначення послідовності ітерацій, можна записати  (6) Звідси  (7) де  - обернена матриця Якобі; . У достатньо широкому околі розв'язку  ітераційний процес (7) збігається, якщо . Ітераційний процес закінчується при виконанні умови  (8) де Σ - задана гранична похибка уточнень коренів системи (1). Таким чином, алгоритм стандартного методу Ньютона можна розбити на декілька кроків. Крок 1. Вибір вектора початкових уточнень . Крок 2. Обчислення елементів матриці Якобі. Крок 3. Обчислення елементів оберненої матриці Якобі. Крок 4. Перемноження значень функції (див. формулу (7))  Крок 5. Одержаний на кроці 4 вектор віднімається від вектора , у результаті чого одержується покращений вектор розв'язку . Крок 6. Перевірка умови закінчення ітерацій (8). Якщо вона не виконується, то за вектор початкових уточнень приймається вектор  і проводиться наступна ітерація, починаючи з кроку 2. При використанні стандартного методу Ньютона слід мати на увазі наступне. 1. Стандартний метод Ньютона надзвичайно ефективний. 2. Збіжність на початку ітераційного процесу, як правило, лінійна. 3. Починаючи з деякого кроку ( уточнити його попередньо неможливо), збіжність різко прискорюється і стає квадратичною. 4. Бувають випадки, коли метод розбігається або спостерігається зациклювання ітерацій. Тому необхідно обмежувати максимальну кількість ітерацій деяким попередньо заданим числом. Основний недолік методу полягає в повторних обчисленнях на кожному кроці вектора , матриці Якобі , оберненої матриці Якобі . Тому на практиці досить часто з метою зменшення витрат машинного часу використовують стандартний метод Ньютона без обертання матриці Якобі. Позначаючи  (9) перепишемо (6) у вигляді  (10) Таким чином, задача зводиться до пошуку вектора поправок (приростів)  із системи лінійних алгебраїчних рівнянь (10), у якій матрицею коефіцієнтів при невідомих  є матриця Якобі , а вектором-стовпцем вільних членів служить вектор значень функції – . Розв'язуючи цю систему одним із відомих методів (як правило, це представники групи прямих методів – метод Гаусса з вибором головних елементів, метод LU – факторизації та ін.) , знаходимо . Значення  визначаємо із виразу  Метод Ньютона базується на лінеаризації задачі і заміні розв'язування нелінійної системи (2) на послідовність розв'язувань лінійних систем (найчастіше прямими методами). Будемо вважати, що система рівнянь (2) має розв'язок; позначимо його через вектор  і розкладемо кожну функцію в ряд Тейлора в околі розв'язку  (2) де  - члени другого і вищих порядків. Вважаючи, що  дуже близьке до , знехтуємо членами вищих порядків і запишемо систему рівнянь в лінеаризованій формі:  (3) або в іншому вигляді  (4) де  – матриця Якобі (якобіан) системи (1) Враховуючи, що  є розв'язком системи, згідно з (2) можемо записати:  Звідси випливає, що і праву частину (4) також можна прирівняти до нуля:  (5) Розв'язком системи (5) є нове значення вектора X, яке не точно дорівнює значенню вектора  (оскільки знехтували членами другого і вищих порядків). Використовуючи верхні індекси для позначення послідовності ітерацій, можна записати  (6) Звідси  (7) де  - обернена матриця Якобі; . У достатньо широкому околі розв'язку  ітераційний процес (7) збігається, якщо . Ітераційний процес закінчується при виконанні умови  (8) де Σ - задана гранична похибка уточнень коренів системи (1). Таким чином, алгоритм стандартного методу Ньютона можна розбити на декілька кроків. Крок 1. Вибір вектора початкових уточнень . Крок 2. Обчислення елементів матриці Якобі. Крок 3. Обчислення елементів оберненої матриці Якобі. Крок 4. Перемноження значень функції (див. формулу (7))  Крок 5. Одержаний на кроці 4 вектор віднімається від вектора , у результаті чого одержується покращений вектор розв'язку . Крок 6. Перевірка умови закінчення ітерацій (8). Якщо вона не виконується, то за вектор початкових уточнень приймається вектор  і проводиться наступна ітерація, починаючи з кроку 2. При використанні стандартного методу Ньютона слід мати на увазі наступне. 1. Стандартний метод Ньютона надзвичайно ефективний. 2. Збіжність на початку ітераційного процесу, як правило, лінійна. 3. Починаючи з деякого кроку ( уточнити його попередньо неможливо), збіжність різко прискорюється і стає квадратичною. 4. Бувають випадки, коли метод розбігається або спостерігається зациклювання ітерацій. Тому необхідно обмежувати максимальну кількість ітерацій деяким попередньо заданим числом. Основний недолік методу полягає в повторних обчисленнях на кожному кроці вектора , матриці Якобі , оберненої матриці Якобі . Тому на практиці досить часто з метою зменшення витрат машинного часу використовують стандартний метод Ньютона без обертання матриці Якобі. Позначаючи  (9) перепишемо (6) у вигляді  (10) Таким чином, задача зводиться до пошуку вектора поправок (приростів)  із системи лінійних алгебраїчних рівнянь (10), у якій матрицею коефіцієнтів при невідомих  є матриця Якобі , а вектором-стовпцем вільних членів служить вектор значень функції – . Розв'язуючи цю систему одним із відомих методів (як правило, це представники групи прямих методів – метод Гаусса з вибором головних елементів, метод LU – факторизації та ін.) , знаходимо . Значення  визначаємо із виразу  ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ Розв’язати систему нелінійних рівнянь методом Ньютона з якобіаном із кінцевих різниць, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою . ТЕКСТ ПРОГРАМИ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { public static void Main() { Nuton nt = new Nuton(1, 1); nt.solve(); } } class Nuton { public double x1, x2; public double dx1, dx2, d, x, y, del, f1, f2; double h = 0.00001; int n = 4; public Nuton(double x, double y) { x1 = x; x2 = y; } double f(double x1, double x2, int i) { if (i == 0 || i == 1) return x1 - x1 * x1 - x2 * x2 - 0.1; return x2 - 2 * x1 * x2 - 0.1; } double[] Poxidna() { double[] df = new double[n]; for (int i = 0; i < n; i++) { if (i % 2 == 0) df[i] = (f(x1 + h, x2, i) - f(x1, x2, i)) / h; else df[i] = (f(x1, x2 + h, i) - f(x1, x2, i)) / h; } return df; } public void solve() { do { double[] a; a = Poxidna(); d = a[0] * a[3] - a[1] * a[2]; dx1 = (-f(x1, x2, 1) * a[3] - (-f(x1, x2, 2) * a[1])) / d; dx2 = (-f(x1, x2, 2) * a[0] - (-f(x1, x2, 1) * a[2])) / d; x = x1; y = x2; x1 += dx1; x2 += dx2; del = (x1 - x) / x; } while (Math.Abs(del) > h); Console.WriteLine("Коренi системи:\nx1=" + x + "\nx2=" + y); f1 = x - (Math.Pow(Math.Pow(x, 2) - Math.Pow(y, 2), 2)) / 4 - Math.Pow(x, 2) * Math.Pow(y, 2) + 0.5; f2 = y - x * y * (Math.Pow(x, 2) - Math.Pow(y, 2)) + 0.5; Console.WriteLine("\nf1=" + f1); Console.WriteLine("f2=" + f2); Console.WriteLine("\nPress any key to exit..."); Console.Read(); } } } РЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ 
Антиботан аватар за замовчуванням

29.05.2013 23:08

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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