Методом деления отрезка пополам

Метод деления отрезка пополам заключается в следующем. Проверяется наличие корня на отрезке [a, b] (рис.4.4).

методом деления отрезка пополам - student2.ru

Рис.4.4. Метод деления отрезка пополам.

Для этого вычисляются значения функций f(a) и f(b). Если f(a)*f(b)>0, то уравнение не имеет корней на заданном отрезке. Если f(a)*f(b)<0, т.е. на концах отрезка [a, b] функция f(x) имеет противоположные знаки, то искомый корень лежит на этом отрезке. Поиск корня происходит следующим образом. Находим в точке a значение функции y1 = f(a). Затем определяем значение x как среднюю точку между а и b, вычисляем значения y2 = f(x). Теперь, если f(a)*f(x)>0, то корень находится на отрезке [x, b], иначе – на отрезке [a, x]. В соответствии с этим, перемещаем точку а вправо или точку в влево, выполняя, соответственно присваивание а = х или b = x. Таким образом, получаем второй отрезок [a, b], но вдвое меньший предыдущего. Процесс деления отрезка пополам продолжаем до тех пор, пока отрезок [a, b] не станет меньше заданной точности. После этого вычисляем значение x = (a+b)/2.

Пример 4.4.Решение уравнения методом деления отрезка пополам - student2.ru с заданной точностью e = 0.01 методом деления отрезка пополам, если корень находится на отрезке [1,3].

#include <iostream>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

using namespace std;

int main()

{ int n = 0;

float x, a = 1, b = 3, y1, y2, eps = 0.001, e, r, l;

l = a; r = b;

y1 = a*a*a – 2*a*a – 3;

y2 = b*b*b – 2*b*b – 3;

if (y1*y2>0) { cout << "Корней нет" <<endl;

getch();

exit(1) ;

}

do { ++n;

x = (a+b)/2;

y1 = a*a*a – 2*a*a – 3;

y2 = x*x*x – 2*x*x – 3;

if (y1*y2>0) a = x;

else b = x;

} while ((b – a)>eps);

x = (a + b)/2;

cout << "Корень уравнения на отрезке "<< l << ", " << r << "равен " << x << " и получен за " << n <<"шагов";

cout << endl;

return 0; }

Контрольные вопросы

Варианты заданий

Задание 1

Ввести с клавиатуры х и точность вычисления Eps. Вычислить с заданной точностью сумму

Номер варианта Задание
1, 16 методом деления отрезка пополам - student2.ru
2, 17 методом деления отрезка пополам - student2.ru
3, 18 методом деления отрезка пополам - student2.ru
4, 19 методом деления отрезка пополам - student2.ru
5, 20 методом деления отрезка пополам - student2.ru
6, 21 методом деления отрезка пополам - student2.ru
7, 22 методом деления отрезка пополам - student2.ru
8, 23 методом деления отрезка пополам - student2.ru
9, 24 методом деления отрезка пополам - student2.ru
10, 25 методом деления отрезка пополам - student2.ru
11, 26 методом деления отрезка пополам - student2.ru
12, 27 методом деления отрезка пополам - student2.ru
13, 28 методом деления отрезка пополам - student2.ru
14, 29 методом деления отрезка пополам - student2.ru
15, 30 методом деления отрезка пополам - student2.ru

Задание 2

Наши рекомендации