МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 2
Варіант 8
Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
Короткі теоретичні відомості:
Метод поділу проміжку навпіл
Цей метод є простим і надійним алгоритмом знаходження коренів рівняння (1).
Суть методу полягає в тому, що відрізок ділиться навпіл, тобто вибирається перше наближення кореня /рис.1/.
(3)
Якщо , тоді є коренем рівняння (1).
Рис.1.
Якщо , то вибирають той з відрізків чи , на кінцях якого функція має різні знаки. Одержаний відрізок знову ділять навпіл і т.д. Процес обчислень проводиться доти, доки величина відрізку не стане меншою від заданої похибки Е.
Метод досить стійкий до похибок заокруглень. Але й збігається теж повільно. При збільшенні точності значно зростає об’єм обчислень. Тому на практиці метод часто використовують для грубого визначення початкового наближення до кореня, а пізніше застосовують швидко збіжний ітераційний метод.
Алгоритм методу половинного ділення.
Задати значення параметрів а, b та граничної абсолютної похибки Е .
Обчислити значення функцій в точці а, тобто обчислити .
Поділити проміжок навпіл, тобто знайти точку
.
Перевірити умову ? Якщо так, то перейти до п.7.
Якщо добуток , то , в протилежному випадку .
Якщо , то перейти до п.3.
Надрукувати (вивести) значення .
Закінчити виконання програми.
Значення Е задається в межах 10 –4(10 –6.
Завдання:
Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b].
Рівняння
Відрізок
2x3 + 2x – 1 = 0
[0;1]
Таблиця ідентифікаторів констант, змінних, функцій, використаних у програмі, та їх пояснення:
main()
Головна функція
f()
Функція, що передає задане рівняння
clrscr()
Функція очищення екрану
printf()
Функція виведення даних
scanf()
Функція введення даних
fabs()
Функція для знаходження абсолютного значення типу double
cos()
Функція обчислення косинуса
a
Змінна, початкове значення відрізку
b
Змінна, кінцеве значення відрізку
E
Змінна, гранична абсолютна похибка
x
Змінна, розв’язок рівняння
Блок-схема програми:
Текст програми мовою C:
#include<stdio.h>
#include<math.h>
#include<conio.h>
double f(double x);
double a,b,E,x;
void main(void)
{
clrscr();
printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("E=");
scanf("%lf",&E);
x=(a+b)/2;
while (f(x)!=0)
{
if (f(a)*f(x)>0) a=x;
else b=x;
x=(a+b)/2;
if(fabs(b-a)<=E) break;
}
printf("x=%lf\n",x);
}
double f(double x)
{
return 2*x*x*x+2*x-1;
}
Результат роботи програми:
a=0
b=1
E=0.0001
x=0.423859
Висновок: На цій лабораторній роботі я ознайомився з методами уточнення коренів нелінійних рівнянь з одним невідомим.