МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра БІ
З В І Т
до лабораторної роботи №5
з курсу: «Комп’ютерні методи дослідження інформаційних процесів і систем»
на тему: «Метод Нютона для розв’язування систем нелінійних рівнянь»
Варіант № 9
Львів – 2012р.
Мета роботи – ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь методом – Нютона.
Завдання
Розв’яжіть систему нелінійних рівнянь одним із методів, вказаних викладачем, вибираючи за початкові наближення . Ітерації проводити до збігу двох послідовних наближень з похибкою .
9)
Блок-схема алгоритму програми
/
Список ідентифікаторів констант, змінних, функцій,
використаних у блок-схемі алгоритму і програмі,
та їх пояснення
a,с – двовимірні масиви із елементами типу double;
x – одновимірний масив із значеннями коренів системи рівнянь;
i, j,L,n,K,m – змінні типу int з рівнем доступу public, що використовуються в коді програми;
Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace НелінійніРняМетодНютонаЯкобі2рня
{
class Program
{
static void Main(string[] args)
{
ob b = new ob();
b.obrahunk();
Console.ReadLine();
}
}
class ob
{
public double a, b, c, d,abcd,max=0;
public Int16 i, j;
public double[] x,fx,x_;
public double[,] a1;
public void vyvedehha_x()
{
for (i = 0; i < 2; i++)
{
Console.Write("X{0}={1}\n", i + 1, x[i]);
}
}
public void vyvedehha_fx()
{
for (i = 0; i < 2; i++)
{
Console.Write("FX{0}={1}", i + 1, fx[i]);
}
}
public void vyvedenna_a1()
{
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
Console.WriteLine("a[{0},{1}]={2}", i, j, a1[i, j]);
}
}
public void obrahunk()
{
x_=new double[2];
x = new double[2];
fx = new double[2];
a1 = new double[2, 2];
for (i = 0; i <2; i++)
{
Console.Write("X{0}=", i + 1);
x[i] = Convert.ToDouble(Console.ReadLine());
}
do
{
a = 1 - 2 * x[0];
b = 2 * x[1];
c = -2 * x[1];
d = 1 - 2 * x[0];
abcd = 1 / (a * d - b * c);
a1[0, 0] = a * abcd;
a1[0, 1] = -b * abcd;
a1[1, 0] = -c * abcd;
a1[1, 1] = d * abcd;
fx[0] = x[0] - x[0] * x[0] + x[1] * x[1] - 0.1;
fx[1] = x[1] - 2 * x[0] * x[1] - 0.1;
for (i = 0; i < 2; i++)
{
x_[i] = x[i];
}
for (i = 0; i < 2; i++)
{
x[i] = x_[i] - (a1[i, 0] * fx[0] + a1[i, 1] * fx[1]);
}
max = 0;
for (i = 0; i < 2; i++)
{
if (max < Math.Abs((x[i] - x_[i]) / x_[i]))
max = Math.Abs((x[i] - x_[i]) / x_[i]);
}
vyvedehha_x();
//vyvedenna_a1();
} while (max >= 0.001);
Console.WriteLine("fx1={0},fx2={1}", fx[0], fx[1]);
}
}
}
Результати роботи програми
/