Напишите программу для отображения функции в программе Pascal ABC y=arctg(3x+1.5), **...

0 голосов
67 просмотров

Напишите программу для отображения функции в программе Pascal ABC y=arctg(3x+1.5), на отрезке [-35;35].


Информатика (72 баллов) | 67 просмотров
Дан 1 ответ
0 голосов

//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.

(53.1k баллов)