|
||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[37] тывать искажение формы графика,регулируемое параметрами процедуры GetAspectRatio(xx, yy). Для вывода графика без искажения формы кривой следует переназначить координаты области экрана так, чтобы получить Ky=K*Kx, где K=xx/yy. Операторы для автоматического масштабирования приведены ниже в модуле GR F для различных случаев, определяемых значением параметра "pr". 1: pr = 1. Пусть заданы нижняя, верхняя и левая границы области построения графика: down, up, left. Необходимо найти значение right при условиях: Ky = K * Kx и right<=GetMaxX. Если условие ограничения графика по длине экрана не выполняется, то полагается right:=GetMaxX; и значение "up" корректируется (уменьшается). 2: pr = 2. Пусть заданы левая, правая и нижняя границы области построения графика: left, right, down. Необходимо найти значение up при условиях: Kx = Ky / K и up>=0. Если условие ограничения графика по высоте экрана не выполняется, то полагается up:=0; и значение "right" корректируется (уменьшается). 4). Строим оси координат (начало координат x = 0, y = 0 ). 5). Строим график процедур BGI: виде последовательных отрезков используя аналоги графических for i:=2 to N do moveto G(x[1], y[1]); lineto G(x[i], y[i]); Ниже приводятся операторы модуля GR F, наращивая который аналогами графических процедур BGI можно строить графики в расчетной области. Unit GR F; {$N+} { модуль GR F } { подключение сопроцессора} INTERFACE Var right, left, down, up: integer; Y max, Y min: double; procedure mash( c, c1, pr:word); procedure oci; procedure Lineto G(x1, y1:double); { аналог графической процедуры Lineto} k xy, kx, ky, X max, X min, { описание глобальных переменных { c - номер цвета линий} { c1 - номер цвета фона } IMPLEMENTATION Uses Graph; PROCEDURE mash; Var xx, yy: word; xg m, yg m:integer; Begin xg M:=GetMaxX; yg M:=GetMaxY; { ----- ввести операторы контроля заданных значений глобальных переменных ---- } { X min < X max; 0 <left< right <xg M; Y min < Y max; 0 <down <up <yg M } GetAspectRatio(xx, yy); k xy:=xx/yy; ky:=(down-up)/(Y max-Y min); kx:=(right-left)/(X Max-X min); case pr of{ pr - признак построения графиков } 1: begin kx:=ky/k xy;{pr=1 - без искажения формы, меняя Right} right:= left + Round(kx*(X max- X min)); if right>GetMaxX then begin right:=GetMaxX; kx:=(right-left)/(X Max-X min); ky:=kx*k xy; up:=down - Round(ky*(Y max - Y min)); end; end; 2: begin ky:=kx*k xy;{pr=2 - без искажения формы, меняя Up} up:= down - Round(ky*(Y max- Y min)); if up<0 then begin up:=0; ky:=(down-up)/(Y max-Y min);kx:=ky/k xy; right:=left+Round(kx*(X max-X min)); end; end; end;{pr=0 - в заданной области} Setcolor(c); SetFillStyle(1,c1); bar(left, up, right, down); End; PROCEDURE oci; { оси координат строятся только в пределах заданной области} Var xg0, yg0:integer; BeginXG0:=left - round( kx*X min); YG0:=down + round( ky*Y min); if X MIN*X MAX <=0 then line(XG0, up, XG0, down); if Y MIN*Y MAX <=0 then line(LEFT, YG0, RIGHT, YG0); End; PROCEDURE Lineto G;{рисование линии из текущей позиции курсора} Var xg1, yg1:integer;{т. 1 - конец линии} xg1:= left + Round(kx*(x1- X min)); yg1:= down - Round(ky*(y1- Y min));lineto(xg1, yg1); Приведенное описание размещения графика в прямоугольной области экрана позволяет: выводить кривые по точкам с отрицательными значениями координат, масштабировать график (сжимать/растягивать), изменять цвет фона внутри прямоугольника, задаваемого процедурой Bar(left, up, right, down). Доработать методику для совместного построения нескольких графиков несложно. Необходимо для всех функций определить дискретные координаты y[i] и найти наибольшее и наименьшее значения для всех функций в заданных диапазонах изменения аргументов. Наибольшим значениям присвоить Y MAX и X MAX, а наименьшим - Y MIN и X MIN. Затем определить область для построения графика и координаты точек кривых. Кривые для разных функций желательно рисовать разным цветом с указанием вида функции. Практическое задание N 2. 2 1.Построить графики функций Y1(x) и Y2(x) в двух областях экрана. 2.Построить графики Y1(x) и Y2(x) в одной области экрана. Примечание: использовать библиотеку GR F для построения графиков с автоматическим масштабированием, сохраняющим естественную форму кривой. Необходимо также вывести надпись вида функции и диапазона изменения "х". Вид функций Y1(x) и Y2(x) приведен в таблице:
5 6 7 8 Sin(x) + x Cos(x) *x Cos(x2-4*x-1) (x2-1)/(x4+1) x*(x-3)*(x+1) x2*(x-2)*(x+1) Exp(x) + Exp(-x) x2*Sin(1/x) x*Sin2(1/x) Sqrt(x2+2)*Sin(x) -15 -15 -1 -10 -2 -3 -3 -1 -3 0.1 0.1 0.01 -10 -1 ...15 ...15 ..10 ..10 .. 2 .. 3 .. 1 .. 3 .. 3 ...0.1 .. 5 ...0.1 ..10 ... 1 Sin(x) + x2/10 Sin(x)*x Sin(x2-4*x-1) -x5+2*x3-1 x*(x-3)*(x-1) x2*(x+2)*(x+1) Exp(x)+Exp(-2*x) x3*Sin(1/x2) (x+1)*Sin2(1/x) (x+1)*Sin(x) Практическое задание N 2. 3 1. Построить графики функций Y(x) и Yi(x) в одной области экрана с автоматическим масштабированием по осям координат. Примечание: График функции Yi(x) строится для трех и четырех членов разложения функции Y) в бесконечный ряд Тейлора. Например, для функции Y(x)=exp(x) нужно построить графики Y(x) = exp(x), Y3(x) = 1+x+x2/2!, Y4(x) = 1+x+x2/2+x3/3!. Показатель степени функции Y(x) = (1+x)m "m" - вещественное число. Необходимо вывести надпись вида функции и диапазона изменения "х". Вид функций Y(x) и Yi(x) приведен в таблице: Функция Y(x) Разложение в ряд Тейлора Yi(x) Интервал "x" 1 2 3 4 Ln(1+x) Arctan(x) 1 + x + x2/2! + x3/3! + x - x3/3! + x5/5! - x7/7! + .. 1 - x2/2! + x4/4! - x6/6! + .. 1+m*x+m*(m-1)*x2/2!+m*(m-1)*(m-2)*x3/3!+ x - x2/2 + x3/3 - x4/4 + .. x - x3/3 + x5/5 - x7/7 + .. -3 . . . 2 -3 . . . 3 -3 . . . 3 -0, 9 . . 0, 9 -0, 95 . . 3 -1 . . . 1 Построение графика функции Y = FY(t), X = FX(t). Движение одной точки вокруг другой (полюса) удобно описывать в виде зависимости расстояния "r" между точками от угла "fi" между неподвижной линией (горизонталью) и линией, соединяющей точку с полюсом: r = F(fi). Такая система координат называется полярной. Проекции точки на оси декартовой системы координат находятся по формулам: x= r*cos(fi), y= r*sin(fi). Таким образом получаем неявное задание функции Y от X. Здесь параметром является угол fi. Сформулируем задачу в общем виде. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||||||||