Графическое отображение результатов
Запуская пример с игрой, приведенный в конце предыдущего пункта, можно узнать только, кто выиграл. Чтобы проследить за перипетиями игры, нужно воспользоваться ключевым словом export(имя). По сути, это — функция, которая в процессе счета собирает все значения величины, указанной ее аргументом. После завершения счета собранные данные автоматически выводятся в виде графика.
Следующие формулы отличаются от рассмотренных в предыдущем пункте наличием двух функций export(), по одной для каждого из игроков:
Борис = 0
do
Аркадий = Аркадий + random(1)
Борис = Борис + random(1)
export(Аркадий)
export(Борис)
until(Аркадий = 10 Or Борис = 10)
Результат таков:
По горизонтальной оси всегда откладывается номер цикла, а по вертикальной – значение переменной в этом цикле. В данном случае – это количество выигрышей того или ного игрока. Видно, что борьба была напряженной – вперед выходил то один игрок, то другой.
Чтобы выяснить, как можно управлять графиками лучше всего запустить формулы в калькуляторе "Школьная доска".
При наведении указателя мыши на узловые точки графика появляется подсказка с координатами этой точки, то есть номер цикла и значение переменной.
Меню в правом верхнем углу полотна графиков позволяет распечатать графики или сохранить как изображение в форматах jpeg или png.
Щелчок мышью по элементу легенды, расположенной внизу полотна, прячет/показывает соответствующий по цвету график. Причем после удаления самого высокого(низкого) графика все остальные перестраиваются так, чтобы занять всю высоту полотна.
Точность отображаемых на графиках значений та же, что и у чисел, выводимых в окно калькулятора (то есть определяется числом, стоящим в поле "Знаков после 0").
Графики, построенные на большом числе точек можно масштабировать и затем смещать с помощью мыши. Это означает, что выделенная мышью область, более узкая, чем полотно, автоматически растягивается на всю ширину полотна. Получившееся окно можно перемещать вдоль горизонтальной оси с тем, чтобы в подробностях рассмотреть графики и на соседних участках. Операцию масштабирования можно повторять несколько раз, пока не будут видны все подробности поведения графиков.
Управляется этот процесс всего двумя кнопками, появляющимися в правом верхнем углу полотна при выделении области. Левая кнопка позволяет смещать окно, а правая снимает масштабирование и восстанавливает исходный вид графика.
Чтобы продемонстрировать полезность масштабирования, рассмотрим формулы, табулирующие функцию y = sin[1/(|x-0.5| + 0.000001)] на интервале [0, 1].
h = 0.00001
do
y = sin[1/(|x-0.5|+0.000001)]
x = x+h
export(y)
until(x>=1)
Получаем следующий график:
Как ведет себя график посередине, то есть в окрестности точки x = 0.5, (количество циклов – 50000), абсолютно не ясно. Выделим интервал от x = 0.49 до x = 0.51:
Снова ничего не видно. И, наконец c четвертого раза в диапазоне от x = 0.4996 до x = 0.5004 получим требуемое:
Например, теперь можно сказать, что в точке x = 0.5 имеется локальный максимум, в котором функция принимает значение y = -0.66.
Функции export() в принципе можно располагать, где угодно. Но нужно понимать, что сохраняемые ими значения зависят от их местоположения, а именно: захватывается текущее значение аргумента на момент выполнения этой функции. Поэтому рекомендуется помещать функции export() только в циклы и, желательно, в конце тела цикла.
Если имеется несколько циклов, последовательных или вложенных в друг друга, то функцию export() одного и того же аргумента лучше размещать во всех этих циклах, чтобы собрать всю информацию об изменении наблюдаемой величины.
То же относится и к блокам конструкций ветвления типа if...endif, которые будут рассмотрены в следующем параграфе.
И, наконец, аргументом функции export() может быть любое математическое выражение. Например, можно перейти к логарифмической шкале, заменив export(y) на export(ln(y)).