Приложение 2
ОПИСАНИЕ ПРОГРАММЫ COMCAL
Программа COMCAL предназначена для вычисления комплексных функций от комплексных переменных и решения системы линейных уравнений n-ной степени с комплексными переменными. Все комплексные или действительные постоянные должны быть предварительно введены с помощью операции присвоения и фактически ничем не отличаются от переменных. Характерной особенностью синтаксиса записи операций является использование прописных (заглавных) букв для обозначения констант и переменных, поскольку строчные используются для обозначения функций. В качестве примера программы на языке системы рассмотрим программу с4_007.сс, имеющуюся на прилагаемой к книге дискете и содержащую расчет схемы из трех элементов (задача 1 из методических указаний к разделу 4.2). Строки, на которых должны выполняться операции, пронумерованы для удобства пояснений, в реальной программе номера строк отсутствуют. Текст программы с4_007.сс
Сразу после запуска программы сс.ехе можно начать редактировать текст. Первые две строки начинаются с ! и представляют собой комментарий. Затем следуют строки, задающие исходные данные с помощью операций присвоения. Это уже исполняемые строки, и после того, как нажата клавиша Enter, выполняются следующие операции: производится вычисление значения переменной из выражения, записанного в текущей строке, на нижние табло выводится результат вычислений и курсор переводится на следующую строку. Когда курсор находится на какой-либо строке, возможно как ее редактирование, так и вычисление значения переменной при нажатии на клавишу Enter. Отметим, что в строке 14 для вычисления комплексного выражения для полной мощности применяется запись сопряженного значения потребляемого тока, для чего перед обозначением тока поставлен знак &. После того, как программа вычислений написана, можно получить все результаты, проходя строки программы, начиная с первой, с помощью нажатия клавиши Enter. При проходе пустых строк и строк комментария на табло будут появляться нулевые значения (программа эти невычисляемые строки игнорирует). В результате выполнения операций на пронумерованных вычисляемых строках нашего примера в нижних табло экрана будут появляться следующие значения компонентов комплексных переменных:
№ |
Real |
Imag |
Abs |
Arg, рад |
Arg,градП |
1 |
+5.0000000Е+01 |
+О.ОООООООЕ+00 |
+5.0000000Е+01 |
+О.ОООООООЕ+00 |
+00° 0'0" |
2 |
+6.0000000Е+01 |
+0,ОООООООЕ+00 |
+6.0000000Е+02 |
+О.ОООООООЕ+00 |
+00°0'0" |
3 |
+2.0000000Е-01 |
+0,ОООООООЕ+00 |
+2.0000000Е-01 |
+О.ОООООООЕ+00 |
+00°0'0" |
4 |
+3.9800000Е-05 |
+О.ОООООООЕ+00 |
+3.9800000Е-05 |
+О.ОООООООЕ+00 |
+00° 0'0" |
5 |
+1.0000000Е+02 |
+О.ОООООООЕ+00 |
+1.0000000Е+02 |
+О.ОООООООЕ+00 |
+00°0'0" |
6 |
+О.ОООООООЕ+00 |
+6.2831853Е+01 |
+6,2831853Е+01 |
+1.5707963+00 |
+90°0'0" |
7. |
+3.1382548Е+01 |
+2.9968126Е+01 |
+4.339300Е+01 |
+7,6234753Е-01 |
+43°40'45" |
8. |
-О.ОООООООЕ+00 |
-7.9977358Е+00 |
+7.9977358Е+00 |
-1.5707963Е+00 |
-90°0'0" |
9 |
+3.1382548Е+01 |
-5.0009233Е+01 |
+5.9040559Е+01 |
-1.0103761Е+00 |
-57°53'25" |
10 |
+9.0030005Е-01 |
+1.4346609Е+00 |
+1.6937509Е+00 |
+1.0103761Е+00 |
+57°53' 25" |
11 |
+1.1459732Е+00 |
+2.3460058Е-01 |
+1.697401Е+00 |
+2.0192731Е-01 |
+11°34'10" |
12 |
-2.4567315Е-01 |
+1.2000603Е+00 |
+1.2249490Е+00 |
+1.7727236Е+00 |
+101°34' 10" |
13 |
-1.4740389Е+01 |
+7.2003619Е+01 |
+7.3496941Е+00 |
+1.7727236Е+00 |
+101°34'10" |
14 |
+9.0030005Е+01 |
-1.4346609Е+02 |
+1.6937509Е+02 |
-1.0103761Е+00 |
-57°53' 25" |
Кроме вычисления последовательности отдельных выражений программа позволяет решить систему уравнений порядка n по заданной матрице комплексных коэффициентов. Свободный член уравнения задается в той же матрице последним столбцом. Порядок матрицы и соответственно системы уравнений определяется переменной size, которая может быть задана выражением или константой. Далее решается система вида: A(l,l)*x(l)+A(l,2)*x(2)+...+A(l,n)*x(n)=A(l,n+l); A(n,l)*x(l)+A(n,2)*x(2)+...+A(n,n)*x(n)=A(n,n+l). Коэффициент А(1,1) задается операцией присвоения с помощью некоторого выражения в следующем формате: @1 1=1+1*5, что соответствует записи A(l,l)=l+i*5. Пример записи системы уравнений второго порядка, имеющей вид: x(l)+(l+i*5)*x(2)=i*7; 5*x(l)+i*8*x(2)=7, приведен ниже: size 2 @11=1 @1 2=1+1*5 @1 3=i*7 @21=5 @2 2=i*8 @23=7 compute
Проходя строки этой программы с помощью нажатия на клавишу Enter, мы будем в нижней строке получать значения коэффициентов, а после завершения операции compute получим и значения х(1), х(2), записанные в последовательности строк, начиная с верхней строки экрана. Однажды написанная программа может быть сохранена на диске и снова вызвана для проведения вычислений с помощью соответствующих команд верхней командной строки. При вызове программы необходимо ввести полный путь к файлу с расширением *.сс, в котором эта программа записана, и, получив сообщение "загрузка прошла успешно", нажать последовательно клавиши Esc и Ctrl-PgUp. Основное меню представляет собой краткое описание программы, соответствующее традиционному разделу помощи (Help). Оно имеет подсвеченные ключевые слова, позволяющие переходить при желании к более подробным описаниям отдельных моментов текста.
Основное меню
Функции Операции Константы Команды Синтаксис Режимы "Горячие клавиши" О программе Далее приведена информация об отдельных пунктах меню, представленная в Help, которая содержит следующие разделы
Функции
Программой вычисляются следующие комплексные функции комплексных переменных: Тригонометрические: sin - вычисляется по формуле: sin z = (exp(jz)-exp(-jz+)/2j, cos - вычисляется по формуле: cos z = (exp(jz)+exp(-jz))/2, tg - вычисляется по формуле: tgz = sin z/ cos z, дает ошибку, если cos z = О, etg - вычисляется по формуле: tgz = cos z/ sin z, дает ошибку, если sin z = О, Обратные тригонометрические: arcsin - вычисляется по формуле: arcsin z = ln(jz+sqrt(l-z*z))/j, arccos - вычисляется по формуле: arccos z = ln(z+sqrt(z*z-l))/j, arctg — вычисляется по формуле: arctg z = ln(sqrt((l+jz)/(l-jz))/j, дает ошибку, если z = j или z = -j, arcctg - вычисляется по формуле: arctg z = ln(sqrt((j+z)/(j-z))/j, дает ошибку, если z = j или z = -j, Гиперболические: sh - вычисляется по формуле: sh z = (exp(z)-exp(-z))/2, ch - вычисляется по формуле: ch z = (exp(z)+exp(-z))/2, th — вычисляется по формуле: th z= sh z/ ch z, дает ошибку, если cos z = О, cth - вычисляется по формуле: th z = sh z/ ch z, дает ошибку, если sin z = О, Обратные гиперболические: arsh - вычисляется по формуле: arsh z = ln(z+sqrt(z*z+l)), arch - вычисляется по формуле: arch z = ln(z+sqrt(z*z-l)), arth - вычисляется по формуле: arth z = ln(sqrt((l+z)/(l-z))), дает ошибку, если z = 1 или z = -1, arcth - вычисляется по формуле: arcth z = ln(sqrt((z+l)/(z-l))), дает ошибку, если z = 1 или z = -1. Степенные и логарифмические: ехр - вычисляется по формуле: exp z = exp(x)-*cos(y)+j*sin(y)) при z=x+j*y, In — вычисляется по формуле: In z = ln(r)+j*f при z=r*exp(jf), дает ошибку, если z = О, lg - вычисляется по формуле: lg z = ln(z)/ln(10), дает ошибку, если z = О, sqrt - вычисляется по формуле: sqrt z = sqrt(r)**(cos(i/2)+j*sin(f/2)) при z=r*exp(jf),
Операции
Программой предусматриваются следующие бинарные (над двумя переменными) и унарные (над одной переменной) операции: Бинарные операции - нуждаются в двух аргументах справа и слева от знака операции. Все бинарные операции выполняются слева направо с учетом скобок. Эти операции имеют самый низкий приоритет, причем сначала выполняются следующие операции: * - умножение комплексных величин; / - деление комплексных величин; # - вычисление сопротивления для параллельного соединения двух комплексных сопротивлений; " — операция возведения комплексного числа в комплексную степень; $- запись комплексного числа в экспоненциальной форме; После этого выполняются такие операции, как: + — сложение комплексных чисел; — — вычитание комплексных чисел; , — запись комплексного числа в алгебраической форме. Унарные операции - нуждаются в одном агрументе слева от знака операции. Все бинарные операции выполняются справа налево с учетом скобок. Эти операции имеют наивысший приоритет. К унарным операциям относятся следующие: - я— унарный минус, изменяет знак перед действительной и комплексной частями при записи в алгебраической форме, или знак модуля при записи в экспоненциальной форме; + - унарный плюс, изменяет знак перед действительной и комплексной частями при записи в алгебраической форме, или знак модуля при записи в экспоненциальной форме; &- выполняет операцию замены аргумента на комплексно-сопряженный. Взятие функции одного аргумента также считается унарной операцией.
Константы
Стандартные константы: i или j - мнимая единица, в алгебраической форме записывается в виде (0,1); р-число р, равное 3.14159265358979 Радианные константы: Это действительные числа, выражающие углы в радианной мере. Градусные константы: Задают углы в градусной мере в формате: 'Градусы' Минуты' Секунды. Например, запись '90'12'50 соответствует 90 градусов 12 минут 50 секунд, запись '87 - 87 градусов.
Команды
Функциональные клавиши реализуют следующие команды: F1 - войти в справочную систему, F2 - сохранить программу в текстовом файле *.сс F3 - вставить строки из текстового файла перед текущей строкой, F4 - получить листинг, F5 - очистить экран, F8 - вызвать командный процессор MS-DOS, F9 - вернуться в Norton Commander, F10 - выйти из программы используются стандартные текстовые файлы с длиной строки не более 78 символов
Синтаксис
Строки: Пустая строка - игнорируется программой, при прохождении этой строки ничего не происходит, в нижних табло высвечивается комплексное число равное нулю; Комментарий - строка, начинающаяся с !; Выражение - совокупность постоянных и переменных, связанных знаками операций и скобками. Операторы: size - выделяет необходимый объем памяти для системы уравнений, порядок которой определяется выражением, все коэффициенты в системе обнуляются; compute — оператор решения системы уравнений. Оператор решает систему. = - оператор присвоения, вычисляет значение переменной или коэффициента системы уравнений. Лексемы: Скобки - (), {}, [], о Остальные лексемы рассмотрены выше. К ним относятся функции, константы, операции и переменные. Лексемы могут отделяться друг от друга произвольным числом пробелов (от 0 и более), исключение составляют функции, между которыми должен быть по крайней мере один пробел.
Режимы
Цвет: При вызове этого раздела меню можно установить три различных цветовых режима экрана: IBM цветной; IBM черно-белый; Mazovia Обозначение мнимой единицы: Этот раздел меню позволяет выбирать для обозначения мнимой единицы символ j или i. Иногда (всегда) с порядком (Е): Этот раздел меню позволяет либо выбрать принудительный вывод величин в формате с фиксированной точкой (если выбирается режим всегда) либо оставить определение формата вывода за программой (если выбирается режим иногда). Способ выражения радианных величин выбирается из трех следущих: Режимы для установки величин: Этот пункт меню позволяет установить один из следующих способов представления угловых величин - в радианах, в радианах*p или в градусах.
"Горячие" клавиши
Меню: Перечисляются клавиши осуществляющие движение по строкам меню. Home - к первому элементу меню; End - к последнему элементу меню; Esc - выход из меню; вниз,вправо,Tab - к следующему элементу меню; вверх,влево, Shift+Tab - к предыдущему элементу меню; Enter - выбрать элемент меню. Строка: Перечисляются клавиши команд текстового редактора, применяемого при написании строки программы вычислений. —>/<—- на символ вправо / влево; CTRL+—>, CTRL+<—, - на слово вправо / влево; Home / End - к первому / последнему символу; Backspace - удалить символ слева от курсора; Del - удалить символ, указываемый курсором; Esc - удалить все символы строки; Insert - изменение режима вставки / замены. Прочие: Перечисляются клавиши команд, применяемые для движения по тексту программы в процессе редактирования и вычислений. 4. / Т - на строку вниз / вверх; Ctrl+Home / Ctrl+End - к началу / концу экрана; PgUp / PgDn - на страницу вверх / вниз; Ctrl+ PgUp / Ctrl+ PgDn - к началу / концу программы; Серый + / серый - - удалить / вставить строку Enter - вычислить строку.