Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Инфоурок / Информатика / Научные работы / Проект на тему "Построитель функций"

Проект на тему "Построитель функций"

  • Информатика

Документы в архиве:

144 КБ Построитель графиков функций.ppt
77.5 КБ пояснительная записка.doc
70 КБ пояснительная записка1.doc
1.45 МБ 1.bmp
900.05 КБ x.bmp
900.05 КБ y.bmp
900.05 КБ врем.bmp
900.05 КБ график.bmp
900.05 КБ график1.bmp
900.05 КБ график11.bmp
900.05 КБ график14.bmp
900.05 КБ система координат 1.bmp
900.05 КБ система координат 11.bmp
900.05 КБ система координат.bmp

Название документа Построитель графиков функций.ppt

Поделитесь материалом с коллегами:

Построитель графиков функций Авторы: Бураков Андрей Кузьмин Александр Научный...
Цель работы Написать программу на языке Паскаль, реализующую построение графи...
Способ построения графика Построение зависимости y=f(x)
Обычная система координат (действительные числа)
система координат VGA
Реальный график функции
Полученный график функции
Требуемые преобразования: f1: [a,b] – [0,x1max] f2: [ymin,ymax] – [0,y1max]
f1: [a,b] – [0,x1max]
f2: [ymin,ymax] – [0,y1max]
1 из 10

Описание презентации по отдельным слайдам:

№ слайда 1 Построитель графиков функций Авторы: Бураков Андрей Кузьмин Александр Научный
Описание слайда:

Построитель графиков функций Авторы: Бураков Андрей Кузьмин Александр Научный руководитель: Коханов Леонид Валерьевич

№ слайда 2 Цель работы Написать программу на языке Паскаль, реализующую построение графи
Описание слайда:

Цель работы Написать программу на языке Паскаль, реализующую построение графика функции вида y=f(x), заданную на промежутке [a,b]

№ слайда 3 Способ построения графика Построение зависимости y=f(x)
Описание слайда:

Способ построения графика Построение зависимости y=f(x)

№ слайда 4 Обычная система координат (действительные числа)
Описание слайда:

Обычная система координат (действительные числа)

№ слайда 5 система координат VGA
Описание слайда:

система координат VGA

№ слайда 6 Реальный график функции
Описание слайда:

Реальный график функции

№ слайда 7 Полученный график функции
Описание слайда:

Полученный график функции

№ слайда 8 Требуемые преобразования: f1: [a,b] – [0,x1max] f2: [ymin,ymax] – [0,y1max]
Описание слайда:

Требуемые преобразования: f1: [a,b] – [0,x1max] f2: [ymin,ymax] – [0,y1max]

№ слайда 9 f1: [a,b] – [0,x1max]
Описание слайда:

f1: [a,b] – [0,x1max]

№ слайда 10 f2: [ymin,ymax] – [0,y1max]
Описание слайда:

f2: [ymin,ymax] – [0,y1max]

Название документа пояснительная записка.doc

Поделитесь материалом с коллегами:


МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

«СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА №19»

ШКОЛЬНАЯ НАУЧНО-ПРАКТИЧЕСКАЯ КОНФЕРЕНЦИЯ



Построитель графиков функций


Авторы: Бураков Андрей

Кузьмин Александр


Научный руководитель:

Коханов Леонид Валерьевич


г.Новочебоксарск 2009 г.

СОДЕРЖАНИЕ


1. Цели и задачи __________________________3

2. Математическая модель __________________4

3. Компьютерная реализация _______________11

1. Цели и задачи


При решении различных задач естественно-научного цикла (математика, физика, химия, биология, экономика) приходится часто строить графики различных функций. В школьном курсе это чаще всего это функции одной переменной, выраженной в виде y = f(x).

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

Однако зачастую аналитическое выражение функции может быть чрезвычайно сложным, и для построения ее графика нужны более серьезные знания, либо внешний вид графика представить вообще невозможно.

В таких случаях может помочь компьютерная программа – построитель графиков функций.

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

Для достижения этой цели возникают следующие задачи:

  1. Выбор способа построения графика функции

  2. Подбор математический аппарата для решения проблемы и построение математической модели

  3. Компьютерная реализация на языке Паскаль.

2. Математическая модель


Поскольку необходимо написать компьютерную программу, строящую график практически любой функции, заданной выражением y = f(x), прежде всего необходимо выбрать способ построения графика. Разнообразные аналитические методы, подвластные человеку, для компьютерной реализации слишком сложны, поэтому просто воспользуемся способом построения графика «по точкам».

