Построение графика функции — Pascal(Паскаль)

program groffunc;
uses Graph;

var
 x1,x2:real;    { границы изменения аргумента функции }
 y1,y2:real;    { границы изменения значения функции }
 x:real;        { аргумент функции }
 y:real;        { значение функции в точке x}
 dx:real;       { приращение аргумента }
 l,b:integer;   { левый нижний угол области вывода графика }
 w,h:integer;   { ширина и высота области вывода графика }
 mx,my:real;    { масштаб по осям X и Y }
 x0,y0:integer; { точка - начало координат }
 st:string;     { изображение числа }

 grDriver: Integer;
 grMode: Integer;
 ErrCode: Integer;

{ Функция, график которой надо построить }
 Function f(x:real):real;
 begin
    f:=2*Sin(x)*exp(x/5);
 end;

 Function f2(x:real):real;
 begin
    f2:=Ln(x);
 end;

begin
 grDriver := VGA;
 grMode:=VGAHi;
 InitGraph(grDriver, grMode,'d:\tp\bgi');
 ErrCode := GraphResult;
 if ErrCode <> grOk then Halt(1);

 l:=40;
 b:=400;
 h:=200;
 w:=200;

 x1:=0;
 x2:=25;
 dx:=0.01;
 { найдем максимальное и минимальое значения
   функции на отрезке [x1,x2] }
 y1:=f(x1); { минимум }
 y2:=f(x1); { максимум }
 x:=x1;
 repeat
   y:=f(x);
   if y<y1 then y1:=y;
   if y>y2 then y2:=y;
   x:=x+dx;
 until (x>=x2);

 my:=h/abs(y2-y1);
 mx:=w/abs(x2-x1);
 { оси }
 x0:=l;
 y0:=b-Abs(Round(y1*my));
 Line(l,b,l,b-h);
 Line(x0,y0,x0+w,y0);
 Str(y2:5:1,st);
 OutTextXY(l+5,b-h,st);
 Str(y1:5:1,st);
 OutTextXY(l+5,b,st);

 { построение графика }
 x:=x1;
 repeat
   y:=f(x);
   PutPixel(x0+Round(x*mx),y0-Round(y*my),15);
   x:=x+dx;
 until (x>=x2);

 Readln;
 CloseGraph;

end.

Leave a Comment

80 − = 74