Метод дихотомии: различия между версиями
Содержимое удалено Содержимое добавлено
Karagota (обсуждение | вклад) |
Karagota (обсуждение | вклад) |
||
Строка 239:
необходимо подготовить новый отрезок для поиска, в два раза
короче, чем на данной итерации. Это просто: <math>f(c)</math> имеет разные
знаки либо с <math>f(a)</math>, либо с <math>f(b)</math>. Если <math>f(c)\cdot f(a)
для следующей итерации отрезок <math>[a;\;c]</math>, иначе — отрезок <math>[c;\;b]</math>.
На каждой итерации мы твёрдо знаем, что на отрезке <math>[a;\;b]</math> есть
искомый корень. Следовательно, число<math>
корня с погрешностью, не превосходящей <math>\
образом, если наша цель — найти корень с погрешностью, не
превосходящей <math>\epsilon</math>, условие <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>
Приведённая программа ищет ноль функции
|