русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тема 8. Графики функций. (4ч.)


Дата добавления: 2015-07-23; просмотров: 720; Нарушение авторских прав


Содержание занятия: Принципы изображения графиков функций. Масштабирование: связь физических и экранных координат. Вывод текста в графическом режиме (использование строковых переменных, перевод числовых значений в строковые с помощью функции Str , операторы OutText, OutTextXY).

1.Теория

Необходимо нарисовать на экране график заданной функции, например:

y=a·Sin(x) , xÎ[xmin, xmax].

Трудность заключается в том, что точки экрана нумеруются координатами по горизонтальной оси от 0 до 639, по вертикальной оси от 0 до 399, и эта ось направлена вниз.

Задача решается в два этапа:

1) выясняются пределы изменения х и у заданной функции (для этого надо распечатать её таблицу или провести анализ функции)

2) рисуется график функции с пересчетом координат (х, у) каждой точки графика в экранные координаты (i, j).

2.Выбор пределов изменения х и заданной функции.

Задаём интервал изменения х: от хmin до хmax и распечатываем значения функции с таким шагом h (по х), чтобы в таблице было 10 – 20 строчек, например, так:

programgrafic;

Var

a, x, y, xmin, xmax, h: real;

Begin

write(‘Введите х min и max’);

readln( xmin, xmax);

a:=3;

h:=(xmax - xmin)/20;

x:=xmin;

while x<=xmax do

Begin

y:=a*sin(x);

writeln(x, y);

x:=x+h;

end;

End.

Из таблицы на экране определите max и min значения функции в этом интервале – ymax и ymin. Если функция в задаче задана параметрически, т.е. x(t) и y(t), где t-параметр, то в программе именно его следует изменять с равным шагом, а значения x(t) и y(t) –выводить на экран.

С другой стороны, изображаемые функции всегда состоят из комбинации элементарных функций, свойства которых известны. Поэтому можно определить пределы изменения значения функции, анализируя ее вид. Например, для данной функции y(x)=a·sin(x) легко видеть, что если sin(x) изменяется от –1 до 1, то a·sin(x) будет изменяться от –а до а.



 

3.Рисование графика

Итак, для изображения графика заданной функции на экране, необходимо произвести масштабирование: пересчитать координаты (x,y) в экранные координаты (i, j). Это легко можно сделать, если ввести коэффициенты пересчета

Cx=Ims/(xmax-xmin ) Cy=Jms/(ymax-ymin).

Здесь Ims и Jms -максимальные значения координат экрана. В любом режиме их можно найти с помощью функций

Ims:=GetMaxX Jms:=GetMaxY

xmax, xmin и ymax,ymin -максимальное и минимальное значения аргумента и функции, которые Вы хотите строить. Тогда экранные координаты точки (x,y) графика рассчитываются с помощью этих коэффициентов пересчета:

i= целая часть(Cx*(x-xmin)); j= Jms -целая часть(Cy*(y-ymin));

В последней формуле также учтено, что направление оси Y - вверх. Введение таких коэффициентов пересчета позволяет растянуть (или сжать) график так, что точке xmin соответствует экранная координата i=0, а точке xmax –экранная координата i=639, в чем легко убедиться, подставив эти значения в формулу. То же самое –для экранных координат по вертикальной оси, только уmin соответствует экранная координата j=399, а уmax соответствует экранная координата j=0.

В приведенной ниже программе на языке Турбо Паскаль коэффициенты рассчитаны так:

cx:=(getmaxx-10)/(xmax-xmin);

jmax:=getmaxy-5;

cy:=jmax/(ymax-ymin);

Здесь для более эстетичного расположения графика на экране Ims и Jms сделаны меньше, при этом части графика не упираются в границы экрана.

Для увеличения читаемости графика, его следует подписать, т.е. указать название изображенной функции и значения ее параметров. Например, так:

 

OutTextXY(45, 15, ‘график функции y=а*Sin(x)’);

 

В этом фрагменте набор чисел – координаты точки начала текста на экране. Если часть текста, который должен быть выведен на экран, заранее не известен (например, значение параметра a), то его можно вывести с помощью переменной типа string, сформировав ее в процессе выполнения программы:

 

Str(a,sa); OutTextXY(45, 25, ‘ а=’); OutTextXY(45, 40, sa);

 

где функция Str(a,sa) переводит числовое значение переменной a в текст, помещаемый в строковую переменную sa, содержимое которой выводится на экран оператором OutTextXY(45, 40, sa).

Оси координат необходимо изобразить на графике с помощью операторов Line. При этом надо помнить, что это прямые у=0 (ось абсцисс) и х=0 (ось ординат). Соответствующие экранные координаты можно получить, подставив эти значения в формулы для i и j.

В программе, приведенной ниже, строится график функции y=а*Sin(x). Вы можете воспользоваться этой программой, устанавливая свои значения xmin, xmax, ymin, ymax, вписав свою функцию и исправив подпись к рисунку.

programgrafic;

usesgraph;

Var

a, x, y, xmin, xmax, h: real;

ymin, ymax, cx, cy: real;

gd, gm: integer;

i, j, jmax: integer;

Begin

gd:=detect; {установка графического режима}

initgraph(gd, gm, ‘’);

{подпись графика функции}

outtextxy(45, 15, ‘график функции y=Sin(ax)’);

outtextxy(45, 25, ‘параметр а=1’);

{вычисление коэффициента пересчета}

ymin:=-1; ymax:=1; a:=1;

xmin:=-3.14; xmax:=3.14; h:=0.01;

cx:=(getmaxx-10)/(xmax-xmin);

jmax:=getmaxy-5;

cy:=jmax/(ymax-ymin);

{рисование осей}

i:=round(-xmin*cx);

j:=jmax-round(-ymin*cy);

setcolor(14);

line(i, 5, i, jmax);

line(10, j, getmaxx-10, j);

{рисование графика}

x:=xmin;

while x<=xmax do

Begin

y:=a*sin(x); {вычисление функции}

i:=round(cx*(x-xmin));

j:=jmax-round(cy*(y-ymin));

putpixel(i, j, 2);

x:=x+h;

end;

readln;

closegraph;

End.

 

4.Самостоятельная работа.

Каждый студент получает индивидуальную задачу из раздела 5 пособия «Программирование физических задач».

Требования при защите задачи.

1.В программе необходимо подключить графическую библиотеку и открыть графический режим. Студент должен знать чем отличаются текстовый и графический режимы, в каких модулях находятся используемые смысл

2.Нужно организовать ввод параметров кривой с клавиатуры (если в задаче требуется) , нарисовать оси координат и вывести на экран название кривой и значение ее параметров.

3.Кривая рисуется по точкам с помощью оператора цикла.

Каждый студент получает задачу из раздела 5

 



<== предыдущая лекция | следующая лекция ==>
Управление объектом. | Задачи, источники информации анализа использования основных фондов. Анализ обеспеченности предприятия основными фондами и технической оснащенности производства и труда.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.044 сек.