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

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ             ЗВІТ До лабораторної роботи №4 з курсу: «Комп’ютерні методи дослідження інформаційних процесів і систем» на тему: «Метод Ньютона для розв’язування систем нелінійних рівнянь» Варіант №6        Львів 2015 Мета роботи - ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона. Короткі теоретичні відомості Модифікований метод Ньютона При використанні стандартного методу Ньютона на кожній ітерації доводиться обчислювати новий якобіан , хоч зрозуміло, що при закінченні ітерацій він повинен прийняти стабільне значення , де  –розв'язок. У модифікованому або спрощеному методі Ньютона якобіан  заміняють правильно підібраною матрицею А. Звичайно, найкращим, але практично недосяжним варіантом була б заміна , де  - розв'язок. Але на практиці користуються компромісним рішенням: – вибирають за А якобіан в початковій точці , a ітерації проводять за наступною формулою  – зберігають А протягом певного числа ітерацій; – на певній r-й ітерації змінюють А, прирівнюючи її якобіану  і з новим значенням знову виконують певне число ітерацій і т.д. Отже, якобіан обчислюється тільки час від часу, за рахунок чого досягається економія машинного часу. Однак, збіжність методу при цьому близька до лінійної. Завдання до лабораторної роботи Розв’яжіть систему нелінійних рівнянь одним із методів, вказаних викладачем, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою . 6)   Блок-схема алгоритму Блок-схема алгоритму метода f() початок 1 i==0 || i==1 2 так f(x) 3 f(x) кінець f(x) = x1 - Math.Pow(x1, 2) - Math.Pow(x2, 2) -0,1 f(x) = x2 - 2 * x1 * x2 + 0.1 Блок-схема алгоритму метода Poxidna() початок 1 i:=0 i<n i:=i+1 2 так ні i%2=0   3 df[i]:=f(x) df[i]:=f(x) кінець f(x) = (f(x1 + h, x2,i) - f(x1, x2,i)) / h f(x) = (f(x1, x2 + h,i) - f(x1, x2,i)) / h Блок-схема алгоритму метода solve() початок 1 a := Poxidna() 2 d:= f(x) 3 dx1:=f(x) dx2:=f(x) 4 x:=x1 y:=x2 x1=x1+dx x2=x2+dx2 5 del:=(x1-x)/x 6 |del|>h ні x1,x2,f1,f2 кінець f(x) = a[0] * a[3] - a[1] * a[2] f(x) = (-f(x1, x2, 1) * a[3] - (-f(x1, x2, 2) * a[1])) / d; f(x) = (-f(x1, x2, 2) * a[0] - (-f(x1, x2, 1) * a[2])) / d; Блок-схема методу Main( ). початок nt.solve() кінець Текст програми using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 { class Program { public double x1, x2; public double dx1, dx2, d, x, y, del; double h = 0.000000001; 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 - Math.Pow(x1, 2) - Math.Pow(x2, 2) -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("Корені системи:\nx1=" + x + "\nx2=" + y); Console.WriteLine("\nf1=" + (x - Math.Pow(x, 2) - Math.Pow(y, 2) - 0.1) + "\nf2=" + (y - 2 * x * y + 0.1)); } } class Program { public static void Main() { Nuton nt = new Nuton(0, 0); nt.solve(); Console.ReadLine(); } } } Результат виконання програми  Висновок: На даній лабораторній роботі я ознайомилася з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – Модифікованим методом Ньютона.
Антиботан аватар за замовчуванням

03.12.2015 17:17

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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