//Fuction returns b+1 if solution does not exist.
double solve(double a, double b, double (*f)(double)) {
if (a > b) {
return b+1;
}
if (f(a) * f(b) >= 0) {
if (f(a) == 0) {
return a;
}
if (f(b) == 0) {
return b;
}
return b+1;
}
double x = (a + b) / 2;
if (f(a) * f(x) <= 0) {
return solve(a, x, f);
}
if (f(x) * f(b) <= 0) {
return solve(x, b, f);
}
return b+1;
}
четверг, 7 октября 2010 г.
Метод деления пополам
Нахождение корня передаваемой в качестве параметра монотонной функции f на отрезке [a, b] методом деления пополам.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий