Метод половинного деления в С++

Методом половинного деления можно находить корни уравнений вида: \(f\left(x \right)=0\). Корень должен располагаться в некотором интервале \(\left[a,b \right]\). Идея метода в следующем - интервал делят пополам, вычисляют значения функции в средней точке и на концах и для дальнейшего поиска корня (уточнения) оставляют тот интервал на границах которого функция меняет знак. Понятно, что корень на этом интервале должен быть один иначе будет найдет только дин из корней. Процесс продолжается до тех пор, пока длина интервал не станет меньше заданной точности. Корень принадлежит этому интервалу, а поэтому может считаться найденным с заданной точностью. Ниже приведен пример для решения уравнения: \(x^{2}-9x+14=0\). Поменяйте в коде соответствующую строчку (строка 9), если у вас другое уравнение.
#include 
using namespace std;
//Функция для полинома:
double F(double x){
return x*x-9*x+14;}
//Функция поиска корня:
double FindRoot(double (*f)(double),double a,double b,double eps){
double c;
while((b-a)/2>eps){
 c=(a+b)/2;
 if((f(a)*f(c))>0) a=c;
 else b=c;
}
return c;}
int main(){
//Интервал, погрешность и корень:
double a,b,eps,x;
cout << "interval: ";
cin >> a;
cin >> b;
//Проверка корректности интервала:
if(F(a)*F(b)>0){
 cout << "Wrong interval!\n";
 return 0;}
cout << "error: ";
cin >> eps;
//Поиск решения:
x=FindRoot(F,a,b,eps);
cout << "x = " << x << endl;
return 0;}
Онлайн всего: 26
Гостей: 26
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте