Вывод графика функции на ЭКВМ


Главная / ЭКВМ / Программы для ЭКВМ / Математика

график функции sin x/x на экране МК-152

В отличие от зарубежных моделей графических калькуляторов ЭКВМ "Электроника МК-152" и "Электроника МК-161" не имеют встроенных средств для автоматического вывода графиков функций. Это связано с принципиальным отличием в подходах к развитию малой вычислительной техники.

Современные зарубежные графические научные и программируемые калькуляторы являются узкоспециализированным инструментом, который предназначен в первую очередь для решения учебных математических задач. Соответственно и применение эти калькуляторы находят в основном в среде учащихся и преподавателей. В нашей стране образование еще не окончательно переведено в русло формального подставления ответов в тесты, поэтому и такие калькуляторы спросом не пользуются.

Часто встречающийся в сравнительных таблицах для различных микрокалькуляторов пункт "вывод графиков функций" является не вполне корректным. Например, совместимый с IBM PC/AT персональный компьютер при помощи встроенного программного обеспечения (BIOS) не может выводить графики. В операционных системах для персональных компьютеров тоже нет этой функции. Тем не менее, при помощи дополнительных загружаемых программ вывод графиков вполне возможен.

"Электроника МК" представляет собой универсальную клавишную электронную вычислительную машину, которая, при помощи соответствующего программного обеспечения, может выполнять задачи в пределах своих функциональных возможностей независимо от области применения.

В ЭКВМ на уровне системы реализована библиотека графических функций, позволяющая выводить на экран любое изображение. Рассмотрим, каким образом можно использовать их для вывода графика произвольной функции.




Программа "График функции y=f(x)"

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

  x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
00x 0 РР П 90 01 РР П 90 10 К НОП К НОП К НОП
01x ИП А ИП В K max Р П 21 - Р П 19 1
02x 2 8 ÷ Р П 24 F x=0 32 2 4 0
03x БП 46 ИП С ИП D K max Р П 22 - Р П
04x 20 F x=0 50 2 6 0 РР П 90 26 С/П
05x 0 Р П 27 Р П 29 Р ИП 21 Р П 25 Р ИП
06x 25 Р ПП 03 00 F x≠0 94 Р ПП 02 10
07x F x≥0 94 6 4 - F x<0 94 Р ИП 29 F x≠0
08x 99 Р ИП 28 Р ИП 27 РР П 90 12 РР П 90
09x 00 Р БП 01 12 0 Р П 29 БП 91 ИП Е
10x Р П 29 Р ИП 28 Р ИП 27 РР П 90 00 РР П
11x 90 11 Р ИП 25 Р ИП 24 + Р П 25 Р ИП
12x 27 1 + Р П 27 1 2 8 - P x≥0
13x 00 59 0 Р ПП 02 10 F x≥0 56 6 4
14x - F x<0 56 Р ИП 28 0 РР П 90 00
15x 1 2 7 РР П 90 12 0 Р ИП 21 -
16x Р ИП 19 ÷ 1 2 8 × 0 , 5
17x + K [x] Р П 27 F x≥0 95 1 2 8 -
18x F x<0 95 0 Р ИП 27 РР П 90 00 6 3
19x Р ИП 27 РР П 90 12 К ГРФ РР ИП 90 29 K NOT
20x P x≠0 01 96 С/П            
21x Р ИП 22 - Р ИП 20 ÷ 6 4 × 0
22x , 5 + K [x] 6 3 - Р П 28
23x В/О                  
24x 8Eh E8h A8h A1h AAh A0h 20h 58h 6Dh 69h
25x 6Eh 3Dh 58h 6Dh 61h 78h 00h      
26x 8Eh E8h A8h A1h AAh A0h 20h 59h 6Dh 69h
27x 6Eh 3Dh 59h 6Dh 61h 78h 00h      

Функция, график которой требуется построить, записывается с адреса 300 как подпрограмма. Аргумент передается в регистре X. Результат f(x) должен возвращается в регистре стека Y. В регистре X должно быть число 1 если точка входит в область определения функции и число 0, если не входит. В подпрограмме для хранения результатов промежуточных расчетов можно использовать регистры из диапазона R0-R9.

К примеру, для вывода графика функции y=sin(x)/x с адреса 300 следует записать подпрограмму: F x≠0; 08; B↑; F sin; ↔; ÷; 1; В/О; 1; B↑; В/О.

Очевидно, что в ней проверяется особая точка графика при x=0.

Кстати, точно такие же проверки требуются для корректного отображения этой функции в зарубежных графических калькуляторах с системой компьютерной математики СКМ (CAS). В [1] приведен пример для TI-89/92/92 Plus.


Вторую форму применения оператора If демонстрирует пример на рис...

:sx0(x)
:Func
:If x=0 Then 1: EndIf
:If x≠0 Then: sin(x)/x: EndIf
:EndFunc

  Он задает корректное вычисление функции sin(x)/x с учетом того, что ее значение в точке x=0 равно 1. Здесь дважды использована конструкция If... Then... EndIf.
Обратите внимание на то, что без этого вычисление sin(0)/0 дает неопределенность undef, тогда как sx0(0) вычисляется корректно.



