В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
Polia111111
Polia111111
20.03.2022 20:40 •  Информатика

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

Показать ответ
Ответ:
математик222
математик222
10.09.2020 12:54
//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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота