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