МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІКТА
Кафедра ЗІ
З В І Т
до лабораторної роботи №5
з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «Метод Ньютона для розв’язування систем нелінійних рівнянь»
Варіант № 16
Львів-2016Мета роботи – ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона з якобіаном із кінцевих різниць.
1.Завдання
Розв’язати систему нелінійних рівнянь методом Ньютона з якобіаном із кінцевих різниць, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою .
16)
2.Блок-схема алгоритму програми
3. Список ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення
x, a, b, E – змінні дійсного типу, які є аргументами виразу;
y – змінна дійсного типу, якій надається значення результату обчислення виразу;
4. Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace laba5
{
class Nuton
{
public double x1, x2;
public double dx1, dx2, d, x, y, del;
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("Koreni:\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();
}
}
}
5. Результати роботи програми
6. Висновки
На даній лабораторній роботі я ознайомився з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона з якобіаном із кінцевих різниць.