Изучение функций и построение графиков функций является одним из основных разделов математики. Умение строить графики часто помогает решать сложные задачи, а иногда является единственным способом их решения. В школьном курсе изучаются построение графиков функций по точкам, при помощи преобразований или с использованием начал анализа. Причем построение графика функций в полярных и декартовых координатах — процесс весьма трудоемкий и занимающий много времени.
В свою очередь, построение графических изображений в Паскале, исследование графиков функций, один из важных и интересных тем программирования. Компьютерная графика в Паскале — область информатики, изучающая методы и свойства обработки изображений с помощью программно-аппаратных средств.
Одним из приложений компьютерной графики является наглядное представление результатов математических расчетов. Графики функций, диаграммы, линии уровней распределения пространственных зависимостей и т. п. делают результаты расчетов обозримее, нагляднее, понятнее. Рассмотрим лишь один простейший вариант математической графики — построение графика функции.
Требуется составить программу построения на экране дисплея графика функции y = F(x).
Решение этой задачи удобно проводить в следующем порядке:
- Определить границы значений аргумента, в пределах которых будет строиться график. Обозначим их следующим образом: Xmin— нижняя граница, Хmax — верхняя граница.
- Для данной области значений аргумента определить предельные значения функции: Ymin и Ymax. Эти значения необязательно должны быть точными. Они могут быть оценочными снизу и сверху соответственно.
- Задать границы графического окна, в пределах которого будет рисоваться график: [Xgmin, Xgmax], [Ygmin, Ygmax]. Поскольку в графических координатах вертикальная ось направлена вниз, то Ygmin>Ygmax. Таким образом, имеем две системы координат: (X, Y), которую назовем системой математических координат (в литературе чаще используют термин «мировые координаты»), и (Xg, Yg) — систему графических координат. Нетрудно получить формулу, связывающую графические и математические координаты:
(1)
Здесь квадратные скобки означают округление до целого значения (функция Round).
Построение графика функции может производиться либо точечным методом, либо кусочно-линейным. При первом способе график строится как последовательность точек, расположенных максимально близко. Производится «попикселевый» перебор значений аргумента в интервале [Xgmin, ] с выставлением точек с соответствующими координатами Y. При кусочно-линейном методе задается шаг Х и рассчитывается последовательность значений (Xi, Yi):
Xi=Xmax+iХ, Yi=F(Хi), i=0,1,…, n, n=.
График строится в виде отрезков прямых, проведенных через точки (Xi, Yi), (Xi+1, Yi+1).
Пример 1. Построение графиков функций в декартовых координатах.
Построить графики тригонометрических функций y=sin(x), y=cos(x).
Первым делом, подключаем модуль GraphABC, описываем функции, после чего мы сможем обратиться к ним по именам функций F1 и F2 соответственно. Описываем нужные нам в ходе программирования переменные целого и вещественного типа.
Для того чтобы построить координатные прямые, нам нужно найти координату точки О (точку пересечения осей Х и У). Для этого, ширину экрана и высоту экрана делим пополам, получим координату точки О(x0, y0). График функции лежит в интервале от -, обозначим отрезок через переменные xn=- и xk=+. Подберем более удобный масштаб по формуле (1) mx:=(x0–30)/xk, my:=y0–40. Где x0, y0–начало координат, xk=.
В результате получится следующая часть программы:
x0:=windowwidth div 2;
y0:=windowheight div 2;
xn:=-2*pi; xk:=2*pi;
mx:=(x0–30)/xk;
my:=y0–40;
Рисуем оси, пересекающиеся в точке О (x0, y0), подписываем их и отмечаем на оси Y интервал [-1,1]. Далее, приступаем к изображению графиков.
Задаем цикл пока: пока мы наращиваем i (изначально счетчик (i) принимает значение левой границы ), т. е. i:=i+dx и рисуем графики нашей функции, используя формулу (1).
Получим:
i:=xn;
dx:=0.001;
while i<=xk do
begin
i:=i+dx;
setpixel(x0+round(i*mx),y0-round(F1(i)*my),clBlue);
setpixel(x0+round(i*mx),y0-round(F2(i)*my),clRed);
end;
Напоследок, подписываем полученные функции.
Протокол отладки:
Рис. 1. График функции у = sin (х) и y=cos(x)
Пример 2. Построение графиков функций в полярных координатах.
Построить график «Розы» или кривой Гвидо Гранди — семейство кривых, полярное уравнение которых имеет вид: , где — некоторые положительные числа.
Первым делом, подключаем модуль GraphABC. Описываем нужные нам в ходе программирования переменные целого, вещественного и строкового типа и определяем константы .
Для того чтобы построить координатные прямые, нам нужно найти координату точки О (получим, как в предыдущем примере). Следующий шаг — изображение координатной сетки. Для этого вычислим шаг по оси радиуса в пикселях, используя введенное нами значение k. Масштаб для графика найдем по формуле m:=2*(y0–40). Используя цикл for, нарисуем окружности с центром в O(x0, y0) и радиуса=d, где d шаг по оси радиуса в пикселях. Отмечаем шкалу. Шаг по кругу будет равен 30 градусам. Задаем цикл for для того, чтобы нарисовать радиусы пунктиром (радиусов будет 12) и подписываем их. Используя формулу и знания, о переходе от градусов к радианам, найдем значения x1 и y1.
В результате получится следующая часть программы:
d:=round((y0–40)/(round(k)));
m:=2*(y0–40);
setpencolor(clBlue);
setbrushstyle(bsClear);
for i:=1 to round(k) do
begin
circle(x0,y0,i*d);
str(i/k:0:1,s);
textout(x0-i*d+5,y0+10,s);
end;
f:=30;
for i:=1 to 12 do
begin
Setpenstyle(psDash);
x1:=x0+round((y0–40)*cos(i*f*pi/180));
y1:=y0-round((y0–40)*sin(i*f*pi/180));
end;
Далее, рисуем осевые линии и приступаем к самому графику.
Начальный угол нулевой (x = 0). Задаем цикл пока: пока x≤360 мы вычисляем уравнение в полярных координатах, приводим их к декартовым и к экранным.
x:=0;
while x<=360 do
begin
r:=a*cos(k*x);
xr:=r*cos(x);
yr:=r*sin(x);
x1:=x0+round(m*xr/2);
y1:=y0-round(m*yr/2);
setpixel(x1,y1,clRed);
x:=x+0.01;
end;
Протокол отладки: Рассмотрим при а=1, но при различных k.
Рис. 2. График кривой Гвидо Гранди при
Рис. 3. График кривой Гвидо Гранди при
Рис. 4. График кривой Гвидо Гранди при
Данные программы можно использовать на интегрированных уроках информатики и математики, когда учащиеся на уроках информатики практически применяют знания, полученные на уроках математики. Так же на уроках математики при повторении темы: «Полярные координаты», «Графики». Плюс состоит в том, что учителю не потребуется много времени, чтобы изобразить графики на доске. Необходимо только заранее подготовить программы и запустить во время урока, чтобы показать наглядность и решить ту или иную задачу. Конечно же, использовать данные программы можно только после того, как убедились в том, что ученики научились строить графики от руки.