![]() |
![]() |
||||
![]() | |||||
![]() |
![]() АЛГОРИТМЫ Новости Рассылка новостей Форум AlgoPascal Редактор блок-схем Статьи О сайте Контакты |
![]() |
![]() Корень уравнения x = F(x) методом итерацийФункция находит корень уравнения x = F(x) методом простой итерации с относительной погрешностью e. По i-му приближению корня xi находится следующие приближение по формуле xi+1 = F(xi ), i = 0, 1, 2, ... . Процесс продолжается до тех пор, пока относительная точность для двух последовательных приближений не станет меньше e: |(xi+1 -xi )/xi | < e. Процесс итерации сходится на [a, b], если |F'(x)| < 1 при всех x на (a,b). Чтобы избежать зацикливания, функция прекращает работу после n итераций. Переменная HasRoot = True если необходимая точность e достигнута менее чем за n итераций, и HasRoot = False, если необходимая точность за n итераций недостигнута. Если нашли ошибку в алгоритме - сообщите! Реализации алгоритма на различных языках:![]() ![]() ![]() Блоксхемы:![]() ![]() Реализация алгоритма на AlgoPascal:unit FEqXSimpleIterationUnit; declaration function F(X:Real):Real; interface FEqXSimpleIteration; implementation (* Корень уравнения x=F(x). procedure FEqXSimpleIteration( n:integer; e:real; xn:real; var HasRoot:boolean, x:real) Функция находит корень уравнения x=F(x) методом простой итерации с относительной погрешностью e. В качестве начального приближения берется x0. функция прекращает работу после n итераций. ременная HasRoot=True если необходимая точность e достигнута менее чем за n итераций, и HasRoot=False, если необходимая точность за n итераций недостигнута. *) procedure FEqXSimpleIteration( const n : Integer; const e : Real; const x0 : real; out HasRoot:Boolean; out x : Real); var I : Integer; begin i:=1; x:=x0; repeat x:=F(x); i:=i+1; until not((i<=n)and(AbsReal(F(x)-x)>e*AbsReal(x))); HasRoot:=(i<=n) end; end. |
![]() |
|
|
![]() |