Построить графики функций - PascalABC.NET (24463)
Формулировка задачи:
Построить графики функций (наличие осей, с отмеченным единичным отрезком, подписей обязательно):
1)
2).
Помогите! Не получается у самой, смотрела примеры, но под свои функции не смогла подогнать Буду рада, если кто-то объяснит))
Решение задачи: «Построить графики функций»
textual
Листинг программы
- uses graphABC;
- function F(x:real):real;
- begin
- F:=sqr(sin(x));
- end;
- var xn,xk,x,mx,my,dx,max:real;
- x0,y0,i:integer;
- s:string;
- begin
- x0:=windowwidth div 2;//начало координат
- y0:=windowheight div 2;
- xn:=-2*pi;
- xk:=2*pi;//интервал по Х
- x:=xn;
- mx:=(x0-30)/xk;//масштаб по Х
- my:=y0/2;//max;//по У
- line(0,y0,windowwidth,y0);//оси
- line(x0,0,x0,windowheight);
- for i:=1 to 7 do//максимальное количество засечек в одну сторону
- begin
- line(x0+round(i*pi*mx),y0-3,x0+round(i*pi*mx),y0+3); //засечки на оси Х
- line(x0-round(i*pi*mx),y0-3,x0-round(i*pi*mx),y0+3);
- //подпись оси Х
- textout(x0+round(mx*pi/2)-15,y0+10,'pi/2');
- textout(x0+round(pi*mx),y0+10,'pi');
- textout(x0+round(3*pi*mx/2),y0+10,'3pi/2');
- textout(x0+round(2*pi*mx),y0+10,'2pi');
- textout(x0-round(mx*pi/2)-15,y0+10,'-pi/2');
- textout(x0-round(pi*mx),y0+10,'-pi');
- textout(x0-round(3*pi*mx/2),y0+10,'-3pi/2');
- textout(x0-round(2*pi*mx),y0+10,'-2pi');
- if i<6 then
- begin
- line(x0+3,y0-round(i*my/5),x0-3,y0-round(i*my/5)); //засечки на оси Y
- line(x0+3,y0+round(i*my/5),x0-3,y0+round(i*my/5));
- //одписи по оси Y
- str(i/5:0:1,s);
- textout(x0-25,y0-round(i*my/5),s);
- textout(x0-30,y0+round(i*my/5),'-'+s);
- end;
- end;
- //центр
- textout(x0+5,y0+10,'0');
- //подписи концов осей
- textout(windowwidth-15,y0-15,'X');
- textout(x0+10,10, 'Y');
- {график}
- x:=xn;
- dx:=0.01;
- setpencolor(clBlue);
- while x<=xk 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;
- setfontsize(12);
- setfontcolor(clBlue);
- textout(x0+100,10,'y=sin^2(x)');
- end.
Объяснение кода листинга программы
- Объявлены переменные:
- xn, xk, x, mx, my, dx, max (реальные)
- x0, y0, i (целочисленные)
- s (строковая)
- Задаются начальные значения переменных:
- x0 := windowwidth div 2
- y0 := windowheight div 2
- xn := -2*pi
- xk := 2*pi
- mx := (x0-30)/xk
- my := y0/2
- Строятся оси X и Y:
- Линия от (x0, y0) до (windowwidth, y0)
- Линия от (x0, 0) до (x0, windowheight)
- Строятся засечки на оси X:
- Для i от 1 до 7 выполняется:
- Строятся линии на уровне -pi/2, -pi, -3pi/2, -2pi
- Строятся подписи на оси X с шагом i/5
- Для i от 1 до 7 выполняется:
- Строятся засечки на оси Y:
- Для i от 1 до 6 выполняется:
- Строятся линии на уровне i*my/5
- Строятся подписи на оси Y с шагом i/5
- Для i от 1 до 6 выполняется:
- Строится график функции:
- x := xn
- dx := 0.01
- Последовательно выполняется:
- Если x = xn, то перемещается перо в точку (x0+round(xmx), y0-round(F(x)my))
- Иначе, рисуется линия между текущей и следующей точкой x
- Выводятся подписи к графикам:
- textout(x0+100,10,'y=sin^2(x)')
- Код завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д