Но вернемся к МК-152. Если требуется дополнительно вывести на экран какие-либо сообщения, можно вместо команд КНОП по выделенным в таблице адресам 007-009 поставить переход к подпрограмме, например Р ПП 0400.

При этом для вывода сообщения y=sin(x)/x следует записать с адреса 400 подпрограмму: 0; B↑; РР П 9000; 2; РР П 9002; 4; 2; 0; РР П 9021; В/О
Эта подпрограмма выводит сообщение с адреса 420 на экран в левый верхний угол. В регистр R9000 заносятся координаты вывода, в R9002 - расстояние между символами. Обращение к R9021 - функция вывода строки на экран из памяти программ.

С адреса 420 следует разместить само сообщение "y=sin(x)/x": 79h, 28h, 78h, 29h, 3Dh, 73h, 69h, 6Eh, 28h, 78h, 29h, 2Fh, 78h. Сообщение следует вводить в режиме "Р ПРГ".

Перед запуском программы в регистры следует занести значения: RA = Xmin, RB = Xmax, RC = Ymin, RD = Ymax. В RE заносится число 0, если график должен состоять из точек и число 1, если требуется соединять точки отрезками. Если используются тригонометрические функции, требуется должным образом установить размерность клавишей "Р-ГРД-Г".

график функции sin x/x

Для выбранной функции укажем: RA = -24; RB = 24; RC = -0,25; RD = 1,2; RE = 1. Размерность - радианы. После запуска программы получим на экране нужное изображение.

Контрольная сумма команд программы, вычисленная для трех страниц начиная с нулевой (адреса 0 до 299) составляет 29506, однобайтовая сумма по модулю 2 - 214. При вычислении предполагается, что по адресам 07-09 расположены команды "К НОП", неиспользуемые байты содержат 0FFh. Если по адресам 07-09 записана команда Р ПП 0400, контрольная сумма будет равна 29501, сумма по модулю 2 - 117.




Структура программы "График функции y=f(x)"

Краткое описание структуры программы приведено ниже в таблице. Программа использует следующие регистры:
RA - Xmin;
RB - Xmax;
RC - Ymin;
RD - Ymax;
RE - 0 для вывода по точкам, 1 - отрезками;
R19 - X1-X0, здесь и далее X0 - действительно минимальное из Xmin и Xmax, X1 - максимальное;
R20 - Y1-Y0, здесь и далее Y0 - действительно минимальное из Ymin и Ymax, Y1 - максимальное;
R21 - X0;
R22 - Y0;
R24 - (X1-X0)/128, приращение на каждом шаге цикла;
R25 - Xi, значение текущей точки в цикле;
R27 - Xgr, координата X на экране;
R28 - Ygr, координата Y на экране;
R29 - текущий признак точка или отрезок.

Значения RA-RE задаются пользователем. Регистры R0-R9 и от R30 и выше, а также прочие области памяти не используются и могут участвовать при вычислении f(x). Например, большое количество регистров или блокнот могут применяться для интерполяции с использованием таблицы значений.

Адрес Выполняемые действия
00-06 Инициализация графического экрана
07-09 Переход к подпрограмме вывода описания функции "Р ПП nnnn" или команды "К НОП" (нет операции)
10-31 Проверка Xmin Xmax и вычисление R19, R21, R24
32-49 Проверка Ymin Ymax и вычисление R20, R22
50-58 Подготовка к циклу вычисления и отрисовки
59-66 Начало цикла, вычисление f(x) и проверка вхождения очередной точки в область определения
67-76 Проверка попадания очередной точки на график при заданных границах отображения
77-80 Проверка рисования графика по точкам или отрезками
81-93 Рисование очередного отрезка графика
94-98 Сброс признака рисования отрезками после разрыва или выхода за границы области
99-111 Рисование очередной точки графика
112-131 Конец цикла, инкремент счетчика
132-155 Проверка видимости оси абсцисс X и ее отрисовка
156-194 Проверка видимости оси ординат Y и ее отрисовка
195-203 Вывод графика, ожидание нажатия любой клавиши и останов программы
210-231 Вычисление экранной координаты для Y
240-256 Сообщение "Ошибка Xmin=Xmax"
260-276 Сообщение "Ошибка Ymin=Ymax"
300-...<nnnn Подпрограмма вычисления y=f(x). Аргумент в X. Возврат в Y-значение, в X - признак (1-есть точка, 0-нет)
nnnn-... Может быть подпрограмма вывода сообщения на экран. Для этого записать по адресам 007-009 команду "Р ПП nnnn"
Примечание. Пропущенные в описании адреса в программе не используются



Размер экрана ЭКВМ - 128x64 точки, вся графическая область находится в распоряжении пользователя. Размеры доступной для вывода области экрана даже в лучших современных зарубежных графических калькуляторах составляют: CFX-9850GB/CFX-9950GB Plus - 126x62, 3 цвета; HP-48/HP-49 - 131x64; TI-89 - 159x77; TI-92/92 Plus - 239x103 точек, часть экрана зачастую занимает постоянно выводимое меню. При таком разрешении говорить о какой-либо наглядности не приходится и реальное применение этим графикам придумать затруднительно.




Литература

  1. Дьяконов В.П. Современные зарубежные микрокалькуляторы - М.:СОЛОН-Р, 2002. - 400 с. - С. 362.


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)