Информатика и технология программирования


Нахождение корня функции методом последовательных приближений


Итерационный характер процесса нахождения корня функции явно присутствует в методе последовательных приближений. Для того, чтобы найти корень функции 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) &#62 dd )
return(0.); // Процесс расходится


dd = fabs(x1-x);
}
while (dd &#62 eps);
return(x); // Выход - значение корня


}




Начало  Назад  Вперед