uses graph;
function F(x:real):real;
begin
F:=exp(x)+exp(-x);
end;
const
x1=-4;{начало и конец графика в реальных значениях}
x2=4;
dx=0.001;
var e,x,mx,my,a,y:real;
x0,y0,grD,px,py,grM,i,k:integer;
s,s1:string;
begin
grD:=detect;
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат по центру}
Y0:=getmaxY-40;{и внизу}
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=(getmaxX-60)/(x2-x1);{длина в пикселах по оси Х/реальная длина}
my:=y0/(F(x1));{половина длины оси по У/(макс. значение ф-ции}
SetBkColor(7); {цвет фона}
setlinestyle(0,0,1);{сплошная линия}
SetColor(1);{цвет линий осей}
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
setlinestyle(1,0,0); {пунктирная линия}
Setcolor(9); {цвет сетки}
for i:=1 to 6 do {максимальное количество засечек в одну сторону}
begin
line(10,y0-round(i*my*10),630,y0-round(i*my*10));
line(x0+round(i*mx),0,x0+round(i*mx),getmaxY); {засечки на оси Х}
line(x0-round(i*mx),0,x0-round(i*mx),getmaxY);
str(i*10,s);
{подпись оси У}
outtextXY(x0-30,y0-round(i*my*10),s);{соответственно засечкам}
{подпись оси Х}
str(i,s);
outtextXY(x0+round(i*mx),y0+10,s);
outtextXY(x0-round(i*mx),y0+10,'-'+s);
end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+10,10, 'Y');
{график}
x:=x1+dx;
while x<=x2 do
begin
px:=x0+round(x*mx); {изменение по оси Х}
y:=F(x); {график в реальных координатах}
py:=y0-round(y*my);{в экранных}
putpixel(px,py,10);
x:=x+dx; {наращиваем х}
end;
setcolor(10);
setlinestyle(0,0,1);
outtextXY(x0-80,80,'Grafik functii Y=e^x+e^-x');
readln
end.