Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3_s2.doc
Скачиваний:
3
Добавлен:
01.09.2019
Размер:
377.86 Кб
Скачать

1.5. Результаты счета

После трансляции программы, исправления синтаксических ошибок и запуска программы на выполнение откроется окно аналогичное окну формы (рис.1.1). Пользователь может осуществить ввод исходных данных, указав в полях объектов Edit1Edit5 значения левой и правой границы интервала [ab], шага h изменения аргумента, параметров Icmax и U0, и щелкнув кнопку Button1; для каждого значения аргумента вычислить значение функции и вывести эти значения на экран в виде таблицы, щелкнув кнопку Button2; завершить работу программы, щелкнув кнопку Button3. На рис.3.2 показан результат, полученный с помощью программы при следующих исходных данных a=-5, b=5, h=1, Icmax=3, U0=5.

Рис.3.2. Результат построения таблицы значений функции

Итак, с помощью разработанной программы построена таблица значений функции f(x)=Icmax(1‑Uz/U0)2 (зависимости изменения тока от напряжения). Как видно из таблицы заданная функция монотонно убывает на интервале [a, b], где a=–5, b=5 Значения функции в точках a,b соответственно равно f(a)=12, f(b)=0.

2. Построение графика функции

2.1. Общие сведения

График функции дает наглядное представление о характере ее изменения при изменении ее аргумента. Построенный график можно использовать для анализа поведения функции: выбора интервала, где функция обращается в ноль, возрастает, убывает, имеет экстремумы и т.д. Обычно график функции строится по точкам (xi, f(xi)), которых должно быть достаточное количество, чтобы правильно отразить характер изменения функции. При ручном построении выбирается объект, на котором будет строиться график (лист бумаги, ватмана, миллиметровки, или их часть), рисуются координатные оси, выбирается масштаб, определяющий цену деления по оси абсцисс и по оси ординат. Масштаб зависит как от размеров объекта, на котором отображается график, так и от диапазонов изменения аргумента и функции. Имеющиеся точки (xi, f(xi)) отображаются в соответствии с выбранным масштабом на координатной плоскости (по оси абсцисс откладывается значение аргумента, по оси ординат – значение функции). Далее точки соединяются линиями для получения графика.

Аналогичные действия выполняются при компьютерном построении графика. При этом в качестве объекта для графика выбирается экран монитора или графический объект (прямоугольное окно) на экране монитора. Следует иметь в виду, что размеры графического объекта измеряются в пикселях (графических точках) и зависят от установленного разрешения экрана монитора. Отсчет начинается с левого верхнего угла графического объекта и ведется в целых числах, начиная от 0 как по горизонтали (слева направо), так и по вертикали (сверху вниз).

2.2. Постановка задачи

Пусть имеется таблица значений функции, т.е. последовательность значений аргумента xi, i=1,…,n, и последовательность значений рассматриваемой функции f(xi). Требуется построить график функции.

2.3. Метод и алгоритм решения задачи

Если функция задана аналитических выражением, то сначала следует построить таблицу ее значений, как это делалось в предыдущей лабораторной работе. Допустим, что построение графика будет производиться на графическом объекте размерами nxny. Далее определяется как разница между максимальным xmax и минимальным xmin значениями диапазон изменения аргумента (обозначается через dx=xmaxxmin и, соответственно, диапазон изменения функции (dy=fmaxfmin). Затем вычисляется коэффициенты масштабирования по оси ординат и оси абсцисс соответственно.

. (3.1)

Пересчет значений координат производится по формулам

. (3.2)

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

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

  1. Ввод исходных данных: совокупности значений аргумента и функции.

  2. Вычисление диапазона изменения аргумента dx=ba.

  3. Вычисление максимального, минимального значений и диапазона изменения функции dy=fmaxfmin.

  4. Вычисление коэффициентов масштабирования по формулам (3.1).

  5. Для каждой точки (xi, f(xi)) производится пересчет координат по формулам (3.2).

  6. Каждые две соседние точки соединяются прямой линией.

  7. Останов.

2.4. Реализация алгоритма в С++ Builder

График строится на основе данных, полученных в таблице на Рис.3.2. Для отображения графика могут использоваться объекты Image и Chart вкладки панели Additional визуальных компонент, а также собственно форма (объект Form1).

Увеличивая вправо по ширине размер Form1, вставим на образовавшееся свободное место объект Image. Он предназначен для вывода изображений. Установим его размеры по ширине (поле Width вкладки Properties инспектора объекта) и высоте (поле Height) по 360 пикселей. Объект Image содержит дополнительные свойства Pen и Canvas. Pen определяет характеристики карандаша (пишущего элемента) и включает свойства: Color – цвет, Width – толщина и др.). Canvas обеспечивает прямой доступ к изображению и имеет набор методов для проведения графических построений: MoveTo(x, y) – установить карандаш в точку с координатами x, y; LineTo(x, y) – провести линию от текущей позиции карандаша до точки с координатами x, y.

