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