Метод дихотомии: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 239:
необходимо подготовить новый отрезок для поиска, в два раза
короче, чем на данной итерации. Это просто: <math>f(c)</math> имеет разные
знаки либо с <math>f(a)</math>, либо с <math>f(b)</math>. Если <math>f(c)\cdot f(a) =<0</math>, то возьмём
для следующей итерации отрезок <math>[a;\;c]</math>, иначе &mdash; отрезок <math>[c;\;b]</math>.
 
На каждой итерации мы твёрдо знаем, что на отрезке <math>[a;\;b]</math> есть
искомый корень. Следовательно, число<math>fraa\frac{a+b}{2}</math> даёт значение
корня с погрешностью, не превосходящей <math>\fra frac{b-a}{2}</math>. Таким
образом, если наша цель &mdash; найти корень с погрешностью, не
превосходящей <math>\epsilon</math>, условие <math>\frabfrac{b-a &lt;}{2}< \epsilon</math>
является условием завершения итерационного процесса. Приведём
пример программы на C++, которая находит корень уравнения
на отрезке <math>[0;\;2]</math>.
 
===Программа 1. «Корень уравнения».
<code>
#include <iostream>
#include <math.h>
using namespace std;
cons double epsilon =1e-10;
double f(double x)
{
return exp(x)-(x+2);
}
int main()
{
double a, b, c;
a = 0;
b = 2;
while (b - a > epsilon)
{
c = (a + b)/2;
if(f(b) * f(c) < 0)
a = c;
else
b = c;
}
cout << (a+b)/2 << endl;
return 0;
}
</code>
 
Приведённая программа ищет ноль функции