График функции - Pascal ABC (12786)
Формулировка задачи:
Здравствуйте!
Условие задачи:
Напишите программу, постройте и распечатайте график: с шагом 0,05 на интервале [-7, 7].Решение задачи: «График функции»
textual
Листинг программы
uses graphABC;
function F(x:real):real;
begin
F:=8*x*sin(x*x)/(x-5);
end;
var xn,xk,x,mx,my,dx:real;
x0,y0,i,nx,nmn,nmx:integer;
begin
//интервал
xn:=-7;
xk:=7;
//графическое окно
setwindowsize(600,600);
centerwindow;
//начало координат
x0:=windowwidth div 2;
y0:=windowheight div 2;
//масштабы
mx:=(x0-30)/xk;{масштаб по Х}
my:=(y0-20)/50;{по У}
//координатная сетка
for i:=1 to 7 do
begin
line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3);
line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
line(x0-3,y0-round(i*my*10),x0+3,y0-round(i*my*10));
line(x0-3,y0+round(i*my*10),x0+3,y0+round(i*my*10));
textout(x0+round(i*mx),y0+10,inttostr(i));
textout(x0-round(i*mx),y0+10,inttostr(-i));
textout(x0-20,y0-round(i*my*10),inttostr(i*10));
textout(x0-25,y0+round(i*my*10),inttostr(-i*10));
end;
line(0,y0,windowwidth,y0);{оси}
line(windowwidth,y0,windowwidth-10,y0+5);
line(windowwidth,y0,windowwidth-10,y0-5);
line(x0,0,X0,windowheight);
line(x0,0,x0-5,10);
line(x0,0,x0+5,10);
textout(x0+5,y0+10,'0');
textout(windowwidth-10,y0-20,'X');
textout(x0+10,0, 'Y');
//график
setpencolor(clBlue);
setpenwidth(2);
dx:=0.1;
//левая ветвь при x<5
x:=xn;
while x<5 do
begin
if x=xn then moveto(x0+round(x*mx),y0-round(F(x)*my))
else lineto(x0+round(x*mx),y0-round(F(x)*my));
x:=x+dx;
end;
//правая ветвь при x>5
x:=xk;
while x>5 do
begin
if x=xk then moveto(x0+round(x*mx),y0-round(F(x)*my))
else lineto(x0+round(x*mx),y0-round(F(x)*my));
x:=x-dx;
end;
setfontsize(10);
setfontcolor(clBlue);
setfontsize(12);
textout(20,20,'y=8xsin(x^2)/(x-5)');
textout(20,40,'интервал [-7;7]');
end.