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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА Кафедра захисту інформації З В І Т До лабораторної роботи №5 з курсу: „ Комп’ютерні методи дослідження інформаційних процесів та систем ” на тему: «Метод Ньютона для розв’язування систем нелінійних рівнянь» Варіант 7 Мета роботи: Ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона. ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ Розв’язати систему нелінійних рівнянь модифікованим методом Ньютона, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою . 7)   Блок схема програми Список індентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення class Program – клас, в якому оголошений метод Main; class Metods –клас, в якому оголошені методи J, A, F, Obchusl; public void J – метод обчислення Якоб’яна; public void A – метод обчислення обертання Якоб’яна; public void F – метод обчислення функції в при х[1], x[2]; public void Obchusl – метод обчислення значення х[1], x[2]; static void Main(string[] args) – головна функція; I – клас типу Methods; j, a масиви 2х2 типу Double; x1, x2, E, delta_xk1, delta_xk2, xk1, xk2 змінні типу double; p – змінна типу int; f,r – лінійні масиви типу Double. Текст програми: using System; using System.Collections.Generic; using System.Text; namespace Njuton { class Program { static void Main(string[] args) { Metods I = new Metods(); I.Obchusl(); Console.ReadKey(); } } class Metods { Double[,] j = new Double[2, 2]; Double[,] a = new Double[2, 2]; double x1, x2, E = 0.00001, delta_xk1, delta_xk2, xk1, xk2; int p; Double[] f = new Double[2]; Double[] r = new Double[2]; public void J(double x1, double x2) { j[0, 0] = 1 - 2 * x1; j[0, 1] = -2 * x2; j[1, 0] = -2 * x2; j[1, 1] = 1 - 2 * x1; } public void A(double x1, double x2) { J(x1, x2); double det = Math.Pow(1 - 2 * x1, 2) - Math.Pow(2 * x2, 2); a[0, 0] = (1 / det) * j[1, 1]; a[0, 1] = (1 / det) * j[1, 0]; a[1, 0] = (1 / det) * j[0, 1]; a[1, 1] = (1 / det) * j[0, 0]; } public void F(double x1, double x2) { f[0] = x1 - Math.Pow(x1, 2) - Math.Pow(x2, 2) + 0.1; f[1] = x2 - 2 * x1 * x2 - 0.1; } public void Obchusl() { x1 = Convert.ToDouble(Console.ReadLine()); x2 = Convert.ToDouble(Console.ReadLine()); int k = 0; A(x1, x2); do { p = 0; k++; if (k % 5 == 0) A(x1, x2); F(x1, x2); r[0] = a[0, 0] * f[0] + a[0, 1] * f[1]; r[1] = a[1, 0] * f[0] + a[1, 1] * f[1]; xk1 = x1 - r[0]; xk2 = x2 - r[1]; delta_xk1 = Math.Abs(xk1 - x1); delta_xk2 = Math.Abs(xk2 - x2); if (delta_xk1 < E) p = 1; if (delta_xk2 < E) p = 1; x1 = xk1; x2 = xk2; } while (p != 1); Console.WriteLine("\n\n{0}\t{1}\n", x1, x2); } } } Результат виконання програми:  Висновок: На лабораторній роботі я склав програму мовою С# і ознайомився з методами Ньютона для розв’язування систем нелінійних рівнянь
Антиботан аватар за замовчуванням

30.03.2016 11:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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