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

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

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

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

Метод Ньютона для розв’язування систем нелінійних рівнянь

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

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

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

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

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

У звіті розглядається застосування методу Ньютона для чисельного розв'язування систем нелінійних рівнянь. Наведено теоретичні відомості, блок-схему та програмну реалізацію алгоритму мовою C#.

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

  • Метод Ньютона
  • Системи нелінійних рівнянь
  • Матриця Якобі
  • Ітераційні методи
  • Чисельні методи
  • Програмна реалізація

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

  1. Короткі теоретичні відомості
  2. Завдання до лабораторної роботи
  3. Блок-схема алгоритму програми
  4. Текст програми
  5. Результати роботи програми
  6. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають комп'ютерні методи та програмування.
Викладачі:Костів Ю.М.

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №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) Завдання до лабораторної роботи Розв’яжіть систему нелінійних рівнянь одним із методів, вказаних викладачем, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою . 13)   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-x10*x10-0,8*x20*x20-0.1; } public double f2(double x10, double x20) { return x20 – 0.1 – 2*x10*x20; } public double df1dx1(double x10, double x20) { return 1 – 2*x10; } public double df1dx2(double x10, double x20) { return 0.8*2*x20; } public double df2dx1(double x10, double x20) { return – 2*x20; } public double df2dx2(double x10, double x20) { return 1 – 2*x10; } public void Obrach() { double x10 = 0, x20 = 0, 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. Висновок У даній лабораторній роботі я навчився розв’язувати системи нелінійних алгебраїчних рівнянь за допомогою за допомогою методу Ньютона. Використовуючи цей алгоритм ми суттєво скорочуєм час на обчислення нелінійних алгебраїчних рівнянь.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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