unit Uprava;

interface
 const
      q0      = 0.1;
      omega_q = 20;
 function q(t:Extended)  : Extended;
 function dq(t:Extended) : Extended;
 procedure Rung(m1,m2,c1,c2,k_1,k_2,h,t,u,b,x,dx,y,dy: Extended;
                 var new_x,new_dx,new_y,new_dy : Extended);
implementation

 function q(t:Extended) : Extended;
  begin
//   q := q0 * sin(omega_q * t);
   q:=0;
  end;

 function Dq(t:Extended) : Extended;
  begin
//   Dq := q0 * omega_q * cos(omega_q * t);
   dq:=0;
  end;

 procedure Rung;
  var
  k1, k2, k3, k4 : array [1..4] of Extended;
  begin
   k1[1]:=h*dx;
   k1[2]:=h*(-c1/m1*(x-y)-k_1/m1*(dx-dy)+u*b/m1);
   k1[3]:=h*dy;
   k1[4]:=h*(1/m2*(c1*(x-y)+k_1*(dx-dy))-c2/m2*(y-q(t))-k_2/m2*(dy-dq(t)));

   k2[1]:=h*(dx+0.5*k1[1]);
   k2[2]:=h*(-c1/m1*((x+0.5*k1[1])-(y+0.5*k1[3]))-k_1/m1*((dx+0.5*k1[2])-(dy+0.5*k1[4]))+u*b/m1);
   k2[3]:=h*(dy+0.5*k1[1]);
   k2[4]:=h*(1/m2*(c1*((x+0.5*k1[1])-(y+0.5*k1[3]))+k_1*((dx+0.5*k1[2])-(dy+0.5*k1[4])))-c2/m2*((y+0.5*k1[3])-q(t))-k_2/m2*((dy+0.5*k1[4])-dq(t)));

   k3[1]:=h*(dx+0.5*k2[1]);
   k3[2]:=h*(-c1/m1*((x+0.5*k2[1])-(y+0.5*k2[3]))-k_1/m1*((dx+0.5*k2[2])-(dy+0.5*k2[4]))+u*b/m1);
   k3[3]:=h*(dy+0.5*k2[1]);
   k3[4]:=h*(1/m2*(c1*((x+0.5*k2[1])-(y+0.5*k2[3]))+k_1*((dx+0.5*k2[2])-(dy+0.5*k2[4])))-c2/m2*((y+0.5*k2[3])-q(t))-k_2/m2*((dy+0.5*k2[4])-dq(t)));

   k4[1]:=h*(dx+k3[1]);
   k4[2]:=h*(-c1/m1*((x+k3[1])-(y+k3[3]))-k_1/m1*((dx+k3[2])-(dy+k3[4]))+u*b/m1);
   k4[3]:=h*(dy+k3[1]);
   k4[4]:=h*(1/m2*(c1*((x+k3[1])-(y+k3[3]))+k_1*((dx+k3[2])-(dy+k3[4])))-c2/m2*((y+k3[3])-q(t))-k_2/m2*((dy+k3[4])-dq(t)));

   new_x:=x+(1/6)*(k1[1]+2*k2[1]+2*k3[1]+k4[1]);
   new_dx:=dx+(1/6)*(k1[2]+2*k2[2]+2*k3[2]+k4[2]);
   new_y:=y+(1/6)*(k1[3]+2*k2[3]+2*k3[3]+k4[3]);
   new_dy:=dy+(1/6)*(k3[4]+2*k2[4]+2*k3[4]+k4[4]);

  end;

end.

Соседние файлы в папке Конечные_Системы(4,5)