Рассчитать и построить графики функций F1(x) = sin(x)cos(x) и F2(x)=10/(2+x8) в 18 точках на интервале (-2;2) — Pascal(Паскаль)

uses graph;
const n=18;
function F1(x:real):real;
begin
F1:=sin(x)*cos(x);
end;
function F2(x:real):real;
begin
F2:=10/(2+sqr(x*x*x*x));
end;
var xn,xk,x,dx,y,ymn,ymx,mx,my,gx,gy:real;
    x1,y1,y2:array[1..n] of real;
    i,gd,gm,x0,y0:integer;
    st:string;
begin
xn:=-2;
xk:=2;
dx:=(xk-xn)/(n-1);
if F1(xn)<F2(xn)then ymn:=F1(xn)
else ymn:=F2(xn);
ymx:=ymn;
for i:=1 to n do
 begin
  x1[i]:=xn+(i-1)*dx;
  y1[i]:=F1(x1[i]);
  if y1[i]<ymn then ymn:=y1[i]
  else if y1[i]>ymx then ymx:=y1[i];
  y2[i]:=F2(x1[i]);
  if y2[i]<ymn then ymn:=y2[i]
  else if y2[i]>ymx then ymx:=y2[i];
 end;
 
gd:=0;
initgraph(gd,gm,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
mx:=(getmaxX-40)/18;
if ymx>abs(ymn) then my:=(y0-20)/ymx
else my:=(y0-20)/abs(ymn);
line(20,y0,getmaxX-20,y0);
outtextXY(getmaxX-15,y0-15,'X');
line(x0,getmaxY-140,x0,20);
outtextXY(x0-15,10,'Y');
for i:=1 to 18 do
 begin
  line(20+round(mx*(i-0.5)),y0+3,20+round(mx*(i-0.5)),y0-3);
  str(x1[i]:0:1,st);
  settextstyle(0,1,1);
  outtextXY(20+round(mx*(i-0.5)),y0+10,st);
  line(x0+3,y0-round(my*i),x0-3,y0-round(my*i));
  if i<3 then line(x0+3,y0+round(my*i),x0-3,y0+round(my*i));
  str(i,st);
  settextstyle(0,0,1);
  outtextXY(x0-20,y0-round(my*i),st);
  if i<3 then outtextXY(x0-20,y0+round(my*i),'-'+st);
 end;
gx:=(x0-20)/xk;
setcolor(12);
moveto(x0+round(x1[1]*gx+mx/2),y0-round(y1[1]*my));
for i:=1 to n-1 do
lineto(x0+round(x1[i]*gx+mx/2),y0-round(y1[i]*my));
setcolor(10);
moveto(x0+round(x1[1]*gx+mx/2),y0-round(y2[1]*my));
for i:=1 to n-1 do
lineto(x0+round(x1[i]*gx+mx/2),y0-round(y2[i]*my));
setcolor(15);
line(5,getmaxY-130,getmaxX-10,getmaxY-130);
line(5,getmaxY-100,getmaxX-10,getmaxY-100);
line(5,getmaxY-70,getmaxX-10,getmaxY-70);
line(5,getmaxY-40,getmaxX-10,getmaxY-40);
dx:=(getmaxX-15)/19;
for i:=1 to 20 do
line(5+round(dx*(i-1)),getmaxY-130,5+round(dx*(i-1)),getmaxY-40);
outtextXY(10,getmaxY-110,'X');
setcolor(12);
outtextXY(10,getmaxY-80,'F1');
setcolor(10);
outtextXY(10,getmaxY-50,'F2');
for i:=2 to 19 do
 begin
  str(x1[i-1]:4:1,st);
  setcolor(15);
  outtextXY(5+round(dx*(i-1)),getmaxY-110,st);
  str(y1[i]:4:1,st);
  setcolor(12);
  outtextXY(5+round(dx*(i-1)),getmaxY-80,st);
  str(y2[i]:4:1,st);
  setcolor(10);
  outtextXY(5+round(dx*(i-1)),getmaxY-50,st);
 end;
readln
end.

Leave a Comment

7 + = 12