Нахождение корня функции методом последовательных приближений
Итерационный характер процесса нахождения корня функции явно присутствует в методе последовательных приближений. Для того, чтобы найти корень функции f(x)=0, решается эквивалентное уравнение x = f(x) + x. Если для него значение x в правой части считать результатом итерационного цикла на предыдущем шаге (x1), а значение x в левой части - результатом текущего шага цикла, то такой цикл можно представить следующей схемой, а реализацию ее -программой:
.
x1 = x
________________
| | |
x = f( x1 ) + x1 ------- x1 = x0
// Программа:
x = x0;
do {
x1 = x;
x = f(x1) + x1;
} while( l(x,x1) );
Окончательный вид программы включает еще и проверку качественного характера (сходимости) процесса. Дело в том, что данный метод успешно работает не для всех видов функций f() и начальных значений x0. В принципе итерационный процесс может приводить, наоборот, к бесконечному удалению от значения корня. Тогда говорят, что процесс расходится. Для проверки сходимости приходится запоминать разность значений x и x1 предыдущего шага:
//------------------------------------------------------bk33-02.cpp
// Корень функции по методу последовательных
// приближений
double f(double); // Объявление функции f()
double process(double x, double eps)
{ // начальное значение и точность
double x1,dd;
dd = 100.;
do {
x1 = x;
x = f(x1) + x1;
if (fabs(x1-x) > dd )
return(0.); // Процесс расходится
dd = fabs(x1-x);
}
while (dd > eps);
return(x); // Выход - значение корня
}