МЕТОД НЬЮТОНА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ НЕЛІНІЙНИХ РІВНЯНЬ

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

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

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

Рік:
2011
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні методи дослідження інформаційних процесів та систем

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №5 з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем» на тему: «МЕТОД НЬЮТОНА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ НЕЛІНІЙНИХ РІВНЯНЬ» Мета роботи - ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона. 1.Короткі теоретичні відомості Стандартний метод Ньютона Метод Ньютона базується на лінеаризації задачі і заміні розв'язування нелінійної системи (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 – факторизації та ін.) , знаходимо . Значення  визначаємо із виразу  (11) Завдання до лабораторної роботи Розв’яжіть систему нелінійних рівнянь одним із методів, вказаних викладачем, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою .   3.Блок-схема алгоритму програми 4. Текст програми using System; namespace dimka { class Program { static void Main() { Metod M = new Metod(); M.Obrach(); } } class Metod { public double f1(double x10, double x20) { return x10-0.25*Math.Pow((x10*x10-x20*x20),2.0)-x10*x10*x20*x20+0.5; } public double f2(double x10, double x20) { return x20 - x10 * x20 * (x10 * x10 - x20 * x20) - 0.5; } public double df1dx1(double x10, double x20) { return 1 - x10 * (x10 * x10 - x20 * x20)-2*x10*x20*x20; } public double df1dx2(double x10, double x20) { return x20 * (x10 * x10 - x20 * x20) - 2 * x10 * x10 * x20; } public double df2dx1(double x10, double x20) { return x20 * x20 * x20 - 3 * x10 * x10 * x20; } public double df2dx2(double x10, double x20) { return 1 - x10 * x10 * x10 + 3 * x20 * x20 * x10; } public void Obrach() { double x10 = 0.5, x20 = -0.5, h = 0.00001; double delX1, delX2, poh; Console.WriteLine("Початковi наближення \n x10= "+x10+"\n x20= "+x20+" \nПохибка= "+h); if ((df1dx1(x10, x20)*df2dx2(x10, x20) - df1dx2(x10, x20)*df2dx1(x10, x20)) != 0) do { delX1=df1dx2(x10,x20)*f2(x10,x20)-df2dx2(x10,x20)*f1(x10,x20); delX2=df2dx1(x10,x20)*f1(x10,x20)-df1dx1(x10,x20)*f2(x10,x20); poh=delX1/x10; x10+=delX1; x20+=delX2; } while (Math.Abs(poh)>h); else Console.WriteLine("Визначник Якобiана=0"); Console.WriteLine("Результат :\n x1="+x10+"\n x2="+x20); Console.ReadKey(); } } } 5. Результати роботи програми / 6. Висновки На даній лабораторній роботі я навчився розв’язувати системи нелінійних алгебраїчних рівнянь за допомогою комп’ютерних програм . Я розв’язував системи за допомогою методу Ньютона. Використовуючи алгоритм ми суттєво скорочуєм час на обчислення нелінійних алгебраїчних рівнянь.
Антиботан аватар за замовчуванням

30.03.2013 22:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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