Пример (лабораторная робота №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;

}

Малюнок вікна програми, на якому відображений результат роботи програми.