Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
xi = Left + шаг * i если первую точку считать с номером 0 и
xi = Left + шаг * (i – 1) если первая точка имеет номер 1.
После того, как выполнены все шесть блоков, можно смело пользоваться циклической операцией построения графика описанной в самом начале данной лекции.
Важное замечание
Необходимо помнить, что экран монитора не квадрат, а прямоугольник, кроме того, исходная область построения графика то же прямоугольник и совсем не обязательно подобный прямоугольнику экрана монитора. Это означает, что коэффициент подобия для координат x может оказаться иным, чем коэффициент подобия для координат y.
Это означает, что преобразованный график, скорее всего, окажется искаженным, с точностью до подобия или по оси Ox или по оси Oy, но это неизбежная плата за возможность просмотреть весь график.
Построение графика в окрестности точек разрыва
Проблема построения графика в такой окрестности заключается в том, что ордината функции изменяется очень быстро на очень маленьком интервале изменения абсциссы, а вы помните, что наш алгоритм проводит преобразование масштабирования графика функции. Это преобразование в случае обработки окрестности точки разрыва приведёт к тому, что большая часть графика будет изображена в очень маленьком масштабе. Математически это будет верно, но получившаяся картинка окажется совершенно ненаглядной, и построение графика потеряет смысл, так как главная функция графика это всё же наглядность.
Как с этим бороться. Идея решения данной проблемы такова – необходимо научится определять точку разрыва, и в её окрестности строить график не проводя вычислений и масштабирования, а схематично, исходя из общих свойств точки разрыва.
Как и в случае с экстремумами и точками перегиба нам нельзя пользоваться точными определениями математического анализа, о причинах этого мы уже говорили. Следовательно, первое, что требуется сделать это дать определение разрыва.
Определить разрыв можно так – точка разрыва это такая точка в окрестности, которой функция изменяется слишком быстро.
Это очень неточное определение. Здесь два неясных термина. Во-первых, непонятно, что значит слишком быстро и, во-вторых, какого размера интервал принимается за окрестность точки разрыва. Однако уже ясно, что под это определение может попасть не только точка разрыва, а и такая точка, в окрестности которой функция просто имеет большую первую производную, то есть изменяется действительно быстро, но это наша плата за возможность проведения численного счета. А теперь займёмся уточнением определения.
Мы будем исходить из того, что в окрестности точки разрыва график строится схематично. Это означает, что график строится неточно, а, следовательно, если окрестность будет велика, то и в целом построение графика будет неточным.
Отсюда возникает первая мысль, что размер окрестности должен быть таким, чтобы визуально окрестность точки разрыва не занимала значительную часть области построения графика. Итак нам необходимо уметь искать окрестности точек разрыва.
Для начала заметим, что в окрестности точки разрыва график функции удовлетворяет следующим свойствам:
1. Функция либо неограниченно растёт, либо неограниченно убывает.
2. Скорость её роста увеличивается также неограниченно.
Эти два свойства помогут нам обнаруживать необходимые окрестности с высокой степенью точности. Введём некоторые обозначения.
Max – верхняя граница значений ординат
Min – нижняя граница значений ординат.
Шаг – шаг изменения абсциссы.
А – начало области построения графика
В – конец области построения графика
Важное замечание. Нам важно не просто найти окрестность, а во-первых, достаточно точно определить абсциссу точки разрыва, а во-вторых, определить тип разрыва, а их может быть два:

