Построить график функции - Turbo Pascal (29368)

Узнай цену своей работы

Формулировка задачи:

Построить график функции

Решение задачи: «Построить график функции»

textual
Листинг программы
  1. uses graph;
  2. function F(x:real):real;
  3. var z,ac:real;
  4. begin
  5. if x<-0.1 then F:=2*x-3*sin(3*x)
  6. else if x>=1.2 then F:=2*x-sin(x)/cos(x)+2
  7. else
  8.  begin
  9.   z:=(x+1)/4;
  10.   if x=0 then ac:=0
  11.   else ac:=arctan((1-z*z)/z);
  12.   F:=2*x-ac;
  13.  end;
  14. end;
  15.  
  16. var a,b,mx,my,max:real;
  17.     x:real;
  18.     x0,y0,i:integer;
  19.     s:string;
  20. begin
  21. x0:=0;
  22. initgraph(x0,y0,'');{инициализация графического режима}
  23. a:=-2;
  24. b:=2;{интервал по Х}
  25. x0:=getmaxX div 2;{начало координат по Х}
  26. mx:=(x0-30)/b;{масштаб по Х}
  27. y0:=getmaxY div 2;
  28. my:=(y0-30)/20;
  29. line(0,y0,getmaxX,y0);{оси}
  30. line(x0,0,x0,getmaxY);
  31. for i:=1 to 4 do{максимальное количество засечек в одну сторону}
  32.  begin
  33.   line(x0-3,y0-round(i*my*10),x0+3,y0-round(i*my*10));{засечки на оси У}
  34.   line(x0-3,y0+round(i*my*10),x0+3,y0+round(i*my*10));
  35.   {подпись оси У}
  36.   str(i*10,s);
  37.   outtextXY(x0-25,y0-round(i*my*10),s);{соответственно засечкам}
  38.   outtextXY(x0-30,y0+round(i*my*10),'-'+s);
  39.   line(x0+round(i*mx/2),y0-3,x0+round(i*mx/2),y0+3); {засечки на оси Х}
  40.   line(x0-round(i*mx/2),y0-3,x0-round(i*mx/2),y0+3);
  41.   {подпись оси Х}
  42.   str(i/2:0:1,s);
  43.   outtextXY(x0+round(i*mx/2)+5,y0+10,s);
  44.   outtextXY(x0-round(i*mx/2)+5,y0+10,'-'+s);
  45.  end;
  46. {центр}
  47. outtextXY(x0+5,y0+10,'0');
  48. {подписи концов осей}
  49. outtextXY(getmaxX-10,y0-10,'X');
  50. outtextXY(x0+5,10, 'Y');
  51. {график}
  52. x:=a;
  53. while x<=b do
  54.  begin
  55.   if abs(cos(x))>0.01 then putpixel(x0+round(x*mx),y0-round(F(x)*my),14);
  56.   x:=x+0.0001;
  57.  end;
  58. {ассимптоты}
  59. setcolor(10);
  60. setlinestyle(1,0,1);
  61. line(x0+round(-0.1*mx),0,x0+round(-0.1*mx),getmaxY);
  62. line(x0+round(1.2*mx),0,x0+round(1.2*mx),getmaxY);
  63. line(x0+round(pi/2*mx),0,x0+round(pi/2*mx),getmaxY);
  64. readln
  65. end.

Объяснение кода листинга программы

  1. В начале кода подключается библиотека graph, которая, вероятно, содержит функции для работы с графиками.
  2. Создается функция F(x), которая, вероятно, представляет собой функцию, график которой нужно построить. Внутри функции проверяются условия, при которых она возвращает значения. Если x меньше -0.1, то возвращается 2x - 3sin(3x). Если x больше или равно 1.2, то возвращается 2x - sin(x)/cos(x) + 2. В остальных случаях выполняется следующая последовательность действий:
    1. Вычисляется значение переменной z как (x+1)/4.
    2. Если x равно 0, то переменной ac присваивается значение 0. В противном случае, переменной ac присваивается значение арктангенса ((1-z*z)/z).
    3. Значение переменной F вычисляется как 2*x - ac.
  3. Создается переменная a, которая представляет собой значение интервала по Х.
  4. Создается переменная b, которая представляет собой значение интервала по Х.
  5. Вычисляется среднее значение x и y по оси Х и Y, и эти значения присваиваются переменным x0 и y0 соответственно.
  6. Инициализируется графический режим с помощью функции initgraph(x0, y0, ``).
  7. Вычисляется масштаб по оси Х для переменной mx.
  8. Вычисляется масштаб по оси Y для переменной my.
  9. Строятся линии и подписи осей по заданным координатам.
  10. Строятся засечки на оси У для каждого из 4 интервалов.
  11. Строятся засечки на оси Х для каждого из 4 интервалов.
  12. Строится центр оси Х.
  13. Строятся подписи концов осей.
  14. Строится график функции F(x) с помощью цикла while.
  15. Строятся асимптоты для оси Х.
  16. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут