Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Примеры построения графиков функций

Читайте также:
  1. Алгоритм. Свойства алгоритмов. Способы записи алгоритмов. Базовые структуры алгоритмов. Примеры.
  2. Алюминий и его сплавы. Классификация алюминиевых сплавов. Деформируемые алюминиевые сплавы. Дуралюмины, термическая обработка дуралюминов. Примеры, маркировка.
  3. Аппроксимация, интерполяция и экстраполяция функций
  4. Архитктура ПЭВМ. Принципы построения классического ПК.
  5. Бессознательное как философская проблема. Трактовка генезиса содержания и функций бессознательного в классическом психоанализе.
  6. Билет 35. Значение лимбической системы в регуляции различных функций.
  7. Билет 7. Понятие и типология коммуникационного взаимодействия (коммуникативных актов). Примеры.
  8. Билет №13. Крупнейшие действующие издательства России. Распределение мощностей. Государственные и негосударственные издательства в России (примеры).
  9. Бюдж. сист. и бюдж. устр-во. Модели построения бюдж. систем в разных системах гос. устройств.
  10. Бюджетная система и принципы ее построения.

Следующая программа, текст которой приведен в листинге 10.5, используя свойство pixels, выводит график функции у = 2 sin(x) ex/5. Для построения графика используется вся доступная область формы, причем если во время работы программы пользователь изменит размер окна, то график будет выведен заново с учетом реальных размеров окна.

Листинг 10.5. График функции

unit grfunc_;

Interface

uses Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs;

Type

TForm1 = class(TForm)

procedure FormPaint(Sender: TObject);

procedure FormResize(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var Form1: TForm1;

Implementation

{$R *.DFM}

// Функция, график которой надо построить

Function f(x:real):real;

Begin

f:=2*Sin(x)*exp(x/5);

end;

// строим график функции

procedure GrOfFunc;

Var

x1,x2:real; // границы изменения аргумента функции

y1,y2:real; // границы изменения значения функции

х:real; // аргумент функции

у:real; // значение функции в точке х

dx:real; // приращение аргумента

l,b:integer; // левый нижний угол области вывода графика

w,h:integer; // ширина и высота области вывода графика

mx,my:real; // масштаб по осям X и Y

х0,у0:integer; // точка — начало координат

Begin

// область вывода графика

l:=10; // X — координата левого верхнего угла

b:=Form1.ClientHeight-20; //У — координата левого верхнего угла

h:=Form1.ClientHeight-40; // высота

w:=Form1.Width-40; // ширина

x1:=0; // нижняя граница диапазона аргумента

х2:=25; // верхняя граница диапазона аргумента

dx:=0.01; // шаг аргумента

// найдем максимальное и минимальное значения

// функции на отрезке [x1,x2]

y1:=f(x1); // минимум

y2:=f(x1); //максимум

x:=x1;

Repeat

У:= f (х);

if у < y1 then y1:=y;

if у > у2 then y2:=y;

х:=x+dx;

until (x >= х2);

// вычислим масштаб

my:=h/abs(y2-y1); // масштаб по оси Y

mx:=w/abs(x2-x1); // масштаб по оси X

х0:=1;

у0:=b-Abs(Round(y1*my));

Withform1.Canvas do

Begin

// оси

MoveTo(l,b);LineTo(l,b-h);

MoveTo(x0,y0);LineTo(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));{универсальный формат}

TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));

// построение графика

x:=x1;

Repeat

y:=f(x);

Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;

x:=x+dx;

until (x >= x2);

end;

end;

procedure TForm1.FormPaint(Sender: TObject);

begin GrOfFunc; end;

// изменился размер окна программы

procedure TForm1.FormResize(Sender: TObject);

Begin

// очистить форму

form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));

// построить график

GrOfFunc;

end;

End.

Основную работу выполняет процедура GrOfFunc, которая сначала вычисляет максимальное (у2) и минимальное (yl) значения функции на отрезке [x1,x2]. Затем, используя информацию о ширине (Forml.Clientwidth -40) и высоте (Form1.ClientHeight - 40) области вывода графика, вычисляет масштаб по осям X (mх) иY(mу).

Высота и ширина области вывода графика определяется размерами рабочей (клиентской) области формы, т. е. без учета области заголовка и границ. После вычисления масштаба процедура вычисляет координату у горизонтальной оси (уо) и вычерчивает координатные оси графика. Затем выполняется непосредственное построение графика (рис. 10.10).

Вызов процедуры GrOfFunc выполняют процедуры обработки событий onPaint и onFormResize. Процедура TForm1. FormPaint обеспечивает вычерчивание графика после появления формы на экране в результате запуска программы, а также после появления формы во время работы программы, например, в результате удаления или перемещения других окон, полностью или частично перекрывающих окно программы. Процедура TForm1.FormResize обеспечивает вычерчивание графика после изменения размера формы.

Рис. 10.10. График, построенный процедурой GrOfFunc

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




Дата добавления: 2015-02-16; просмотров: 20 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав