//PascalABC.NET версия 3.3.1590 от 03.12.2017
//Если программа не запускается, то обновите версию
uses GraphABC;
const
x_min = -15.0;
x_max = 15.0;
dx = 0.01;
function f(x: real): real;
begin
f := ArcTan(3 * x + 1.5);
end;
begin
//настраиваем размер окна под график, влияет на маштаб
Window.Width := 1000;
Window.Height := 300;
Window.IsFixedSize := True; // фиксируем размеры окна
Coordinate.Origin := Window.Center; //выставляем начало координат в центр окна
Coordinate.SetMathematic; //выставляем направление осей как в математике принято
var scale := Window.Width / (x_max - x_min); // вычисляем маштаб
var x := x_min;
var y_max := f(x_max); // подставляем реальные значения
var y_min := f(x_min); // подставляем реальные значения
repeat
try
var y := f(x);
if y > y_max then y_max := y;
if y < y_min then y_min := y;
finally
x := x + dx;
end;
until x > x_max;
// оси координат, стрелочки сами если надо
Pen.Color := clSilver;
Line(round((x_min - 1) * scale), 0, round((x_max + 1) * scale), 0);
Line(0, round((y_min - 1) * scale), 0, round((y_max + 1) * scale));
Circle(0, round(1 * scale), 1); //единичная метка
Circle(round(1 * scale), 0, 1); //единичная метка
x := x_min;
repeat
try
var y := f(x);
PutPixel(round(x * scale), round(y * scale), clBlueViolet);
finally
x := x + dx;
end;
until x > x_max;
end.