< -->

{==================}Program Runge_Kutt_Diff_Ur_Plus2;{======================}
     {Ðåøåíèå äèôôåðåíöèàëüíûõ óðàâíåíèé ìåòîäàìè Ðóíãå-Êóòòà}
     {Ëàáîðàòîðíàÿ ðàáîòà ïî âû÷èñëèòåëüíîé ôèçèêå (×ÌèÌÌ) ¹2}

     {Äîïîëíåíèå ê ïðîãðàììå. Ðèñóåò ãðàôèêè ôóíêöèè f(t, x) = z, }
     {        ______ }
     { ãäå z= z1, z2 }

(*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*)
 {[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]}
(*<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>*)
{
   Îêðóãèí      Û²°   Àëåêñàíäð. Copiright 2002ã.(C) v1.1(October, 25)
                 =
   ~~~~~~~      +++    ~~~~~~~       /-_-_-_-_-^^^-_-_!_-_-^^^-_-_-_-_-\
    ~~~~~      !!!!!    ~~~~~        |ÛÛÛÛÛÛÛÛÛÛÛ\ÛÛÛÛÛÛÛÛÛ/ÛÛÛÛÛÛÛÛÛÛÛ|
     ~~~      _______    ~~~         |Û/\²²²²²²²²²²\²²^²²/²²²²²²²²²²/\Û|
      ~      ---------    ~          |ÛÛ\\²²°°°°°°°°°\°/°°°°°°°°°²²//ÛÛ|
            ###########              |ÛÛÛ²\²°°°ÚÄÄÄÄÄÄ|ÄÄÄÄÄÄ¿°°°²/²ÛÛÛ|
    |||    ^^^^^^^^^^^^^    |||      |ÛÛÛ²²\°°°³ÉÍÍÍÍÍþÍÍÍÍÍ»³°°°/²²ÛÛÛ|
    |||   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ»   |||      |Û*Û²²²\°°³ºßß!ßßßßß!ßߺ³°°/²²²Û*Û|
    |||  |ºÚÄÄÄÄÄÄÄÄÄÄÄ¿º|  |||      |ÛÛÛ²²²°\°³ºÝÞÝÞÝÜÝÞÝÞݺ³°/°²²²ÛÛÛ|
        Þ|º³ÛÛÛÛÛÛÛÛÛÛÛ³º|Ý          |ÛÛÛ²²²°°\³ºÞÝÞÝÞßÞÝÞÝÞº³/°°²²²ÛÛÛ|
  ßßßß þÞ|º³Û²²²²²²²²²Û³º|Ýþ ÜÜÜÜ    |ÛÛ<>²<>°#-þßÜßÜßXßÜßÜßþ-#°<>²<>ÛÛ|
   <<< þÞ|º³Û²²°°°°°²²Û³º|Ýþ >>>     |ÛÛÛ²²²°°/³ºÞÝÞÝÞßÞÝÞÝÞº³\°°²²²ÛÛÛ|
  ßßßß þÞ|º³Û²²°°*°°²²Û³º|Ýþ ÜÜÜÜ    |ÛÛÛ²²²°/°³ºÝÞÝÞÝÜÝÞÝÞݺ³°\°²²²ÛÛÛ|
   >>> þÞ|º³Û²²°°°°°²²Û³º|Ýþ <<<     |Û*Û²²²/°°³ºÜ!ÜÜÜÜÜÜÜ!ܺ³°°\²²²Û*Û|
  ßßßß þÞ|º³Û²²²²²²²²²Û³º|Ýþ ÜÜÜÜ    |ÛÛÛ²²/°°°³ÈÍÍÍÍÍþÍÍÍÍͼ³°°°\²²ÛÛÛ|
        Þ|º³ÛÛÛÛÛÛÛÛÛÛÛ³º|Ý          |ÛÛÛ²/²°°°ÀÄÄÄÄÄÄ|ÄÄÄÄÄÄÙ°°°²\²ÛÛÛ|
   ///   |ºÀÄÄÄÄÄÄÄÄÄÄÄÙº|  \\\      |ÛÛ//²²°°°°°°°°°/°\°°°°°°°°°²²\\ÛÛ|
          ÈÍÍÍÍÍÍÍÍÍÍÍÍͼ            |Û\/²²²²²²²²²²/²²#²²\²²²²²²²²²²\/Û|
  /ÛÛÛÛÛÛÛÛÛßßßßßßßßßßßÛÛÛÛÛÛÛÛÛ\    |ÛÛÛÛÛÛÛÛÛÛÛ/ÛÛÛÛÛÛÛÛÛ\ÛÛÛÛÛÛÛÛÛÛÛ|
  \ÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÛÛÛÛÛÛÛÛÛ/    \-+-+-+-+-<<<-+-+=+-+->>>-+-+-+-+-/
}
{$E-}
{$N+}
{$D-}
Uses Graph, CRT;
type Float = Extended;
const
  t0  :  Float = 0.0  ;
  x0  :  Float = 10.0 ;
  b   :  Float = 6.0  ;
  h0  :  Float = 0.5  ;
var
  D, R, e : Integer;
  i : Integer;
  zf, x, t, z : Float;
  S : String;
  St  :  Float;
  Sx  :  Float;
Function f(t, x : Float) : Float;
begin
 f:= -2*(t-2.0)*x + sin(t)*exp(-t*t)*(t-2.0)*(t-2.0);
end;
Procedure DoScreen;
begin
  ClearViewPort;
  SetColor(DarkGray);
  MoveTo(0, 240);
  LineTo(640, 240);
  LineTo(630, 238);
  LineTo(630, 242);
  LineTo(640, 240);
  MoveTo(320, 480);
  LineTo(320, 0);
  LineTo(318, 10);
  LineTo(322, 10);
  LineTo(320,0);
  SetColor(LightGray);
  for i := 1 to 32 do Line(i*20, 239, i*20, 241);
  for i := 1 to 24 do Line(319, i*20, 321, i*20);
  SetColor(Brown);
  OutTextXY(324, 230, '0');
  OutTextXY(632, 230, 't');
  OutTextXY(324, 3, 'x');
end;
begin
  D:=Detect;
  InitGraph(D,R,'');
  e:=GraphResult;
  if e <> 0 then
    begin
      WriteLn('Îøèáêà ãðàôèêè(', e, '):');
      WriteLn(GraphErrorMsg(e));
      Halt;
    end;
St := 6.0;
Sx := 15.0;
  x := -12.0/Sx;
  t := -16.0/St;
  z := -1.5;
  DoScreen;
  While (z<=1.0) and (not Keypressed) do
    begin
      zf:=f(t,x);
      if ( zfz-0.05) then
        PutPixel(320+Round(20.0*St*t),240-Round(20.0*Sx*x),15);
      t := t+0.01;
      if t*St>=16.0 then
        begin
          t:=-16.0/St;
          x:= x+0.01;
          if Sx*x>12.0 then
            begin
              DoScreen;
              t:=-16.0/St;
              x:=-12.0/Sx;
              z:=z+0.02;
               Str(z:1:1,S);
               SetColor(Black);
               OutTextXY(10,10,'ÛÛÛÛÛÛÛÛÛÛ');
               SetColor(White);
               OutTextXY(10,10,S);
            end;
        end;
    end;
  ReadKey;
  CloseGraph;
end.

Íàçàä