МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
/
Звіт
до лабораторної роботи №1
з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «Методи уточнення коренів нелінійних рівнянь»
Метод половинного ділення
ЛЬВІВ 2016
Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
Теоретичні відомості
Цей метод відомий також за назвами методу бісекцій або методу дихотомії. Це простий і надійний алгоритм уточнення коренів рівняння (1).
Суть методу полягає в тому, що відрізок ділиться навпіл, тобто вибирається перше наближення кореня (Рис.1):
(3)
Якщо , тоді є коренем рівняння (1).
Рис.1.
Якщо , то вибирають той з відрізків чи , на кінцях якого функція має різні знаки. Обраний відрізок знову ділять навпіл і т.д. Процес обчислень проводиться доти, доки величина відрізку не стане меншою від заданої похибки Е.
Метод досить стійкий до похибок заокруглень. Але й збігається теж повільно. При збільшенні точності значно зростає об’єм обчислень. Тому на практиці метод часто використовують для грубого визначення початкового наближення кореня, а далі застосовують швидко збіжний ітераційний метод.
Метод бісекцій збігається для будь-яких неперервних функцій. Кількість ітерацій, необхідних для досягнення точності E, оцінюють співвідношенням:
Алгоритм методу половинного ділення.
Задати значення параметрів а, b та граничної абсолютної похибки Е .
Обчислити значення функцій в точці а, тобто обчислити .
Поділити проміжок навпіл, тобто знайти точку : .
Перевірити умову ? Якщо так, то перейти до п.7.
Якщо добуток , то , в протилежному випадку .
Якщо , то перейти до п.3.
Надрукувати (вивести) значення .
Закінчити виконання програми.
Значення Е задається в межах 10 –4(10 –6.
Завдання
Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b]. Методи чисельного розв’язування задаються викладачем.
Варіант
Рівняння
Відрізок
4
exp(x) + x = 0
[-1;0]
Блок-схема алгоритму програми
Список індефікаторів, констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення
а – змінна дійсного типу, яка є початком проміжку;
b – змінна дійсного типу, яка є кінцем проміжку;
Е – змінна дійсного типу, яка є граничною абсолютною похибкою;
Cout – метод виводу даних;
Cin – метод вводу даних дійсного типу;
Текст програми
#include <iostream>
#include <cmath>
using namespace std;
double fun(double x)
{
return exp(x) + x;
}
double halfDivision(double a, double b, double e)
{
double x = 0;
do {
x = (a + b) / 2;
if (fun(x) == 0)
{
break;
}
if (fun(a)*fun(x) > 0)
{
a = x;
}
else
{
b = x;
}
} while (abs(b - a) > e);
return x;
}
int main()
{
double x, a, b, eps;
cout << "Enter begin of the segment : ";
cin >> a;
cout << "Enter end of the segment : ";
cin >> b;
cout << "Enter abolute error : ";
cin >> eps;
cout << "X = " << halfDivision(a, b, eps) << "\n";
}
Розв’язування нелінійного рівняння в системі MatLab
/
Результат роботи програми
/
Висновок:
В даній лабораторній роботі я ознайомився з методами уточнення коренів нелінійних рівнянь з одним невідомим. Також навчився писати та підлагоджувати програми за алгоритмом методу Ньютона для уточнення коренів нелінійних рівнянь