нужно составить программу которая построит график функции у=Х3+2х2+х (Х в кубе + 2х в квадрате + х)- Pascal(Паскаль)

uses graph;
 
{ Функция, график которой будем рисовать }
function F(x: real):real;
begin
  F := ((x + 2)*x + 1)*x;
end;
 
var
  x, y, x0, y0, x1, y1, x2, y2, i, j: integer;
  fx1, fy1, fx2, fy2: real;
  W, H: integer;
  M: real;
  gdriver, gmode, errorcode: integer;
 
begin
  { Автоопределение графического драйвера }
  gdriver := DETECT;
  { Инициализация графического режима }
  initgraph(gdriver, gmode, '');
  { Результат инициализации }
  errorcode := graphresult;
  if (errorcode <> grOk) then { Проверка ошибки при инициализации }
  { Вывод кода ошибки }
  begin
    writeln('Graphics error: ' + grapherrormsg(errorcode));
    writeln('Press any key to halt:');
    readln;
    exit;
  end;
 
  { установка цвета фона рисунка }
  setbkcolor(LIGHTGRAY);
  cleardevice;
 
  { размеры графика }
  W := getmaxx;
  H := getmaxy;
 
  { масштаб графика }
  M := 40;
 
  { положение координатных осей (посередине графика) }
  X0 := W div 2;
  Y0 := H div 2;
 
  { установка цвета координатных осей }
  setcolor(RED);
 
  { рисуем координатные оси }
  line(X0, 0, X0, H);
  line(0, Y0, W, Y0);
 
  { рисуем засечки на координатной оси Y}
  x := 1;
  repeat
    x1 := X0 + (x * Round(M));
    x2 := X0 - (x * Round(M));
    line(x1, Y0-3, x1, Y0+3);
    line(x2, Y0-3, x2, Y0+3);
    inc(x);
  until (x1 > W) or (x2 < 0);
 
  { рисуем засечки на координатной оси X}
  y := 1;
  repeat
    y1 := y0 + (y * Round(M));
    y2 := y0 - (y * Round(M));
    line(x0-3, Y1, x0+3, Y1);
    line(x0-3, Y2, x0+3, Y2);
    inc(y);
  until (y1 > H) or (y2 < 0);
 
  { установка цвета графика }
  setcolor(BLUE);
 
  { собственно рисование в цикле по возможным графическим х }
  for x := 1 to W do
  begin
    fx1 := (x-1-X0) / M;         { пересчет графического x в математическое fx }
    fy1 := F(fx1);                 { вычисление fy как функции от fx }
    fx2 := (x-X0) / M;           { то же для следующей точки }
    fy2 := F(fx2);
    y1 := Y0 - Round(fy1*M);    { обратный пересчет математических координат fy }
    y2 := Y0 - Round(fy2*M);    {    в графические координаты y }
    line(x-1, y1, x, y2);            { рисование }
  end;
  readln;
  closegraph;
end.

Leave a Comment

81 − 74 =