Нестрогое описание процесса расчётов
Для поиска точек разрыва, мы пройдём всю область построения с шагом достаточно маленьким, но таким который позволит пройти всю область за разумное время. На каждом шаге процесс будет вычисляться новая абсцисса путем прибавления к предыдущей абсциссе величины шага. Для каждой вновь посчитанной абсциссы будем вычислять ординату, и если посчитанная ордината окажется за пределами отрезка [min, max] то будем предполагать, что найдена окрестность точки разрыва, после чего должен быть запущен процесс проверки этого предположения.
Min – это минимальная из уже посчитанных ординат и max – это максимальная из уже посчитанных ординат.
Процесс проверки предположения заключается в следующем:
· Резко уменьшим шаг движения и сделав ещё некоторое количество шагов убедимся, что функция продолжает изменятся быстрым темпом в том же направлении. Если этого не происходит, то, следовательно, это не окрестность точки разрыва.
· Продолжаем движение вперёд. Если функция скачком изменит направление изменения (разрыв первого типа) или скачком измениться значение ординаты (разрыв второго типа), значит, мы нашли окрестность разрыва.
· Будем сжимать окрестность с сохранением её свойств до тех пор, пока она не станет достаточно маленькой. Её центр и есть точка разрыва.
Строгое описание алгоритма.
Текущая точка = Началу области построения графика
Шаг = Начальное значение шага.
Номер точки разрыва = 0
Минимум = 0
Максимум = 0
Пока текущая точка не достигла конца области построения делать
Начало
Вычислить ординату текущей точки
Если ордината меньше минимума или больше максимума
То
Выполнить функцию поиска разрыва
Если разрыв найден
То
Прибавить к абсциссе текущей точки величину найденной окрестности точки разрыва.
Иначе
Если ордината больше максимума то максимум = ордината
Если ордината меньше минимума то минимум = ордината
Конец
Функция поиска точки разрыва
Шаг = Величина большая текущего шага.
Точка1 = текущая точка
Точка2 = Точка1+Шаг
Если Ордината1 > Ордината2 то Направление = вниз
Если Ордината1< Ордината2 то Направление = вверх
Есди Ордината1 = Ордината2
То результат функции = разрыв не найден, работу прекратить
Повторять
Точка1 = Точка2
Точка2 = Точка1 + Шаг
Если Ордината1 сильно отличается от ординаты2
То Результат функции = разрыв найден
Если Ордината1 > Ордината2 то Направление1 = вниз
Если Ордината1< Ордината2 то Направление1 = вверх
Если Направление1 <> Направление2
То Результат функции = разрыв найден
Конец цикла
Важное примечание
Точка разрыва это объект очень высокой степени сложности. Вряд ли можно построить алгоритм удовлетворительно работающий для любого случая. Данный алгоритм также необходимо рассматривать как общую схему, которую возможно придётся модифицировать для конкретных случаев.
Думаю, вы обратили внимание, что некоторые понятие здесь не вполне определены. Например не ясно что означает фраза “Ордината1 сильно отличается от ординаты2”
Алгоритм построения графика функции:
1. Ввести начало математической системы координат. Масштаб (количество пикселей в единичном отрезке).
2. Нарисовать оси координат и сделать разметку (это может быть либо сетка, либо просто насечки на осях). Сделать оцифровку.
3. Построить график. Для этого:
· Перебрать все экранные координаты х (от 0 до 639).
· Перевести каждый х – экранный в х – математический. (хэ=а+хм*m, откуда получаем хм=( хэ-а)/ m, где (а, в) – координаты точки начала математической системы координат, m – масштаб).
· Проверить входит ли найденное хм в область определения функции, график которой мы строим.
· Вычислить ум (ум=f(хм)).
· Перевести ум в уэ (уэ=round(b - ум)).
· Изобразить точку с координатами (хэ, уэ) на экране монитора.
Задачи: Построить графики функций: у=х2; у=sinx; у=
; у=1/х.
Диаграммы.
Пусть нам дан массив из чисел, необходимо на экране изобразить столбчатую диаграмму так, чтобы каждому числу соответствовал свой столбик, причем пропорциональность столбцов и чисел должна соблюдаться. Все столбики должны быть разных цветов и рядом с ними должно стоять число им соответствующее, желательно около координатной прямой проставить порядковый номер каждого столбца.
Алгоритм построение столбчатой диаграммы:
1. Ввести массив из чисел.
2. В исходном массиве найти максимальный элемент, и для него определить масштаб для построения столбиков (например, l=round(450/max)).
3. По количеству элементов определить ширину каждого столбика диаграммы (например, m=round(600/n), где n – количество элементов массива).
4. Строить каждый столбик, для чего использовать процедуру изображения прямоугольника, размеры которого определяются следующим образом: ширина стандартна для всех – это m, высота определяется индивидуально для каждого числа, например h=l*a[i].
5. Возле каждого столбика проставлять его числовое значение и порядковый номер (пользоваться функцией str).
Задача: Построить столбчатую диаграмму, если в исходном массиве есть еще и отрицательные числа.
{Пример построения столбиковой диаграммы}
program BarDiagram;
uses crt, graph;
{N - количество элементов исходных данных}
{Name - наименования элементов исходных данных}
{Num - числовые значения элементов исходных данных}
const
N=6;
Name:array[1..N] of string=('1997','1998','1999','2000','2001','2002');
Num:array[1..N] of integer=(10,5,8,11,2,7);
var
Dr, Rg, MaxX, MaxY, X0,Y0,S, I,X1,Y1,X2,Y2,S1:integer;
M:real;
Nm:string;
begin
{Инициализация графического режима}
Dr:=detect;
initgraph(Dr, Rg,'');
{Определение начальных параметров}
cleardevice; {Очистка экрана}
MaxX:=getmaxx; {Определение максимальной координаты по X}
MaxY:=getmaxy; {Определение максимальной координаты по Y}
X0:=40; {Отступ от края экрана до рамки по вертикали}
Y0:=20; {Отступ от края экрана до рамки по горизонтали}
S:=round((MaxX-4*X0)/N); {Определение ширины одного столбца}
X1:=2*X0+2; {Начальная координата по X для первого столбца}
Y1:=MaxY-2*Y0+2; {Конечная координата по Y для всех столбцов}
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |


