Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №1
з курсу: «Комп’ютерні методи дослідження інформаційних процесів і систем»
на тему: «Методи уточнення коренів нелінійних рівнянь»
Варіант №3
Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
1. Завдання
Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b]. Методи чисельного розв’язування задаються викладачем.
Варіант
Рівняння
Відрізок
3
sin x – 1/x = 0
[1;1.5]
2. Короткі теоретичні відомості
Метод Ньютона
Метод послідовних наближень, розроблений Ньютоном, широко використовується при побудові ітераційних алгоритмів. Цей метод відомий своєю швидкою збіжністю (квадратичною збіжністю).
Нехай корінь рівняння відокремлений на відрізку , причому і неперервні і зберігають сталі знаки на всьому відрізку . Геометричний зміст методу Ньютона полягає в тому, що дуга кривої замінюється дотичною до цієї кривої.
Візьмемо деяку точку x0 відрізка [а, b] і проведемо в точці [x0, f(x0)] дотичну до цього графіку (в прикладі обрано x0=b).
Рис. 3
Її рівняння має вигляд:
.
Візьмемо за перше наближення кореня точку перетину дотичної з віссю ОХ (y=0; x=x1 ), одержимо:
(8)
Наступне наближення знаходимо відповідно за формулою
Узагальнена ітераційна формула методу Ньютона має вигляд
(9)
Зазначимо, що початкове наближення доцільно вибирати так, щоб виконувалась умова
(10)
В протилежному випадку збіжність методу Ньютона не гарантується.
Найчастіше або , в залежності від того, для якої із цих точок виконується умова (10).
Метод Ньютона ефективний для розв’язування тих рівнянь, для яких значення модуля похідної біля кореня достатньо велике, тобто графік функції в околі даного кореня має велику крутизну.
Метод Ньютона, як і метод хорд є методом одностороннього наближення. Причому якщо в методі хорд наближення відбувається справа, то в методі Ньютона – зліва, і навпаки.
Алгоритм методу Ньютона
3. Блок-схема алгоритму програми
4. Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
public static double f(double x)
{
return Math.Sin(x)-1/x;
}
public static double fp(double x)
{
double dx = 0.0001;
return (f(x + dx) - f(x)) / dx;
}
public static double f2p(double x)
{
double dx = 0.0001;
return (fp(x + dx) - fp(x)) / dx;
}
static void Main(string[] args)
{
double a, b, Eps, x, dx;
int Kmax;
Console.WriteLine("a=");
a = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("b=");
b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Vvedit tochnist Eps=");
Eps = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Vvedit max kilkist iteratsiy Kmax=");
Kmax = Convert.ToInt32(Console.ReadLine());
x = a;
if (f(x) * f2p(x) < 0)
{
x = b;
}
if (f(x) * f2p(x) < 0)
{
Console.WriteLine("Zbizhnist ne garantuyetsya");
}
for (int i = 1; i <= Kmax; i++)
{
dx = f(x) / fp(x);
if (Math.Abs(dx) < Eps)
{
Console.WriteLine("x={0},\nKmax={1}", x, i);
Console.ReadLine();
return;
}
x = x - dx;
}
Console.WriteLine("Za zadanu kilkist iteratsiy tochnist ne dosyagnuto");
Console.ReadLine();
return;
}
}
}
5. Результати роботи програми