Построить график функции - Turbo Pascal (29367)
Формулировка задачи:
Построить график функции
Решение задачи: «Построить график функции»
textual
Листинг программы
uses graph; function F(x:real):real; var z,as:real; begin if x<=-3.5 then F:=4.95+cos(3*x)-sin(x) else if x>1 then F:=4.95+x+4 else begin z:=(x+3.5)/5; if z=-1 then as:=-pi/2 else if z=1 then as:=pi/2 else as:=arctan(z/(1-z*z)); F:=4.95+as; end; end; var a,b,mx,my,max:real; x:real; x0,y0,n,i:integer; s:string; begin x0:=0; initgraph(x0,y0,'');{инициализация графического режима} a:=-5; b:=5;{интервал по Х} x0:=getmaxX div 2;{начало координат по Х} mx:=(x0-30)/b;{масштаб по Х} y0:=getmaxY div 2; max:=abs(F(a)); x:=a; while x<=b do begin if abs(F(x))>max then max:=abs(F(x)); x:=x+0.1; end; writeln('max=',max:0:2); my:=(y0-30)/max; line(0,y0,getmaxX,y0);{оси} line(x0,0,x0,getmaxY); if max>b then n:=trunc(max)+1 else n:=trunc(b); for i:=1 to n do{максимальное количество засечек в одну сторону} begin line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));{засечки на оси У} line(x0-3,y0+round(i*my),x0+3,y0+round(i*my)); {подпись оси У} str(i,s); if i mod 2=0 then begin outtextXY(x0-25,y0-round(i*my),s);{соответственно засечкам} outtextXY(x0-30,y0+round(i*my),'-'+s); end; 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); {подпись оси Х} outtextXY(x0+round(i*mx)+5,y0+10,s); outtextXY(x0-round(i*mx)+5,y0+10,'-'+s); end; {центр} outtextXY(x0+5,y0+10,'0'); {подписи концов осей} outtextXY(getmaxX-10,y0-10,'X'); outtextXY(x0+5,10, 'Y'); {график} x:=a; while x<=b do begin if abs(cos(x))>0.01 then putpixel(x0+round(x*mx),y0-round(F(x)*my),14); x:=x+0.0001; end; {ассимптоты} setcolor(10); setlinestyle(1,0,1); line(x0+round(-3.5*mx),0,x0+round(-3.5*mx),getmaxY); line(x0+round(mx),0,x0+round(mx),getmaxY); readln end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д