Пример (лабораторная робота №3)
Завдання 1.
Обчисліть методом дихотомії корені рівнянь із точністю 0.01:
Початковий інтервал ізоляції першого кореня: [1;2]
Виконання.
Спочатку знаходимо половину заданого відрізку:
.
Знаходимо значення функції в точці a (початок заданого інтервалу) і в тільки-но отриманій точці с.
Оскільки, результат множення двох даних значень функції є від’ємне число, то інтервал перетворюється на такий [1; 1,5].
Тепер перевіримо, чи досягли ми нашої точності.
Отримане значення є набагато більшим, чим задана точність. Тому продовжуємо ділити інтервал.
В кінцевому рахунку отримаємо наближене значення, яке задовольняє нашій заданій точності:
Завдання 2. Побудуємо блок-схему програми для розв’язку заданого рівняння.
Виконання.
Завдання 3. Написати програму для розв’язку заданого рівняння методом дихотомії.
Виконання.
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
float a = 1.0;
float b = 2.0;
float eps = 0.01;
float c;
float beg_value, end_value;
int n = 0;
do {
c = (a + b) / 2;
beg_value = sin(a + M_PI / 3.0) * sin(a + M_PI / 3.0) - a*a / 4.0;
end_value = sin(c + M_PI / 3.0) * sin(c + M_PI / 3.0) - c*c / 4.0;
if (beg_value * end_value <= 0)
b = c;
else
a = c;
cout << n << ": a = " << a << "; b = " << b << "; c = " << c << endl;
cout << "beg: " << beg_value << " end: " << end_value << endl << endl;
n++;
} while (abs(a - b) > eps);
cout << endl << "Result: " << end_value << "; c = " << c << endl;
cin.get();
return 0;
}
Малюнок вікна програми, на якому відображений результат роботи програми.