Добавим на свободное место Form1 еще одну кнопку Button4, для которой в поле Caption введем название "График". Определим для события Click кнопки Button4 обработчик в виде кода

void __fastcall TForm1::Button4Click(TObject *Sender)

{

int x0, y0;

float t, dx, dy, z, ymin, ymax;

/* Определение размеров окна для графика */

x0 = Image1->Width;

y0 = Image1->Height;

/* Вычисляем масштаб */

ymin=Y[0]; ymax=ymin;

for(int i=1; i<M; i++) { /* находим максимум и минимум */

if(ymin>Y[i]) ymin = Y[i];

if(ymax<Y[i]) ymax = Y[i];

}

t=0; /* определения начала отсчета по оси абсцисс */

dx=x0/(M-1); /* определения шага по оси абсцисс */

dy=y0/(ymax-ymin); /* определения коэффициента масштабирования

оси ординат */

ymax=ymax*dy;

/* Рисуем горизонтальную координатную ось */

Image1->Canvas->MoveTo(0, ymax);

Image1->Canvas->LineTo(x0, ymax);

/* Рисуем вертикальную ось */

Image1->Canvas->MoveTo(0,0);

Image1->Canvas->LineTo(0, y0);

/* Задаем характеристики карандаша */

Image1->Canvas->Pen->Color=clBlue;

Image1->Canvas->Pen->Width=1;

/* Рисуем график */

Image1->Canvas->MoveTo(t, ymax-Y[0]*dy);

for(int i=1; i<M; i++) {

z = Y[i]*dy;

t = t+dx;

Image1->Canvas->LineTo(t, ymax-z);

}

}

После запуска программы и ее отладки (исправления ошибок) должен получиться результат, как показано на Рис.3.3.

Рис. 3.3. Результаты работы программы построения графика функции

При рисовании графика прямо на форму (объект Form1) в коде программы следует внести следующие изменения

- определения размеров окна для графика

x0 = Form1->Width;

y0 = Form1->Height-50;

- определения начала отсчета по оси абсцисс

t = x0/2;

- определения шага по оси абсцисс

dx = t/(M-1);

Кроме того, вместо имени объекта Image1 следует указывать всюду объект Form1.

2.5. Построение графика с помощью компонента Chart

Объект Chart специально предназначен для построения графиков. При этом не требуется заботиться о масштабировании графика, это делается автоматически. Надо только определить для него некоторые его свойства, и правильно указать какие значения должны откладываться по оси абсцисс и по оси ординат. Разместим на форме объект Chart1 и кнопку Button5. Для определения таких свойств как Titles (Заголовки) и Series следует выполнить команду Edit Chart… (редактирования) контекстного меню (появляющегося при наведении курсором на объект Chart и нажатии правой кнопки мыши). C помощью кнопки Add на закладке Chart | Series диалогового окна свойств Chart1 добавим график Series. Событие Click кнопки Button5 будем использовать построения графика. Код программы в этом случае будет выглядеть так:

void __fastcall TForm1::Button5Click(TObject *Sender)

{

float x;

Series1->Clear();

x=a;

/* Рисуем график в CHART */

for(int i=0; i<M; i++) {

Series1->AddXY(x, Y[i]);

x=x+h;

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]