При построении графика функции «по точкам» необходимо построить таблицу зависимости y=f(x), нанести точки с соответствующими координатами на координатную плоскость и постараться соединить эти точки плавной линией.

Казалось бы, ничего сложного в данном построении нет, поскольку в языке программирования Паскаль имеются соответствующие графические возможности: прямоугольная декартова система координат, графические примитивы для построения точек и отрезков, выбор цветов для графических построений. Однако возникает ряд проблем.

Обычная прямоугольная декартова система координат на плоскости выглядит так:

hello_html_m616b600a.png

При этом координаты точки (x,y) выражаются действительными (вещественными) числами.

Графические возможности Паскаля гораздо более ограничены. Координатная плоскость компьютера представляет собой систему координат стандарта VGA 640x480 точек с 16-цветной палитрой.

hello_html_m355778a8.png

При этом координаты точки (x,y) выражаются строго целыми числами в соответствующих диапазонах: от 0 до 639 по x и от 0 до 479 по y.

Очевидно, данных диапазонов совершенно недостаточно, и если мы построим график в этих координатах, он будет сильно ограничен, искажен и к тому же зеркально отображен относительно оси Ox.

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

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

Для этого нам потребуются некоторые сведения из области математики.

Договоримся вначале, что наша функция задана на некотором отрезке [a,b] и непрерывна на этом отрезке (например, случай деления на нуль приведет к ошибке). В этом случае известно, что функция на данном отрезке достигает своего минимального и максимального значений ymin и ymax.

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

В результате график функции будет ограничен неким прямоугольником: отрезком [a,b] по оси Ox и отрезком [ymin , ymax] по оси Oy.


hello_html_m385501f.png


Теперь наша задача заключается в отображении этого прямоугольника на прямоугольник экрана VGA 640x480 с перевертыванием по оси Oy.

Обозначим новые координаты соответственно через x1 и y1, а ограничения через x1max=639 и y1max=479.

В результате мы должны получить аналогичную картинку в системе координат x1, y1:

hello_html_m7a88849b.png

Для данного построения требуется произвести преобразования отрезков:

f1: [a , b] – [0 , x1max]

f2: [ymin , ymax] – [0 , y1max]


Другими словами, требуется произвести растяжение (сжатие) по осям при помощи указанных преобразований. Для этого нужно воспользоваться сведениями из области аналитической геометрии, а именно, уравнением прямой, проходящей через две данные точки (x1,y1) , (x2,y2)

hello_html_30519f71.gif

(в данном случае (x1,y1) , (x2,y2) - координаты двух точек в системе координат (x,y) )

Это уравнение нам потребуется для построения наших функций f1 и f2.

Построим аналитическое выражение для функции f1:

hello_html_m4ce6dd96.png

hello_html_495dcfc.gif


или после соответствующих преобразований:


hello_html_c3e4768.gif


Для нашей программы эта формула перепишется в формате Паскаля:


x1:=round(x1max*(x-a)/(b-a))


Аналогично построим аналитическое выражение для функции f2:

hello_html_m232d2ca6.png

hello_html_ma8f8d5a.gif


или после соответствующих преобразований:


hello_html_m43a8c869.gif


Для нашей программы эта формула перепишется в формате Паскаля:


y1:=round(y1max*(y-ymin)/(ymin-ymax)+y1max)


Стандартная функция round используется для округления чисел до целого.

Для построения графика функции вначале переведем графический курсор в начальную точку, а затем воспользуемся циклом по x в пределах от a до b, каждый раз строя отрезок из последней точки до следующей шагом s при помощи оператора -line(x1,y1), где координаты x1 и y1 вычисляются при помощи указанных формул.


После построения самого графика функции необходимо построить реальные оси Ox и Oy.

Ось Ox переходит в ось Ox1, ее уравнение в реальных координатах имеет вид y=0. Пересчитаем координату y в y1, а затем воспользуемся оператором

line(0,y1,x1max,y1)

Ось Oy переходит в ось Oy1, ее уравнение в реальных координатах имеет вид x=0. Пересчитаем координату x в x1, а затем воспользуемся оператором

line(x1,0,x1,y1max)


Тем самым поставленная задача будет решена.

3. Компьютерная реализация


В качестве вводных данных в программе будут использованы начало и конец отрезка и шаг вычислений a, b, s.

Сама функция задается в разделе function.

После этого определяем минимальное и максимальное значение функции на этом отрезке ymin и ymax.

Затем происходит инициализация графики, определение цветов и собственно построение графика при помощи оператора -line(x1,y1).

В конце программы строятся реальные оси координат Ox и Oy.

Ниже приводится текст программы на языке Паскаль:

program grafic;

uses graph;

const x1max=639;

y1max=479;

var gd,gm,x1,y1:integer;

x,y,ymin,ymax,a,b,s:real;


function f(x:real):real;

begin

f:=; {задание функции}

end;


begin

write('a=');readln(a);

write('b=');readln(b);

write('s=');readln(s);

ymin:=f(a);

ymax:=f(a);

x:=a;

repeat

y:=f(x);

if y

if y>ymax then ymax:=y;

x:=x+s

until x>b;

gd:=detect;

initgraph(gd,gm,'');

setcolor(lightred);

setbkcolor(black);

x:=a;

y:=f(x);

x1:=0;

y1:=round(y1max*(y-ymin)/(ymin-ymax)+y1max);

moveto(x1,y1);

repeat

y:=f(x);

x1:=round(x1max*(x-a)/(b-a));

y1:=round(y1max*(y-ymin)/(ymin-ymax)+y1max);

lineto(x1,y1);

x:=x+s

until x>b;

setcolor(yellow);

y1:=round(y1max*ymin/(ymax-ymin)+y1max);

line(0,y1,x1max,y1);

line(x1max,y1,x1max-10,y1-10);

line(x1max,y1,x1max-10,y1+10);

x1:=round(x1max*a/(a-b));

line(x1,0,x1,y1max);

line(x1,0,x1+10,10);

line(x1,0,x1-10,10);

readln;

closegraph;

end.



Название документа пояснительная записка1.doc

Поделитесь материалом с коллегами:

МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

«СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА №19»

ШКОЛЬНАЯ НАУЧНО-ПРАКТИЧЕСКАЯ КОНФЕРЕНЦИЯ



Построитель графиков функций


Авторы: Бураков Андрей

Кузьмин Александр


Научный руководитель:

Коханов Леонид Валерьевич


г.Новочебоксарск 2009 г.

СОДЕРЖАНИЕ



1. Цели и задачи


При решении различных задач естественно-научного цикла (математика, физика, химия, биология, экономика) приходится часто строить графики различных функций. В школьном курсе это чаще всего это функции одной переменной, выраженной в виде y = f(x).

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

Однако зачастую аналитическое выражение функции может быть чрезвычайно сложным, и для построения ее графика нужны более серьезные знания, либо внешний вид графика представить вообще невозможно.

В таких случаях может помочь компьютерная программа – построитель графиков функций.

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

Для достижения этой цели возникают следующие задачи:

  1. Выбор способа построения графика функции

  2. Подбор математический аппарата для решения проблемы и построение математической модели

  3. Компьютерная реализация на языке Паскаль.

2. Математическая модель


Поскольку необходимо написать компьютерную программу, строящую график практически любой функции, заданной выражением y = f(x), прежде всего необходимо выбрать способ построения графика. Разнообразные аналитические методы, подвластные человеку, для компьютерной реализации слишком сложны, поэтому просто воспользуемся способом построения графика «по точкам».

При построении графика функции «по точкам» необходимо построить таблицу зависимости y=f(x), нанести точки с соответствующими координатами на координатную плоскость и постараться соединить эти точки плавной линией.

Казалось бы, ничего сложного в данном построении нет, поскольку в языке программирования Паскаль имеются соответствующие графические возможности: прямоугольная декартова система координат, графические примитивы для построения точек и отрезков, выбор цветов для графических построений. Однако возникает ряд проблем.

Обычная прямоугольная декартова система координат на плоскости выглядит так:

hello_html_m616b600a.png

При этом координаты точки (x,y) выражаются действительными (вещественными) числами.

Графические возможности Паскаля гораздо более ограничены. Координатная плоскость компьютера представляет собой систему координат стандарта VGA 640x480 точек с 16-цветной палитрой.

hello_html_m355778a8.png

При этом координаты точки (x,y) выражаются строго целыми числами в соответствующих диапазонах: от 0 до 639 по x и от 0 до 479 по y.

Очевидно, данных диапазонов совершенно недостаточно, и если мы построим график в этих координатах, он будет сильно ограничен, искажен и к тому же зеркально отображен относительно оси Ox.

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

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

Для этого нам потребуются некоторые сведения из области математики.

Договоримся вначале, что наша функция задана на некотором отрезке [a,b] и непрерывна на этом отрезке (например, случай деления на нуль приведет к ошибке). В этом случае известно, что функция на данном отрезке достигает своего минимального и максимального значений ymin и ymax.

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

В результате график функции будет ограничен неким прямоугольником: отрезком [a,b] по оси Ox и отрезком [ymin , ymax] по оси Oy.


hello_html_m385501f.png


Теперь наша задача заключается в отображении этого прямоугольника на прямоугольник экрана VGA 640x480 с перевертыванием по оси Oy.

Обозначим новые координаты соответственно через x1 и y1, а ограничения через x1max=639 и y1max=479.

В результате мы должны получить аналогичную картинку в системе координат x1, y1:

hello_html_m7a88849b.png

Для данного построения требуется произвести преобразования отрезков:

f1: [a , b] – [0 , x1max]

f2: [ymin , ymax] – [0 , y1max]


Другими словами, требуется произвести растяжение (сжатие) по осям при помощи указанных преобразований. Для этого нужно воспользоваться сведениями из области аналитической геометрии, а именно, уравнением прямой, проходящей через две данные точки (x1,y1) , (x2,y2)

hello_html_30519f71.gif

(в данном случае (x1,y1) , (x2,y2) - координаты двух точек в системе координат (x,y) )

Это уравнение нам потребуется для построения наших функций f1 и f2.

Построим аналитическое выражение для функции f1:

hello_html_m4ce6dd96.png

hello_html_495dcfc.gif


или после соответствующих преобразований:


hello_html_c3e4768.gif


Для нашей программы эта формула перепишется в формате Паскаля:


x1:=round(x1max*(x-a)/(b-a))


Аналогично построим аналитическое выражение для функции f2:

hello_html_m232d2ca6.png

hello_html_ma8f8d5a.gif


или после соответствующих преобразований:


hello_html_m43a8c869.gif


Для нашей программы эта формула перепишется в формате Паскаля:


y1:=round(y1max*(y-ymin)/(ymin-ymax)+y1max)


Стандартная функция round используется для округления чисел до целого.

Для построения графика функции вначале переведем графический курсор в начальную точку, а затем воспользуемся циклом по x в пределах от a до b, каждый раз строя отрезок из последней точки до следующей шагом s при помощи оператора -line(x1,y1), где координаты x1 и y1 вычисляются при помощи указанных формул.


После построения самого графика функции необходимо построить реальные оси Ox и Oy.

Ось Ox переходит в ось Ox1, ее уравнение в реальных координатах имеет вид y=0. Пересчитаем координату y в y1, а затем воспользуемся оператором

line(0,y1,x1max,y1)

Ось Oy переходит в ось Oy1, ее уравнение в реальных координатах имеет вид x=0. Пересчитаем координату x в x1, а затем воспользуемся оператором

line(x1,0,x1,y1max)


Тем самым поставленная задача будет решена.

3. Компьютерная реализация


В качестве вводных данных в программе будут использованы начало и конец отрезка и шаг вычислений a, b, s.

Сама функция задается в разделе function.

После этого определяем минимальное и максимальное значение функции на этом отрезке ymin и ymax.

Затем происходит инициализация графики, определение цветов и собственно построение графика при помощи оператора -line(x1,y1).

В конце программы строятся реальные оси координат Ox и Oy.

Ниже приводится текст программы на языке Паскаль:

program grafic;

uses graph;

const x1max=639;

y1max=479;

var gd,gm,x1,y1:integer;

x,y,ymin,ymax,a,b,s:real;


function f(x:real):real;

begin

f:=; {задание функции}

end;


begin

write('a=');readln(a);

write('b=');readln(b);

write('s=');readln(s);

ymin:=f(a);

ymax:=f(a);

x:=a;

repeat

y:=f(x);

if y

if y>ymax then ymax:=y;

x:=x+s

until x>b;

gd:=detect;

initgraph(gd,gm,'');

setcolor(lightred);

setbkcolor(black);

x:=a;

y:=f(x);

x1:=0;

y1:=round(y1max*(y-ymin)/(ymin-ymax)+y1max);

moveto(x1,y1);

repeat

y:=f(x);

x1:=round(x1max*(x-a)/(b-a));

y1:=round(y1max*(y-ymin)/(ymin-ymax)+y1max);

lineto(x1,y1);

x:=x+s

until x>b;

setcolor(yellow);

y1:=round(y1max*ymin/(ymax-ymin)+y1max);

line(0,y1,x1max,y1);

line(x1max,y1,x1max-10,y1-10);

line(x1max,y1,x1max-10,y1+10);

x1:=round(x1max*a/(a-b));

line(x1,0,x1,y1max);

line(x1,0,x1+10,10);

line(x1,0,x1-10,10);

readln;

closegraph;

end.


Выберите курс повышения квалификации со скидкой 50%:

Автор
Дата добавления 15.10.2016
Раздел Информатика
Подраздел Научные работы
Просмотров56
Номер материала ДБ-263504
Получить свидетельство о публикации

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