![]() |
![]() |
||||
![]() | |||||
![]() |
![]() АЛГОРИТМЫ Новости Рассылка новостей Форум AlgoPascal Редактор блок-схем Статьи О сайте Контакты |
![]() |
![]() Модифицированные методы Эйлера решения уравнения первого порядкаПри численном интегрировании дифференциального уравнения первого порядка y' = F(x,y)с начальным условием y(x0 ) = y0 (задача Коши) сначала выбираем фиксированное приращение аргумента h = (xf -x0 )/n, где xf - конечная точка интервала интегрирования, n - число шагов. Затем, применяя процедуру модифицированного метода Эйлера, вычисляем yk по рекурентной формуле: yk = yk-1 +h[Fk-1 +F(xk , yk-1 +hFk-1 )]/2где Fk = F(xk , yk ). Можно воспользоваться другой рекурентной формулой: yk = yk-1 +F(xk-1 +h/2, yk-1 +Fk-1 h/2)Если нашли ошибку в алгоритме - сообщите! Реализации алгоритма на различных языках:![]() ![]() ![]() Блоксхемы:![]() ![]() Реализация алгоритма на AlgoPascal:unit EulerMUnit; declaration function F(X:Real; Y:Real):Real; interface EulerM; implementation (* Модифицированный метод Эйлера решения уравнения первого порядка. function EulerM(x,x1,y:real;n:integer):real; integrate differential equation y'=F(x,y) by Eiler's method. (x,y) - first point, x1 - end point, result - value function y(x) in x1 *) function EulerM( x : Real; const x1 : Real; y : Real; const n : Integer):Real; var i : Integer; f1 : Real; h : Real; y1 : Real; begin h:=(x1-x)/n; y1:=y; i:=1; repeat F1:=F(x,y); x:=x+h; y:=y+F1*h; y:=y1+h*(F1+F(x,y))/2; y1:=y; i:=i+1; until not(i<=n); Result:=y; end; end. |
![]() |
|
|
![]() |