Реализация примера решений дифференциальногоуравнения второго порядка методом Рунга-Кутта при использовании компилятора C ВВЕДЕНИЕЧисленное интегрированиеобыкновенных уравнений В данной работе рассматривается уравнениедля задач с частым изменением шага, с учетом, что используемый методРунге-Кутта требует относительно большого количества вычислений производных на каждом шаге и для них весьмасложен эффективный контроль величины шага.
При решении обыкновенных дифференциальных уравнений высших порядков необходимоучитывать, что каждое уравнение равносильно системе уравнений первого порядка.В частности в данном случае при использовании метода Рунге-Куттарассматривается система обыкновенных дифференциальных уравнений первого порядкавида y f x, y, z, с решением y y x z z x C учетом, что любая разностная схемаиз уравнений второго порядка может
быть применена к каждому из уравненийпервого порядка с обозначением y xk yk и тп. f xk, yk, zk, fk и тп.Ввиду практическойважности дифференциальных уравнений второго порядка представляют интерес схемычисленного интегрирования дифференциального уравнениявида y f x, y, y при наличии начальных условий x 0 y 0 y 0 Vy 0 x 0 Vx 0 В работе испльзовался только численный методдля уравнений второго порядка, без применения схем предсказание-коррекция иинтерполяционно-итерационной . yk 1 yk y k 8729 8710 t 1 6 k1 k2 k3 8729 8710
t y k 1 y k 1 6 k1 2k2 2k3 k4 xk 1 xk x k 8729 8710 t 1 6 k1 k2 k3 8729 8710 t x k 1 x k 1 6 k1 2k2 2k3 k4 где k1 f xk,yk k2 f xk Vxk 8729 8710 t 2, yk Vyk 8729 8710 t 2 k3 f xk Vxk 8729 8710 t 2 k1 8729 8710 t 2,yk Vyk 8729 8710 t 2 k1 8729 8710 t 2 k4 f xk Vxk 8729 8710 t k2 8729 8710 t 2,yk Vyk 8729 8710 t k2 8729 8710 t 2 ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ В работеиспользовался gcc,g – GNU project C and C Compiler v2.7 , FreeBSD radius.local.stv.ee3.5-STABLE FreeBSD 3.5-STABLE , radius.local.stv.ee usr src sys compile cmgi386 . В расчетах указывались постоянные Y гравитационнаяпостоянная 6,67 10-11 Нм2 кг2,Dt 100 сек М Земля 5,796 1024кг при формуле YM x2 y2 3 2yYM x2 y2 3 2xТак при вводе всехзначений 0, видим, что координаты не меняются, из чего следует,
что тело призначениях 0 находится в состоянии покоя Enter value for x 0Enter value for y 0Enter value for Vx 0Enter value for Vy 0 N X Y Vx Vy 0 x 0 y 0 Vx 0 Vy 0 1 x 0 y 0 Vx 0 Vy 0 2 x 0 y 0 Vx 0 Vy 0 3 x 0 y 0 Vx 0 Vy 0 4 x 0 y 0 Vx 0 Vy 0 5 x 0 y 0 Vx 0 Vy 0 6 x 0 y 0
Vx 0 Vy 0 7 x 0 y 0 Vx 0 Vy 0 8 x 0 y 0 Vx 0 Vy 0 9 x 0 y 0 Vx 0 Vy 0 Далее приведем изменениезначений при заданных параметрах, отличных от нуля Enter value for x 1Enter value for y 2Enter value for Vx 3Enter value for Vy 4 N X Y Vx Vy 0 x 1 y 2 Vx 3 Vy 4 1 x -2147483648 y 402 Vx -1073741821 Vy 4 2 x -2147483648 y 802
Vx -2147483648 Vy 4 3 x -2147483648 y -2147483648 Vx -2147483648 Vy 177585892 4 x -2147483648 y -1568763632 Vx -2147483648 Vy 177585892 5 x -2147483648 y -2147483648 Vx -2147483648 Vy -811648420 6 x -2147483648 y -1707947024 Vx -2147483648 Vy -811648420 7 x -2147483648 y -2147483648 Vx -2147483648
Vy -1287506838 8 x -2147483648 y -2049148568 Vx -2147483648 Vy -1287506838 9 x -2147483648 y -2147483648 Vx -2147483648 Vy 255514688 10 x -2147483648 y 1929148672 Vx -2147483648 Vy 255514688 ISTING Koduto o u lesanne author- Marina Mitrofanova kood- 951464 include lt stdio.h gt include lt math.h gt include lt stdlib.h gt include
lt sys types.h gt define STEPS 20 define M M 5.97e24 6.67e-11 define dt 100 define STEPS 20long calc f long c p,long v c p,doublek1 p,double k2 p,double k3 p return c p v c p dt k1 p k2 p k3 p dt 6 long prefix long y p,long x p if x p 0 y p 0 return 0 else returnM M pow x p x p y p y p ,3 2 int main long x,y,vx,vy double yk1 0,yk2 0,yk3 0,yk4 0 double yk1 r 0,yk2 r 0,yk3 r 0,yk4 r 0 double xk1 0,xk2 0,xk3 0,xk4 0 double xk1 r 0,xk2 r 0,xk3 r 0,xk4 r 0 int i printf Enter value for x scanf d , amp x printf Enter value for y scanf d , amp y printf Enter value for Vx scanf d , amp vx printf Enter value for Vy scanf d , amp vy printf N X Y Vx Vy for i 0 i lt STEPS i printf 2i x 12d y 12d Vx 12d Vy 12d n ,i, yk1 r prefix x,y y yk2 r prefix x,y calc f y vy dt 2 ,vy,yk1,yk2,yk3 yk3 r prefix x,y calc f y vy dt 2 yk1 r dt 4 ,vy,yk1,yk2,y yk4 r prefix x,y calc f y
vy dt yk2 r dt 2 ,vy,yk1,yk2,yk3 yk1 yk1 r yk2 yk2 r yk3 yk3 r yk4 yk4 r y calc f y,vy,yk1,yk2,yk3 vy vy yk1 2 yk2 2 yk3 yk4 6 xk1 r prefix x,y x xk2 r prefix x,y calc f x vx dt 2 ,vx,xk1,xk2,xk3 xk3 r prefix x,y calc f x vx dt 2 xk1 r dt 4 ,vx,xk1,xk2,x xk4 r prefix x,y calc f x vx dt xk2 r dt 2 ,vx,xk1,xk2,xk3 xk1 xk1 r xk2 xk2 r xk3 xk3 r xk4 xk4 r x calc f x,vx,xk1,xk2,xk3 vx vx xk1 2 xk2 2 xk3 xk4 6