МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА кафедра «Захист інформації»
Звіт
про виконання лабораторної роботи №1
з курсу: "Комп’ютерні методи дослідження інформаційних процесів та систем"
МЕТОДИ УТОЧНЕННЯ КОРЕНІВ
НЕЛІНІЙНИХ РІВНЯНЬ
Львів – 2007
Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
Метод Ньютона
Метод послідовних наближень, розроблений Ньютоном, широко використовується при побудові ітераційних алгоритмів. Цей метод відомий своєю швидкою збіжністю (квадратичною збіжністю).
Нехай корінь рівняння відокремлений на відрізку , причому і неперервні і зберігають сталі знаки на всьому відрізку . Геометричний зміст методу Ньютона полягає в тому, що дуга кривої замінюється дотичною до цієї кривої.
Візьмемо деяку точку x0 відрізка [а, b] і проведемо в точці [x0, f(x0)] дотичну до цього графіку.
Рис. 3
Її рівняння має вигляд:
.
Візьмемо за перше наближення кореня точку перетину дотичної з віссю ОХ, одержимо, що
(8)
Наступне наближення знаходимо відповідно за формулою
Ітераційна формула методу Ньютона має вигляд
(9)
Зазначимо, що початкове наближення доцільно вибирати так, щоб виконувалась умова
(10)
В протилежному випадку збіжність методу Ньютона не гарантується.
Найчастіше або , в залежності від того, для якої із цих точок виконується умова (10).
Метод Ньютона ефективний для розв’язування тих рівнянь, для яких значення модуля і похідної біля кореня достатньо велике, тобто графік функції в околі даного кореня має велику крутизну.
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b].
Варіант
Рівняння
Відрізок
18
x3 – 3x – 1 = 0
[–2;–1]
Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення.
а – початок відрізка;
b – кінець відрізка;
Е – похибка;
х – корінь рівняння;
х0 – початкове значення х;
main() – головна функція;
f() – функція, що обчислює значення заданого рівняння;
fpoh1() – функція, яка обчислює значення першої похідної заданого рівняння;
fpoh2() – функція, яка обчислює значення другої похідної заданого рівняння;
Остаточно відлагоджений текст програми згідно з отриманим завданням мовою С
#include <stdio.h>
#include <math.h>
double f(double x)
{
return (x*x*x-3*x-1);
}
double fpoh1(double x)
{
return (3*x*x-3);
}
double fpoh2(double x)
{
return (6*x);
}
void main(void)
{
double E,a,b,x,x0;
printf("Vvedit pochatok, kinets promizhku i pohybku\n");
scanf("%lf%lf%lf",&a,&b,&E);
x0=a;
if (f(x0)*fpoh2(x0)<=0)
x0=b;
zzz: x=x0-f(x0)/fpoh1(x0);
if (fabs(x-x0)>E)
{
x0=x;
goto zzz;
}
printf("x=%4.4lf",x);
}
Результати виконання програми
Vvedit pochatok, kinets promizhku i pohybku
-2
-1
0.0001
х=-1,5321
Висновок: на цій лабораторній роботі я ознайомився з методами уточнення коренів нелінійних рівнянь з одним невідомим.