Текст
                    

МИКРО КАЛЬКУЛЯТОРОВ „Электроника МК-52" и „Электроника МК-61 кисе «ТЕХН1КА» МВ»
7 32.974 Т76 УДК 681.321 Трохименко Я. К. Т76 Программирование микрокалькуляторов «Электро- ника МК*52» и «Электроника МК-61».— К.; Техника, 1987.— 208 с., ил.— Библиогр.: с. 207. 60 к. 60 000 экз. В практическом пособии описаны особенности использования новых массовых программируемых микрокалькуляторов. Рассмотрена методика программирования и составления оптимальных программ решения разно-' образных технических задач. Приведено 240 программ автомати- ческого решения типовых задач. Рассчитано на инженерно-технических работников; использующих в своей работе микрокалькуляторы, а также может быть полезно сту- дентам вузов. _2405000000-025 сс 0_ T“M20W87~ 32.974 Рецензенты: Ю. Л1. Польский, канд. физ.-мат. наук Ю. С. Фишман Редакция литературы по энергетике, электронике, кибернетике и связи Зав. редакцией 3. В, Божко Практическое руководство Ярослав Карпович ТРОХИМЕНКО, д-р техн, наук Программирование микрокалькуляторов «Электроника МК-52» и «Электроника МК-61» Редактор Е. К, Артёменко Оформление художника Е. И. Прокофьева Художественный редактор В. С. Шапошников Технический редактор С. М. Ткаченко Корректор Л. В, Ляшенко Информ, бланк № 3631 Сдано в набор 21.07.86. Подписано в печать 16.12.86. ЕФ 38426. Формат 84xlO8J/si. Бумаги тнпогр. №2 . Гарн. лит. Печ. выс. Усл. печ. л. 10,92. Усл. кр.-отт. 11.24. Уч.-изд. л, 12. Тираж 60 000 Экз. Зак, 6-32£. Цена 60 к. Издательство «TexniKa», 252601, Киев-I, Крещатик, а. Книжная фабрика нм. И. fl. Фрупзе, 310057, Харыгав-57, Донец-Захаржсв- Сиого, 6/8. (§> Издательство «Техника», 1987
ПРЕДИСЛОВИЕ Решения XXVII съезда КПСС предусматривают широкое внедрение вычислительной техники во все отрасли народного хо- зяйства. Для этого необходимо массовое освоение потенциальны- ми пользователями особенностей применения ЭВМ с учетом его экономической целесообразности. В решении этой задачи большое значение приобретают программируемые микрокалькуляторы (ПМК), являющиеся наиболее доступным классом универсальных ЭВМ и отличающиеся высокой надежностью, портативностью, простотой эксплуатации и низкой стоимостью машинного времени. ПМК незаменимы, если требуется относительно мощное носимое вычислительное средство, а их применение экономически оправ- дано во всех случаях, когда решение задачи с помощью ЭВМ дру- гих классов оказывается более дорогостоящим. Применение ПМК особенно существенно при массовом изучении основ информатики учащимися и специалистами, когда стоимость используемой для обучения вычислительной техники и ее эксплуатации имеет перво- степенное значение. В настоящей книге рассмотрены особенности пользования и со- ставления программ (программирование) ПМК «Электроника МК-52» и «Электроника МК-61», отличающихся от ранее выпускае- мых ПМК большими вычислительными возможностями, эффектив- ная реализация которых требует и более высокой квалификации пользователей. При решении сложных задач основные затраты вре- мени связаны с составлением оптимальных программ. Для умень- шения этих затрат времени предназначена занимающая значитель- ную часть объема книги библиотека из 240 программ решения наиболее часто встречающихся математических задач, к которым сводится большая часть разнообразных прикладных задач. Отзывы и пожелания просьба направлять по адресу; 252601, Kuta у, Крещатик, 5, издательство «Техника».
ГЛАВА 1 ОСОБЕННОСТИ ПОЛЬЗОВАНИЯ ПМК 1.1. АЛГОРИТМЫ И ПРОГРАММЫ Программируемые микрокалькуляторы (ПМК) «Элек- троника МК-52» и «Электроника МК-61» отличаются от ра- нее выпускаемых ПМК большими емкостью памяти и чис- лом автоматически вычисляемых функций. Кроме того, в ПМК «Электроника МК-52» предусмотрена возможность длительного хранения программ автоматических вычисле- ний и числовых данных при выключенном питании, а так- же обращения к различным внешним (периферийным) уст- ройствам. Эти ПМК обеспечивают успешное решение до- статочно сложных научных, инженерных, экономических и игровых задач при умении пользователя составлять или, по крайней мере, использовать программы решения таких задач на входном языке ПМК. Решение задачи состоит из нескольких этапов, и выпол- нение необходимых для решения действий является лишь одним из них. При постановке задачи необходимо прежде всего формализовать ее условия, связав исходные данные с требуемым результатом. Затем следует выбрать метод (общий подход) решения задачи, обеспечивающий получе- ние результата с требуемой точностью, и способ реализа- ции этого метода определенной последовательностью дей- ствий (операций). Лишь после этого можно приступить к непосредственному выполнению этих операций и провер- ке приемлемости полученного результата. В простейших случаях человек мысленно выполняет теоретическую часть решения задачи и сразу же присту- пает к выполнению необходимых действий. Однако в бо- лее сложных случаях ему обычно приходится затрачивать много времени на рациональный выбор пути решения за- дачи на каждом этапе. Так, еще на этапе формализации условий задачи необходимо по имеющейся информации составить по возможности более простую, но достаточно точную математическую модель исходных условий в виде системы уравнений или геометрических построений, свя- зывающих исходные данные с требуемым результатом ре- шения задачи. Одну и ту же задачу можно решить различными мето- дами. От удачного выбора метода существенно зависит как 4 трудоемкость последующих этапов решения задачи, так и точность результата. При этом практически все методы относятся либо к прямым (точным), когда заранее точно известно требуемое число операций, либо к косвенным (мето- дам последовательных приближений), когда число опера- ций заранее неизвестно, так как их выполнение прекраща- ют лишь после получения результата с требуемой точ- ностью. Способ решения конкретной задачи отображают алго- ритмом. — конечным перечнем описаний операций, вы- полнимых исполнителем алгоритма и приводящих к иско- мому результату. Алгоритмы решения задачи представ- ляют словесно-формульными описаниями, схемами и про- граммами. Словесно-формульное описание составляют в виде последовательности обозначаемых порядковыми но- мерами шагов алгоритма, содержащих однозначные опи- сания операций. Эти описания, называемые также коман- дами, предписаниями, инструкциями или операторами*, относятся к одному из двух основных типов — операторов присваивания и условных операторов. Оператор присваивания описывают предложением вида «пусть 1 = А», где после ключевого слова (имени опера- тора) «пусть» слева от знака равенства записывают иден- тификатор (имя) переменной, которой после выполнения оператора присваивается значение, равное числу А, значе- ние переменной с именем А или результат вычислений по выражению А. Так, оператор «пусть х = х + 1» означает, что в дальнейшем переменной х присваивается значение, на единицу большее предыдущего. Вместо ключевого слова «пусть» используют и другие слова, например «принять» или «вычислить». Оператор при- сваивания соответствует операциям с однозначно опреде- ляемым результатом, которым в логических операторах не .обязательно является число А, характерное для арифме- тических операторов присваивания. Так, команда «Пре- кратить вычисления» является логическим оператором при- сваивания и формально может быть представлена предло- жением «пусть х = 0», где х — скорость решения задачи. Условный оператор или оператор условного перехода отображают предложением вида «если выполнено условие У, то перейти к шагу ..., иначе перейти к шагу Следо- * Оператор — тот, кто (или то, что) управляет выполнением операции. В математике оператором называют обозначаемое неко- торым символом правило, ставящее в соответствие результаты вы- числений исходным данным. 5
вателыю, дальнейший ход решения задачи изменяется в за- висимости от результатов проверки выполнения условия У оператором условного перехода. Разветвления алгорит- ма после условных операторов иногда приходится упоря- дочивать о помощью оператора безусловного перехода, обозначаемого словами «безусловный переход на ...» или «идти на ...» с указанием шага перехода. Алгоритмы решения задач для наглядности представ- ляют также схемами, в которых операторы присваивания обозначают прямоугольниками, а условные операторы — ромбами с выходами «Да» и «Нет» для перехода соответ- ственно при выполнении и невыполнении проверяемого Рис. 1. условия. Блоки схемы, содержащие операторы, соединяют линиями со стрелками, указывающими последовательность выполнения операций, а начало и конец алгоритма обычно обозначают овалами. Ключевые слова «пусть» или «если» на схемах часто опускают, сохраняя в надписях на блоках лишь символы операций присваивания и проверяемых ус- ловий. Структура алгоритмов в основном определяется опера- торами условных переходов, так как при их отсутствии алгоритм образуется неразветвленной последовательностью операторов присваивания. В зависимости от направления переходов после условных операторов различают прост, е или сложное разветвления алгоритма (рис. 1, а и б) и про- стой или сложный цикл (рис. 1, в и г). Операции в цикле обычно выполняются многократно (однократное выполне- ние этих операций называют итерацией) до выполнения условия выхода из цикла, проверяемого условным опера- тором. Сложность алгоритма зависит от возможностей его на- полнителя. Если он не умеет или не может выполнить опи- сание операции, то последнее приходится заменять переч- нем более простых выполнимых операций. В качестве при- мера рассмотрим подсчет числа возможных размещений из п по т различных предметов. Для большинства людей алгоритм решения этой задачи достаточно описать форму- лой А7 = п (п — 1) (л - 2) ... (п — т + 1), но для человека, умеющего выполнять только отдельные арифметические операции, этот алгоритм должен быть представлен более подробным описанием, например. 1. Принять а = р = п. 2. Принять а = а— 1. 3. Если а = п — т, то перейти к шагу 6, иначе — к шагу 4. 4. Принять р = р X а. 5. Перейти к шагу 2. 6. Принять А? = р- 7 Закончить вычисления. В этом описании шаги 3 и 5 содержат соответственно Рис. 2. операторы условного и безусловного переходов, а осталь- ные шаги — операторы присваивания. Этот алгоритм, как наглядно видно на схеме (рис. 2), содержит сложный цикл, выход из которого обеспечивается условным опе- ратором при получении искомого резуль- тата. Алгоритм решения задачи может выпол- няться не только человеком, но и автома- том (например, цифровой ЭВМ), содержа- щим устройства для распознавания, хране- ния и выполнения операторов алгоритма. В этом случае алгоритм составляется на языке, слова которого «понятны» ЭВМ и вводятся в последовательности, допус- каемой конструкцией машины. Такие языки называют входными языками или языками программирования ЭВМ, представление ал- горитмов с их помощью - - программами, составление а программ — программированием. Входные языки (подобно естественным) характери- зуются алфавитом, образованным множеством определен- ных символов, словами из допустимых и имеющих самостоя- тельный смысл сочетаний символов алфавита, а также лексическими правилами формирования слов и синтак- сическими правилами, определяющими допустимым поря- док следования слов. Последовательность слов входного 6 7
языка, отображающая алгоритм решения задачи, обра- зует программу, вводимую в запоминающие устройства ЭВМ с клавиатуры входного устройства нажатиями кла- виш с обозначениями символов алфавита. В цифровых ЭВМ информация отображается последо- вательностью символов 0 и 1 по правилам выбраннного бинарного (двоичного) кода. Минимальное количество ин- формации соответствует одной бинарной позиции с симво- лом 0 или 1 и называется битом. Восемь бит называют бай- том, 1024 бита — килобитом, а 1024 байта — килобайтом. Бинарные сообщения характеризуются форматом, опреде- ляющим общее число бит, выделенных для сообщения каж- дого типа, и, при необходимости, их распределение между различными частями сообщения. Числа в бинарных кодах обычно представляют в пози- ционной двоичной системе счисления с цифрами 0 и 1. Напомним, что в позиционных системах счисления с осно- ванием т используют цифры 0, 1, .... т— 1, отображаю- щие нуль и первые т — 1 членов натурального ряда чисел. В таких системах счисления числа представляют в естест- венной форме (g фиксированной запятой) последовательно- стями аг ... a_t ... a_s цифр а{ в i-x позициях, назы- ваемых /и-ичными разрядами, Значащая цифра а0 перед запятой отображает соответствующее натуральное число, но в каждом левом разряде та же цифра отображает в т раз большее число, чем в соседнем правом разряде. В дроб- ной части значащая цифра отображает в т раз меньшее чис- ло, чем в соседнем левом разряде. Следовательно, ш-ичное представление связано g десятичным представлением (ха- рактерным для представления натурального ряда чисел) din соотношением d10 = armr + ... 4- а^т1 + аот° 4- а^тГ1 + ... + a^sm~s, (I) причем п ~ г ф- 1+ s разрядами щ-ичного представления числа можно отобразить десятичные представления чисел в диапазоне т~<л+1) < dla < ш’1 — 1. (2) Таким образом, единицы в разрядах двоичного пред- ставления соответствуют числам: аг ,д5 а^ а§ а% а-^ а^ а~^ а_% , . . <i_s 2-' ... 128 32 16 8 4 2 11/2 1/4... 1/2*. Например, двоичное представление числа da = 0101,0101 соответствует десятичному представлению d10 = 4 + 1 +
+ 0,25 + 0,625 = 5,875. Так как разрядность (число раз- рядов) двоичных представлений чисел определена выбран- ным форматом, то в «-разрядной двоичной записи нулями заполняют все разряды, не содержащие значащих цифр (единиц). Для ЭВМ кроме двоичной системы счисления исполь- зуют и другие бинарные представления чисел, например десятично-двоичное или код 8421, в котором каждый деся- тичный разряд отображается четырьмя двоичными (табл. 1). Число d10 = 5,875 в таком коде отображается десятично- двоичным представлением du!2 = 0101,100001110101. 1. Представление первых членов натурального ряда чисел в системах счисления с основанием т оэ ем О о со О о О' X $0 и II 1! 11 II II II II 11 II Е Ё е Е е Е g Е Е Ё 00 00000000 оооооооо 00 00 13 00001101 00010011 15 0D 01 00000001 00000001 01 01 14 00001!10 оооююо 16 0Е 02 00000010 00000010 02 02 15 00001111 00010101 17 0F 03 00000011 0000001! 03 03 16 00010000 00010110 20 10 04 00000100 00000100 04 04 17 00010001 00010111 21 11 05 00000101 00000101 05 05 18 оооюою 00011000 22 12 06 00000110 00000110 06 06 19 00010011 00011001 23 13 07 00000111 00000111 07 07 20 00010100 00100000 24 14 08 00001000 00001000 10 08 21 00010101 00100001 25 15 09 00001001 00001001 И 09 22 00010110 ооюоою 26 16 10 ооооюю 00010000 12 О.А 23 00010111 00100011 27 17 II 00001011 00010001 13 0В 24 0001IOOO 00100100 30 18 12 0000 И00 00010010 14 ОС 25 00011001 00100101 31 19 Часто используют также системы счисления с основа- нием, кратным 2 и удобным для перехода к двоичному пред- ставлению. Примером может служить шестнадцатеричное представление чисел с цифрами 0, 1, .... 9, А, В, С, D, Е, F, где латинскими буквами обозначают цифры, отображающие соответственно натуральные числа от 10 до 15. Каждый шестнадцатеричный разряд отображается четырьмя двоич- ными. Шестнадцатеричное представление числа die = = A9F,E соответствует двоичному представлению d.2 = = 101010011111,1110, десятичному представлению dw = = 10 • 16s + 9 • 161 15 • 16° 4- 14 16-1 = 2719,875 и, следовательно, десятично-двоичному представлению с!10/г = = 0010011100011001,10000!110101. При бинарном представлении чисел в естественной форме один бит должен выделяться для знака числа (символом 1 обычно отображают отрицательный знак) и несколько — 9
для указания положения запятой. При показательной (с плавающей запятой) форме представления десятичных чисел а — М. 10" форматом предусматривается выделе- ние двух бит для знаков мантиссы М и порядка п, опреде- ленное число битов для их значащих цифр и, если положе- ние запятой в мантиссе не фиксировано, для указания на место запятой. Передачу информации в бинарных кодах с символами J и 0 обеспечивают соответственно включением (импуль- сом) и выключением (паузой) электрического напряжения в течение равных отрезков времени, называемых тактами. п ГТПЛ ЕТШЬНШШ] Д . I I I * Л 1,1 J/l/1 I I 1/|/Wl I I |/|^|-ДЙ7ТЖ^ ц Ha|/|/I I |/|g|/H-7FWl I l/H/UwiW А i'lgpl'l ИМИ ad d Рис. 3. ШЛ~1 fWrn FWT71 Д1Я хранения (регистрации) и преобразования п-битовых бинарных сообщений используют регистры, образованные соединением п электронных ячеек, принимающих под воз- действием управляющих сигналов состояния («включено» и «выключено»), соответствующие символам 1 и 0. Состоя- ние регистров обычно подчиняется следующим правилам: 1. При подаче импульса напряжения на выключенную ячейку (состояние 0) она включается (состояние 1). 2. При подаче импульса на включенную ячейку она выключается, а импульс напряжения передается на сосед- нюю левую ячейку. 3. По команде управления состояние всех ячеек регист- ра может сдвигаться на одну ячейку влево. В соответствии g этими правилами подключение на каж- дом такте очередной ячейки регистра к общей шине с вход- ным сигналом обеспечивает запись и последующее хранение бинарного сообщения (рис. 3, а). Для пересылки сообще- ния из одного регистра в другой содержимое обоих регист- 10
ров на каждом такте двигается влево, и содержимое край- ней левой ячейки одного регистра на каждом такте засыла- ется в крайнюю правую ячейку другого регистра (рис. 3, б). Для сохранения сообщения в исходном регистре содержимое его крайней левой ячейки засылают в край- нюю правую ячейку (рис. 3, в), но еще чаще применяют параллельную пересылку информации за один такт (рис. 3, а). При подаче импульсов напряжения на крайнюю правую ячейку регистр выполняет функции счетчика импульсов (рис. 4, а), а при записи бинарного представления числа в регистр с записанным другим числом этот регистр в соответствии с приведен- ными правилами выполня- ет функции сумматора дво- ичных представлений чисел (рис. 4, б). Сложение чи- сел в двоичной системе счисления выполняется по тем же правилам, что и в других позиционных систе- мах счисления. Например, сложение натуральных чи- сел II + 3 = 14 отобра- жается записью 10 11 0 0 11 1110 ' и при последовательном сложении выполняется за п. тактов, соответствующих п битам представления числа в выбран- ном формате. Для ускорения сложения обычно используют сумматоры параллельного типа на нескольких регистрах Для хранения слагаемых, результата вычислений и пере- носимых в следующие разряды единиц. Так как любые вычисления в ЭВМ сводятся к выполнению последователь- ности арифметических операций, а последние могут быть сведены к операциям сложения, то сумматоры обеспечи- вают выполнение любых вычислений, Последовательности символов 0 и 1 (бинарные сообще- ния), отображающие команды управления, операнды (чис- ла! над которыми выполняются операции) и другую инфе р- мацию, требуемую для реализации алгоритма решения за- дачи, образуют программы на языке низшего уровня бинар ных кодов. Такие программы непосредственно вводились i I
с входного устройства ЭВМ первого'(лампового) поколения, но это требовало значительных затрат времени как на со- ставление, так и на ввод программ. Поэтому ЭВМ стали снабжать ассемблерами — устройствами для автоматиче- । ского формирования микропрограмм (программ в бинарных кодах, элементы которых соответствовали импульсам и пау- зам управляющих напряжений) при нажатии клавиш вход- '] ного устройства g обозначениями легко запоминаемых со- I четаний букв и цифр, соответствующих простейшим опера- || ЦИЯМ. Однако программирование на языках ассемблеров, поз- I воляющее полно использовать все возможности ЭВМ, ока- I зывается достаточно трудоемким и мало доступным ши- I рокому кругу пользователей ЭВМ. Поэтому еще в ЭВМ второго поколения (на дискретных полупроводниковых элементах) стали использовать трансляторы-интерпрета- торы — устройства для автоматического формирования сложных микропрограмм, реализующих вводимые с вход- ного устройства операторы языка программирования вы- сокого уровня, практически соответствующие шагам (операторам) алгоритма. Подобные входные языки высоко- го уровня стали называть алгоритмическими. В большинстве алгоритмических языков для отображе- ния переходов предусмотрены специальные символы, на- зываемые метками. В некоторых языках метки записыва- ются перед каждым шагом (оператором) программы, соот- . ветствуя порядковым номерам шагов алгоритма. Приме- ром может служить «язык для начинающих» БЕЙСИК, в котором каждый оператор начинается с порядковой цифровой метки. В этом языке операторы присваивания содержат ключевое слово LET (пусть), после оператора безусловного перехода GOTO (идти на) записывается метка, стоящая перед оператором, к которому выполняется пере- ход, а в условных операторах IF ... THEN ... после слова IF (если) записывают проверяемое условие и после слова I THEN (тогда) — метку оператора, выполняемого следую- щим при удовлетворении проверяемого условия (в про- тивном случае следующим выполняется оператор с мет- кой, следующей по порядку за меткой условного опера- । тора). I Алгоритм, представленный схемой на рис. 2, отобра- жается на языке БЕЙСИК программой ,1 10 LET А = Р = п 11 20 LET А = А — I 30 IF А = М THEN 60
40 LET P = P X A 50 GOTO 20 60 PRINT P 70 END Следовательно, в рассмотренном случае каждый шаг алгоритма отображен оператором программы, в связи с чем подобные языки и называют алгоритмическими. В некото- рых из этих языков метки записываются только перед опе- раторами, к которым имеются переходы. Например, на языке АНАЛИТИК рассматриваемый алгоритм представ- ляется программой: «ПУСТЬ» Я «РАЗРЯДНОСТЬ» 8 А = А — 1; Р = Р X А Ml «ВЫЧИСЛИТЬ» А «ЕСЛИ» А=М «ТО» «НА» М2 «ВЫЧИСЛИТЬ» Р «НА» Ml М2 «ВЫВОД» Р «КОНЕЦ» «ВЫПОЛНИТЬ» А =Р =п, М = т «НА» Я В этой программе метка Я предназначена для начала выполнения программы, Ml — для безусловного перехода и М2 — для перехода при удовлетворении условия, про- веряемого условным оператором. При выполнении подобных программ вызов числовых данных из памяти и засылка в память результатов вычисле- ний выполняются автоматически в соответствии с кодами идентификаторов (имен) переменных, но в этом случае ресурс памяти не всегда используется полностью. Программируемые микрокалькуляторы создавались в 70-х годах, когда запоминающие устройства отличались относительно большими габаритными размерами и стои- мостью. Поэтому во входных языках ПМК предусмотрены специальные операторы присваивания (называемые опе- раторами обращения к памяти) вида «пусть х = PN» для вызова из памяти содержимого регистра N и «пусть PN = х» для засылки в память результатов операций, что обеспечивает полное использование ресурса памяти. Программы на алгоритмических языках вводят в память или в накопители информации ЭВМ с алфавитно-цифрового 13
печатающего устройства набором отдельных букв, цифр и Других знаков, являющихся элементами алфавита. Клз виатура таких устройств содержит большое число клавиш и непригодна для малогабаритных ПМК- Поэтому алфави- тами входных языков ПМК служат множества символов операторов или составляющих их команд, обозначенных на нажимаемых клавишах. В этом случае операторы при- сваивания вводятся неформально без ключевых слов, и про- грамма на входном языке ПМК внешне напоминает про- грамму на языке ассемблера. В действительности, как показано далее, входные языки ПМК являются алгоритми- ческими языками программирования высокого уровня, обеспечивающими непосредствен- ное представление каждого ша- га алгоритма оператором про- граммы. Рис, 5, 1,2. входной язык Входные языки (языки про- граммирования) ПМК непосред- ственно связаны с конструктив- ными особенностями ЭВМ этого класса. ПМК «Электроника МК- 61» (рис. 5) и «Электроника МК-52» (рис. 6) снабжены чис- ловой памятью из 15 адресуе- мых (с произвольной выборкой) регистров с шестнадцатеричны- ми номерами 0, 1, ..., 9, А, В, С, D, Е для хранения бинар- ных представлений десятичных чисел (в естественной восьми- разрядной форме или в пока- зательной форме с восьмиразряд- ной мантиссой и двухразряд- ным порядком) и программной памятью емкостью 105 байт для хранения кодов шагов программы автоматических вычис- лений. Кроме того, ПМК «Электроника МК-52» содержит электрически перепрограммируемое запоминающее устрой- ство (ППЗУ) емкостью 512 байт для длительного хранения числовых данных и программ автоматических вычислений. В конструкции этого ПМК предусмотрена также возмож- ность записи в программную память программ автомати- ческих вычислении, постоянно хранящихся в сменных бло- 14
кал расширения памяти (БРП), и обмена информацией с дру- гими периферийными устройствами, - Рассматриваемые ПМК используют в различных режи- мах работы. В рабочем режиме («автоматическая работа») вычислительные задачи можно решать обычным для непро- граммируемых микрокалькуляторов (ручным) способом, при котором каждая операция программы вычислений вы- полняется ПМК автоматически по командам, подаваемым нажатиями клавиш. Основной способ решения задач с по- мощью ПМК связан с предварительным вводом программы вычислений в программную память в режиме программиро- вания или, для ПМК «Электроника МК-52», перезаписью Рис. 6. программы из ППЗУ или периферийного устройства в про- граммную память в режиме обмена информацией или ин- терфейсном режиме. После ввода исходных данных в число- вую память в рабочем режиме и, при необходимости,- по- шаговой проверки программы автоматических вычислений по команде пуска она автоматически выполняется в про- граммируемом режиме. Основным устройством ввода информации в ПМК явля- ется пульт управления с переключателями и клавиатурой. Переключатель ВКЛ предназначен для включения и вы- ключения питания (при выключении памяти содержимое чис- ловой и программной памяти стирается, но содержимое ППЗУ сохраняется), переключатель Р-ГРД-Г — для вы- бора размерности аргумента тригонометрических функций в радианах, градусах или десятичных градусах (градах), равных сотым долям прямого угла. В ПМК «Электроника МК-52» они дополнены переключателями С-З-СЧ и Д-П, обеспечивающими обмен информацией между ППЗУ или периферийными устройствами и числовой или программной памятью. 15
Клавиатура предназначена для ввода обозначенных на ней условными символами служебных и программных ко- манд. Служебные команды (табл. 2) обеспечивают переход к нужному режиму работы, редактирование и отладку программ автоматических вычислений, выполнение подго- товительных операций перед ее пуском и, для ПМК «Элек- троника МК-52», обмен информацией с ППЗУ и периферий- ными устройствами. Отнесенные к служебным префиксные команды-модификаторы F и К предназначены для умень- шения числа клавиш, обеспечивая использование одних и тех же клавиш для ввода нескольких команд. Например, нажатие клавиши /— / изменяет знак числа, но при пред- варительном нажатии клавиши F обеспечивает переход из режима программирования в рабочий режим («автома- тическая работа»), символ АВТ которого обозначен слева над клавишей, а при предварительном нажатии клавиши К выполняется оператор логического сложения, символ V которого обозначен слева над клавишей. 2. Служебные команды Команда Нажимаемые клавиши Очистить регистр-счетчик шагов Занести адрес ab в регистр-счетчик шагов Выполнить в рабочем режиме один щаг про- граммы автоматических вычислений Перейти в программируемый режим из рабочего Перейти в режим программирования из рабо- чего Увеличить на единицу содержимое регистра- А"-- тэ ПРМ/ГЛШ Перейти в мирования . ____,J МЦС pet ИСТj счетчика шагов в режиме программирования Уменьшить на единицу содержимое регистра- счетчика шагов в режиме программирования л " рабочий режим из режима програм- Запошшгь адрес участка памяти ППЗУ Выполнить обмен информацией Ввести команду, обозначенную над или слева над клавишей, нажимаемой следующей Устранить последствия ошибочного нажатия клавиши F Ввести команду, обозначенную справа над кла- I вишен, нажимаемой следующей, или оператор косвенной адресации • 16 |В/б| |БП| ~а'| |Ь| |ПП| СТ jF| |ПРГ| |шг] !шг! jFj 'АВТ) iATi о |F| IK! Символы остальных команд, а также команд В/О, С/П, БП и ПП (являющихся служебными только в рабочем ре- жиме) образуют алфавит, из одного или нескольких элемен- тов которого формируются вводимые нажатиями соответ- ствующих клавиш слова входного языка программирова- ния. Подлежащие и сказуемые естественных языков во входном языке отображаются операндами (числами, над которыми выполняются операции) и операторами, управ- ляющими выполнением операций. В программах операнды отображаются операторами вы- зова из памяти или набора чисел — набора цифр от 0 до 9, запятой (вводимой только после набора одной или не- скольких Цифр), оператором / — / изменения знака и, при показательной форме представления чисел, оператором ВП ввода порядка, после которого набирают цифры поряд- ка и при необходимости вводят оператор / — / для отрица- тельных порядков. Таким образом, словами входного языка являются опе- раторы (включая и операторы набора чисел), составленные из одного или нескольких элементов алфавита в соответ- ствии с лексическими правилами формирования слов и об- разующие словарный запас входного языка. Полный словар- ный запас входного языка рассматриваемых ПМК пред- ставлен в табл. 3, где указано смысловое содержание опе- раторов, символы клавиш (обозначенные над клавишами, если они нажимаются после префиксных), нажимаемых для ввода операторов, двузначные шестнадцатеричные кода операторов, высвечиваемые на индикаторе в режиме программирования, и символы операторов, используемые в настоящей книге. Так как число операторов превышает 100, то для их ко- дирования выбрана шестнадцатеричная система счисле- ния, согласно формуле (2) обеспечивающая при двух раз- рядах формирование 255 различных кодов. Для экономии питания шестнадцатеричные цифры А, В, С, D, Е в кодах операторов и кодах п номеров N регистров памяти высве- чиваются в режиме программирования лишь частично как —, L, С, Г, Е, соответственно, а цифра F не высвечивается. Поэтому код DD оператора КИПД высвечивается как ГГ, а код OF оператора Вх высвечивается как 0. В табл, 3 бук- вой N обозначен номер любого регистра числовой памяти и, следовательно, каждому оператору таблицы с буквой N соответствуют 15 однотипных операторов, отличающихся выбором регистра памяти. Для упрощения записи программ символы некоторых операторов, указанные в табл. 3, составлены из символов 17
3. Операторы входного языка М п/п Оператор Символы клавиш Код Скмюл оператор^ 1 Набрать Цифру 0 0 00 0 9 Набрать цифру 9 9 09 э' 10 Набрать запятую 0— И Изменить знак х /-/ 0L /-/ 12 Ввести порядок вп ОС ВП 13 Стереть х Сх 0F сх 14 Сместить «вверх» содер- В | ОБ t жнмое стека 15 Вызвать предыдущее зиа- F Вх 0 Вх чение х 16 Сложить у И X + 10 -1" 17 Вычесть х из у 11 18 Умножить у на х X 12 X 19 Разделить у на х 13 — 20 Поменять местами у и х О 14 21 Вычислить 10'Т F 10» 15 10 е 22 Вычислить е* F е» 16 ел 23 Вычислить 1g х F 1g 17 1g 24 Вычислить 1п X F In 18 In 25 Вычислить arcs'n х F sin-1 19 sin"1 26 Вычислить arccosx F cos"1 1 — cos-1 27 Вычислить arctg х Fig"1 1L tg“l 28 Вычислить sin х F sin IC sin 29 Вычислить COS X F cos 1Г cos 30 Вычислить tgx Ftg 1Е lg 31 Набрать я — 3,1415926 F it 20 a 32 Вычислить Yx fK 21 К 33 Вычислить хч F x2 22 X2 34 Вычислить 1 /х F 1/x 23 1 /х 35 Вычислить Х-у F № 24 № 36 Повернуть стек по часе- F 25 —> вой стрелке 37 Преобразовать х в граду- К 26 мг сах, минутах и секундах в градусы 38 Преобразовать х в часах, К V" 2- мч минутах и секундах б часы 39 Преобразовать х в часах К (У" 30 чм в часы, минуты и се- кунды 40 Определить абсолютное К | X 1 31 1*1 значение х 41 Определить знак х К зн 32 зн 42 Преобразовать х в граду- К V 33 гм сах в градусы и минуты 18
Продолжение табл. 3 № п/" Оператор Сим волы клавиш Код Символ оператора 43 Определить целую часть х к [xj 34 [х] 44 Определить дробную часть х К {X} 35 (X) 45 Определить большее из у и х К мах 36 МАХ 46 Выполнить логическое умножение кодов у и х К А 37 А 47 Выполнять логическое сложение кодов у н х К V 38 V 48 Выполнить логическое сложение кодов х и у над полем модуля 2 К @ 39 © 49 Выполнить логическую инверсию кода х К ИНБ 3— инв 50 Вызвать квазислучайное число с равномерным рас- пределением в интервале (0, 1) к сч 3L сч 61—65 Занести копию х в ре- гистр памяти А х->п N 4п ПИ 66 Прекратить выполнение программы С/П 50 С/П 67 Перейти по адресу ab БП а b 51 ab Ы 1 at) . 68 Возвратиться из подпро- граммы В/О 52 В/О 69 Перейти к подпрограмме по адресу ab ПП а b 53 ой ПП ab . 70 Стереть шаг программы ,к ноп 54 НОП 71 Проверить условие х 0 и при его невыполнении перейти по адресу ab F х=ь0 а b 57 ab x=A0 ab 72 Проверять условие Р2=1 и при его невыполнении перейти по адресу ab F L2 а b 58 аЬ L2 ab 73 Проверить условие х > 0 и при его невыполнении перейти по адресу ab F х>0 а b 59 ab х>0 ab 74 Проверить условие Р3=1 и при его невыполнении перейти по адресу ob F L3 а Ъ 5— ab L3 ab 75 Проверить условие Р1—1 н при его невыполнении перейти по адресу ab F L1 о b 5L аЬ LI ab 76 Проверить условие х < 0 н при его невыполнении перейти по адресу ab F х<0 а Ъ 5С ab х<0 аЬ 77 Проверить условие ТО=1 и при его невыполнении перейти по адресу ab F LO а Ь 5Г ab LO ab
Продолжение табл. 3 Ка п/п 78 79—94 95—100 110—124 125—139 140—154 155—169 170—184 185—199 199-214 Г с п Оператор Символы клавиш Код Символ оператора Проверить условие х = и при его невынолнепи! перейти по адресу ab Вызвать из памяти копии содержимого регистра Л памяти Проверить условие х —С и при его невыполнении перейти по адресу, рав- ному модифицированному содержимому регистра N памяти Перейти по адресу, рав- ному- модифицированному содержимому регистра Л/ памяти Проверить условие х > 0 и при его невыполнении перейти по адресу, рав- ному модифицированному содержимому регистра N Перейти к подпрограмме по адресу, равному мо- дифицированному содер- жимому регистра N па- мяти Занести копию х в ре- гистр памяти, номер ко- торого равен модифици- рованному содержимому регистра N Проверить условие х < 0 и при его невыполнении перейти по адресу, рав- ному модифицированному содержимому регистра N памяти Зызвать копию содержи- мого регистра памяти, юмер которого равен мо- дифицированному содер- жимому регистра Л1 1роверить условие х = 0 при его невыполнении герейти по адресу, рав- ому модифицированному одержимому регистра амятп 3 F х—0 а П->х N К х^0 N К БП N К х>0 N К ПП N К х->П N К х<0 N К П-^х N К х=0 N 5Е ab 6п 7п 8п 9п —п Ln Сп Гп Еп х=0 ab ИПМ Kx^ON КБПЫ К x>0N КППМ КПЫ К x<0N КИПЫ Kx=0N команд, отличающихся от обозначений на клавиатуре j-доК. Это относится к оператору поворота операдион- иого стека, обозначенного на клавиатуре окружностью со стрелками, символам МГ, МЧ, ГМ и ГЧ, заменяющим неудобные для записи в программах обозначения О', О"7, О’» О'", а также символам f , П и ИП, соответствующим (Обозначениям на клавиатуре ПМК «Электроника БЗ-34» в значительно более удобным для записи в программах, чем соответствующие символы В1, х->П и П^>х на клавиатуре рассматриваемых ПМК. Номера регистров N памяти в операторах программ будем обозначать заглав- ными знаками (что соответствует общепринятым обозна- чениям шестнадцатеричных цифр А, В, С, D, Е), а номер р—русской буквой Д, как и на клавиатуре ПМК «Элект- роника БЗ-34», что упростит печатание готовых программ на пишущей машинке. Кроме того, в символах операторов будем опускать (как н в табл. 3) символы префиксных клавиш F иК (за исклю- чением буквы К в символах операторов косвенной адреса- ции), что облегчит чтение программ, операторы которых, обозначенные над клавишами, не могут быть введены без предварительного нажатия префиксных клавиш. Кстати, символы этих клавиш для ввода знаков «верхнего ряда» на клавиатуре ЭВМ других классов также не указываются в текстах программ, как в машинописных текстах не указы- вают символ клавиши поднятия каретки пишущей машинки для печатания знаков верхнего ряда. Операторы входного языка, перечисленные в табл. 3, относятся к нескольким группам. Кроме операторов набо- ра чисел (к которым следует отнести также операторы Л и СЧ), наиболее часто употребляются функциональные операторы, управляющие выполнением операций над чис- лами. к ним относятся двухместные (выполняемые над Двумя операндами) операторы 4-, —, X, 4-, Х^, Д, V, ф н МАХ и одноместные (выполняемые над операндом х) операторы 10х, ех, 1g, In, sin-1, cos-1, tg-1, sin, cos, tg, xa, 1/x, МГ, МЧ, ГМ, ЧМ, ;x|, [x], (x), ЗН и ИНВ. Особую группу образуют синтаксические операторы Сх, т, Вх, м», НОП, обеспечивающие изменение порядка следования операндов, а также операторы обращения к памяти FIN и ИПМ. Все перечисленные операторы используют как при вы- числениях нажатиями клавиш, так и в программах авто- матических вычислений, выполняемых в программируемом режиме. Основные синтаксические особенности рассматри- •20 21
в естественных языках командам, требующим немед- j исполнения (например, «Отряд, стой!»), в которых вначале указывается объект, а затем немедленно исполняе- ------------ Г.г Til.: <1 S'S nil Г'I. ОППТТЧ АТСГР, VPT и выполнению человеком операций над многозначными числами, которые он вначале выписывает на бумаге, а затем выполняет арифметическую операцию. Выполнение программы вычислений нажатиями кла- виш контролируется пользователем и этом случае нет необ- ходимости в дополнительных операторах автоматического управления выполнением программы, необходимым для программируемого режима. При этом входной язык должен предусматривать способ организации передачи управления при переходах. Во входных языках некоторых ПМК для этой цели используют метки, но в рассматриваемом входном языке (как и в языках других массовых ПМК) операторы занимают один или два шага программы, причем каждому ее шагу присвоен код ab порядкового номера (00, 01, 02,...), называемый адресом и предназначенный для указания на место перехода в разветвленной программе. Операторы, используемые только в программах автома- тических вычислений, также относятся к нескольким груп- пам. Отдельно можно выделить оператор С/П (стоп/пуск) Для прекращения вычислений и перехода в рабочий ре- жим и записываемый в конце каждой подпрограммы (мно- гократно выполняемого фрагмента) оператор В/О (воз- врат/очистка). Особую группу образуют операторы косвен- ней адресации — косвенного обращения к памяти КПМ и КИПИ, а также косвенных безусловных переходов КБПМ я КППЫ и косвенных условных переходов Kx=^ON, Кх > ON, Кх < ON и Кх = ON. В символах этих операторов Содержится номер N регистра памяти, который будем на- эывать адресным. При каждом выполнении оператора кос- венной адресации содержимое РМ адресного регистра V >®одифицируется — отбрасывается дробная часть, а остав- шаяся целая часть уменьшается на единицу, если М < 4, Увеличивается на единицу, если 4 < N с 6, и не изменяет- ся, если N > 6. Модифицированное содержимое фиксирует- ся в младших десятичных разрядах, а старшие заполняются рулями (например, 00000014). но после любой операции над втим содержимым оно отображается в обычной форме. Ис- ходное содержимое адресных регистров с номером N с 3 Кв должно быть меньше единицы. При выполнении оператора КИПП’ из памяти вызывает- ся содержимое регистра памяти, номер которого равен мо- дифицированному содержимому адресного регистра N ваемого входного языка связаны с допустимым порядков ствует следования операндов и операторов. В обычной или есге- ценного ственной алгебраической записи большинство математике. - к 0 обратНая запись соответствует ских знаков одноместных операций .записывают перед one- мое действие. jxpoMt^__ПТ’П г“ поп милглэиаииымй рандом (например 1g х), а двухместных — между опе- рандами (например, х + у). Использование синтаксисе, ских правил такой записи во входных языках ПМК суще- ственно усложняет их конструкцию. Так, для вычисле. ний по простой и удобной для образного восприятия чело- веком формуле у ~ а — b lg (с : d), даже переписан.^ для ввода операндов и операторов при чтении форму .л слева направо в форме а — b X 1g ( с : d ) = , практически необходимо выполнить следующие операции: запомнить число а, знак вычитания, число Ь, знак умноже- ния, знак вычисления логарифма, открывающую скобке-', число с, знак деления, число d, закрывающую скобку и лишь после считывания знака равенства можно вычис- лить частное c'd, логарифм этого частного, произведение логарифма на число b и вычесть результат из числа а. Следовательно, при использований правил естественной алгебраической записи во входном языке конструкцией ПМК должно быть предусмотрено запоминание не толы о операндов, но и операторов. Поэтому такие правила ис- пользуют лишь во входных языках наиболее сложных и дорогих ПМК. В большинстве входных языков массовых ПМК, включая рассматриваемые, используют синтакси- ческие правила обратной записи, при которой одномест- ные операторы вводят после операнда (например, х 1g), а двухместные — после обоих операндов (такую запись на- зывают обратной польской), разделяя их в случае набора оператором f (например, a f b + ). В этом случае функ- циональные операторы могут выполняться без запомина- ния, что значительно упрощает конструкцию ПМК и умень- шает стоимость их изготовления. Например, вычисления по приведенной выше формуле обеспечиваются программой в обратиой^записи операций При каждом выполнении оператора кос- и каждый функциональный оператор выполняется непосред- ственно после его ввода без запоминания. Максимально допу- стимое число операндов, запоминаемых без обращения к чис- ловой памяти, для рассматриваемых ПМК равно четырем. Обратная запись операций несколько непривычна для начинающих пользователей ПМК, но она точно соответ- 22 23
(шестнадцатеричным номерам А, В, С, D, Е в этом слуЧй соответствует содержимое адресного регистра 10, 11, р 13, 14). Если операции, управляемые оператором прямой вызова I4HN, соответствуют в естественном языке предд, жению вида «Принеси пакет из комнаты N !», то оператор. КИПИ — «Узнай в комнате N, где находится пакет и цр*: неси его!». Подобные аналогии справедливы и для опер- тора КПП косвенной засылки в память. Операторы косвенных переходов реализуются подос ным образом с тем отличием, что переход выполняется р- адресу, равному модифицированному содержимому адрес кого регистра. Если условие, проверяемое оператором кос. венного условного перехода, удовлетворено, то следующие выполняется оператор, записанный в программе после ощ ратора косвенного условного перехода. Все рассмотренные операторы занимают только по од ному шагу программы независимо от числа клавиш, нажг- маемых для их ввода. Остальные операторы занимают дв-. шага, причем второй шаг занимает адрес перехода. К эти? операторам относятся операторы безусловного перехода БП ab общего вида и ПП ab перехода к подпрограмме. К ним также относятся условные операторы (опера- торы условного перехода) х Ф 0 ab, х > 0 ab, х < 0 at х = Oab и операторы цикла LOab, LI ab, L2 ab, L3 ab. Если условие, проверяемое условным оператором, удовлетворе- но (в операторах цикла LN ab проверяется равенство единице содержимого адресного регистра N, который умень- шается на единицу после каждого выполнения оператора), то следующим выполняется оператор, записанный в про- грамме после условного оператора. Простейшие неразветвленные программы образуются допустимыми последовательностями операторов, заканчи- вающимися оператором С/П. Более сложные программы могут содержать несколько операторов С/П при решении задачи по частям или при прекращении вычислений пос. к каждого выбранного разветвления программы. В развет- вленных программах после операторов С/П записывают также отдельные фрагменты программ, заканчивающиеся операторами безусловного перехода, и подпрограммы, з:-’.' капчивающиеся операторами В,'О. Условные операторы входного языка ПМК, несмотря на отсутствие ключевого слова «если», соответствуют услов- ным операторам алгоритмических языков ЭВМ други* классов. Однако в таких алгоритмических языках опера- торы присваивания, начинающиеся ключевыми словами «пусть» или «вычислить», обеспечивают присвоение пере- ^ниой как значения числа, так и значения результата вы- числений по достаточно сложным выражениям. В связи с отсутствием ключевых слов операторы присваивания во входных языках ПМК имеют неформальный характер и, например, фрагмент программы ИГ15 1 ф2 х можно рас- сматривать как оператор присваивания «пусть х = (Р5 4- 1) X 2», так и как последовательность операторов при- сваивания «пусть х = Р5», «пусть х =х 4* 1», «пусть х — = 2 X х» и даже как последовательность «пусть х = Р5у>, «пусть у = х, х = 1», «пусть х = у 4- х», «пусть у = х, х = 2», «пусть х — у X х». Однако неформальная запись операторов присваива- ния, позволяющая сократить число вводимых элементов алфавита и упростить пользование ПМК, обеспечивает такие же возможности для представления алгоритмов, как и алгоритмические языки ЭВМ других классов. Например, после предварительной записи исходных данных п и т в ре- гистры X и 8 и выделения регистра 9 для хранения резуль- татов вычислений, алгоритм, представленный схемой на риа. 2, отображается на рассматриваемом входном языке программой: П8 П9 ИП8 1 — П8 ИП7 — 015 ИП9 ИП8 X БП 01 ИП9 С/П. Дополнив эту программу ключе- выми словами и выписав адреса шагов начальных опера- торов, выполняющие функции меток, можно представить эту же программу в виде: 00 «пусть Р8 = Р9 — х» 01 «пусть PS = Р8 — 1» 02 «пусть х = Р8 — Р7ъ 07 «если х = 0, то перейти к адресу 16» 10 «пусть Р9 = Р9 х Р8ъ 13 «перейти по адресу 01» 15 «высветить х = Р9» 16 «закончить вычисления» Сравнение этой формы записи программы с приведен- ными в гл. 1.1. программами на языках БЕЙСИК и АНА- ЛИТИК наглядно подтверждает высокий уровень входных языков ПМК. Вместе с этим следует отметить, что исполь- зование в программах сокращенных символов операторов и неформальная их запись затрудняет чтение программ и понимание представленных ими алгоритмов, а относи- тельно малая емкость памяти ПМК приводит к тому, что составление программ на входных языках ПМК в общем случае оказывается более сложным, чем составление про- грамм решения тех же задач на алгоритмических языках ЭВМ других классов. 24 25
Следует добавить, что в рассмотренном входном языке содержатся словарный запас и грамматические правила ПМК. «Электроника БЗ-34» и его аналогов («Электроника БЗ-54», «Электроника МК-54», «Электроника МК-56»). По- этому все программы, составленные для этих ПМК, могут непосредственно выполняться на ПМК «Электроника МК-бЬ и «Электроника МК-52», хотя в последнем случае многие из таких программ предварительно упрощаются. 1.3. ВЫЧИСЛЕНИЯ В НЕПРОГРАММИРУЕМОМ РЕЖИМЕ Рабочий режим («автоматическая работа»), в котором вычисления можно выполнять нажатиями клавиш, уста- навливается после включения П.МК или выполнения про- Рис. 7. граммы автоматических вычислений. Для перехода в ра- бочий режим из режима программирования достаточно на- жать клавиши с символами F и АВТ. Решение большинства задач с помощью ПМК облегча- ется, если его пользователь имеет представление о связях между нажатиями клавиш и получаемыми результатами. Для этого целесообразно воспользоваться упрощенной функциональной схемой (рис. "), не совпадающей со струк- турной схемой соединения реальных компонентов, но удоб- ной для описания путей преобразования информации в ПМК. На этой схеме прямоугольниками обозначены ос- новные функциональные устройства ПМК — пульт управ- ления, индикатор, процессор, управляющее устройство УУ, числовая ЧП и программная ПП память, постоянное 26
аапоминающее устройство ПЗУ, адресный стек АС. Штри- ховыми линиями показаны содержащиеся в ПМК «Элек- троника МК-52» интерфейс И и перепрограммируемое за- поминающее устройство ППЗУ. Основным (для ПМК «Электроника МК-61» единствен- ным) устройством вывода информации является индика- тор с 12 знакоместами, каждое из которых образовано семью световыми сегментами, и отдельными сегментами для высвечивания запятой. Первое слева знакоместо пред- назначено для высвечивания отрицательного знака, сле- дующие восемь знакомест - для высвечивания десятичных представлений чисел в восьмиразрядной естественной фор- ме или мантиссы показательного представления, а осталь- ные три знакоместа —для высвечивания знака и цифр двух- раэрядного порядка. Индикатор обеспечивает десятичное представление результатов операций в диапазоне абсо- лютных значений от 1 10'" до 9,9999999 • 10", причем числа с порядком 0 < п < 7 высвечиваются в естествен- йой форме (с фиксированной запятой), В остальных слу- чаях результат операции высвечивается в показательной форме а — Л1 10" с двухразрядным порядком п и восьми- разрядной мантиссой Л1 с запятой после первой значащей (отличающейся от нуля) цифры или 1 < Л1 < 10. Если результат вычислений отличается от нуля, но меньше 1 • 10'" по абсолютной величине, то он попадает В область машинного нуля и на индикаторе высвечивается 0. Результат операции, больше по модулю 9,9999999 • 10", попадает в область машинной бесконечности, и на индика- торе высвечивается сигнал ошибки (переполнения) ЕГГОГ. Можно набрать нажатиями клавиш и число, больше предель- ного, например, 1000 • 10", но после выполнения любой Операции высветится сигнал ошибки. Такой же сигнал выс- вечивается и при попытке выполнить некорректную опера- цию, например, разделить число на нуль или вычислять логаритм отрицательного числа. В этом случае операнды сохраняются в памяти и после устранения ошибки вычпе- левая можно продолжить. На индикаторе высвечиваются также шестнадцатеркч- И®в Коды результатов выполнения логических операторов и> в режиме программирования, шестнадцатеричные двузнач- ные коды шагов программы (при этом цифры А, В, D высве- ’’Нваются в упрощенной форме —, L, Г соответственно) н Надеров регистров памяти. П_^ипхронпость работы функциональных узлов ПМК “Оеснвчнвается генератором тактовой частоты для форми- Р ванйя сигналов, определяющих длительность равных 27
промежутков времени (тактов), в течение которых происхо- дит передача или преобразование по отдельным битам бинарных сообщений. Управляющее устройство (его функ- ции в реальных ПМК распределены между различными компонентами и узлами) содержит блок кодов операторов КОП для временного хранения и пересылки в ПЗУ или дру- гие узлы кодов операторов форматом 8 бит, соответствую- щих двухразрядным шестнадцатеричным числам. В ра- бочем режиме коды операторов засылаются в блок КОП при нажатий соответствующих клавиш. Постоянное запоминающее устройство предназначено для постоянного хранения микропрограмм в бинарных кодах, реализующих выполнение операторов входного языка. При поступлении в ПЗУ кода оператора вызывается и засылается в процессор для исполнения соответствующая микропрограмма. Таким образом ПЗУ выполняет функции транслятора-интерпретатора, дословно переводящего про- грамму с входного языка высокого уровня (операторы- слова которого отображены восьмибитовыми кодами) на язык микропрограмм низшего уровня, причем длина мик- ропрограмм зависит от числа и сложности простейших опе- раций, необходимых для реализации введенного оператора входного языка. Процессор содержит арифметико-логическое устройство АЛУ (см. рис. 7) для выполнения элементарных операций над бинарными представлениями операндов, хранящихся в регистрах X и У операционного стека. В рассматривае- мых ПМК операционным стеком называют такое соединение регистров X, Y, Z, Т и вспомогательного регистра XI, при котором содержимое каждого из этих регистров по специальным командам засылается в соседний регистр. При этом в магазинном режиме работы стека содержимое его последнего регистра стирается, замещаясь содержи- мым соседнего регистра. В кольцевом режиме (режим «поворота стека по часовой стрелке») содержимое регистров стека смещается «вниз», но предыдущее содержимое ре- гистра X одновременно засылается в регистр Т, в резуль- тате чего сохраняется исходное содержимое стека, смещен- ное на один регистр. Регистр X, называемый также вход- ным или индикаторным, соединен с индикатором через дешифратор ДШ, который преобразует бинарное содержи- мое регистра X в электрические напряжения, подаваемые на сегменты знакомест индикатора для высвечивания соот- ветствующих десятичных или шестнадцатеричных виаков. Работа операционного стека при вводе различных операторов непосредственно связана с синтаксическими 28
правилами входного языка. При вводе «синтаксического» оператора ф содержимое регистров стека смещается «вверх» в магазинном режиме, причем содержимое регист- ров X и XI не изменяется (рис. 8, а). При вводе оператора содержимое регистра X засылается в регистры У и XI, за- мещаясь прежним содержимым регистра У (ряс. 8, б). При вводе оператора поворота стека по часовой стрелке со- держимое стека смещается «вниз», причем прежнее содер- жимое регистра X засылается в регистры Т и XI (рис. 8, -?) При вводе оператора Вх содержимое всех регистров Рис. 8. смещается «вверх» с засылкой содержимого регистра X/ в регистр X и стиранием прежнего содержимого регистра Т (рис. 8, г). При вводе оператора Сх содержимое регистра X замещается нулем при сохранении неизменным содержи- мого остальных регистров. Следовательно, «синтакси- ческие» операторы обеспечивают нужное для вычислений расположение операндов в регистрах стека. При наборе десятичной цифры после всех операторов, кроме операторов ф , Сх и набора предыдущих десятичных знаков, содержимое регистров стека смещается «вверх», з код набранного знака засылается в регистр X (рнс, 8, д). Если же число набирается после команд ф или Сх, т° оно заносится на место прежнего содержимого регистра X без изменения содержимого остальных регистров стека (рис. 8, е). Эти два правила обеспечивают возможность ввода операндов во все регистры стека и исправление оши- бочно набранного и стертого оператором Сх содержимого Регистра X без изменения содержимого остальных регист- 29
ров. Следует учитывать, что цифра 0 высвечивается как после набора нуля, так и после ввода оператора Сх, но в первом случае содержимое регистров стека смещается «вверх», что не всегда допустимо. При вводе одноместного функционального оператора результат операции над содержимым регистра X заносится в этот же регистр, а его прежнее содержимое засылается в регистр XI (рис. 8, ж) без изменения содержимого ос- тальных регистров стека. При выполнении двухместной операции результат засылается в регистр X (прежнее содер- жимое которого заносится в регистр XI) и стек смещается «вниз» (рис. 8, з). Исключение составляет двухместный опе- ратор Ху, результат выполнения которого заносится в ре- гистр X (прежнее содержимое которого засылается в ре- гистр XI) без изменения содержимого регистров Z, Y и Т. При вводе после любой команды оператора I-inN вызова из памяти (табл. 3) содержимое всех регистров операционного стека смещается «вверх», а копия содержимого регистра Л' числовой памяти засылается в регистр X. При вводе опе- ратора засылки в память nN копия содержимого регистра X засылается в регистр X памяти без изменения содержи- мого всех регистров операционного стека. Рассмотренные правила работы операционного стека обеспечивают в рабочем режиме решение несложных задач по программе вычислений, вводимой нажатиями клавиш. В качестве простого примера рассмотрим задачу опреде- ления длины площадки для метания диска, если средняя скорость метания равна 20 м/с, а мировое достижение в 1,4 раза больше. Для решения задачи учтем, что дальность d метания диска определяется без учета сопротивления воздуха (ко- торым можно пренебречь) баллистической формулой d = = у® sin 20/g-, где у — скорость метания диска, 0 — угол метания относительно земной поверхности, a g = 9,81 mzc2— ускорение силы земного притяжения. Максимальная даль- ность метания диска достигается при 9 — 45°, а требуемую длину площадки с учетом возможности достижения но- вого мирового рекорда можно принять равной / = l,5rfmax = = kdmax. Следовательно, в общем случае при разных зна- чениях k, v и 0 можно воспользоваться программой ручных вычислений Л | ух20| 2 х sin х X 9 , 8 1 -г Установив переключатель Р-ГРД-Г в положение Г и на- брав в нужных местах программы для решаемой задачи k = 1,5; v = C2Q', 6 = 45° и g = 9,81, получим ответ для даих значений исходных данных. Рели задачу предпола- гается решать при различных значениях k, v или 0, то це- лесообразно предварительно занести g = 9,81 в регистр па- мяти 9 и вызывать это число из памяти оператором ИП9. Изменение содержимого регистров операционного стека после ввода нажатием клавиш каждого оператора показано в табл. 4 * Изменение содержимого регистров операционного стека при мияслениях по формуле d — sin 20IS (ё — 9*81 — P9) Ы- “ ' Оператор символы клавиш X У г 7 X! г б t, 0 Is 4 5 X sin X X ИП9 вкл 1 5 2Bt 0 F х3 4 5 Bf 2 X F sin X X П -> x 9 0 1 1, 1,5 1,5 2 20 400 4 45 45 2 90 1 400 600 9,81 61,162079 0 0 0 0 1,5 1,5 1,5 1.5 400 400 45 45 400 400 1.5 1,5 GOO 1,5 0 0 0 0 0 0 0 0 1,5 1,5 400 400 1.5 1,5 1,5 1,5 1,5 1.5 0 0 0 0 0 0 0 0 0 0 1,5 1,5 1,5 1,5 1,5 1.5 1.5 1.5 0 0 0 0 0 0 0 20 20 20 20 20 2 SO 1 400 400 9,81 Напомним, что содержимое регистра X высвечивается на индикаторе, для вызова в регистр X содержимого ре- гистров Y, 7. и Т достаточно трижды ввести оператор после дополнительного ввода которого восстановится ис- ходное содержимое регистров. Однако для вызова содер- жимого регистра XI нужно ввести оператор Вх, что при- ведет к смещению стека «вверх», но при этом будет стерто Прежнее содержимое регистра Т. Для сокращения длины программы вычислений на?ка- гаями клавиш целесообразно использовать все лексические в синтаксические особенности входного языка. Так, если Нужно ввести операнд 0,5 или 0,125, то целесообразно на- жать клавиши 2 1/х и 4 1/х соответственно; если нужно на- брать основание е = 2,7182818 натуральных логарифмов, *о следует ввести операторы 1 ех и т. п. Добавим, что ре- вультат выполнения оператора Ху приближенный и для 31 30
II I более точного возведения числа а в небольшую целую по- ; ложительную степень целесообразно заслать а во все ре. гистры стека и далее нужное число раз нажать клавишу х, . выполнив программу pJ a f j f х (а2) х (а3) X (а1) .. „ где в круглых скобках указаны высвечиваемые результаты вычислений. Подобным образом для точного возведения 11 числа а в отрицательную целую степень можно воспользо- I ваться программой j11, а 1/х (a-1) t t t X (а-2) X (а-3) , i11 а при требуемой четной степени — соответственно програм- I 'I мами Г а f f f | х (а2) х (а4) ... и а № 1;х f f f х (а-2) х (а-4) ... । Особо следует остановиться на использовании операто- ров Д логического умножения, \/ логического сложения, I © сложения над полем модуля 2 и одноместного оператора Ji ИНВ инверсии (отрицания), отсутствующих во входных язы- ках ранее выпускаемых ПМК. При решении многих логи- 1 ческих задач, связанных с операциями над бинарными сообщениями, использование этих операторов оказывается весьма полезным. Логические операции выполняются неза- висимо над каждым символом 0 или 1 при инверсии и над ' каждой парой таких символов в одинаковых по порядку разрядах_при остальных логических операциях. Так как ин- версия 0=1, 1 = 0 (символом — обозначают операцию, соответств ующую оператору ИНВ), то для бинарного со- общения 10101010 = 01010101. Аналогично, логическое произведение символов ОДО — 0, ОД 1 = О, 1Д0 = 1, I 1 Д1 = 1 и, например, 10101010 Д 10010010 = 10000010. | Логическая сумма 0у0 —0,0yi = 1,1 уо = 1,1 у 1 = 1 ; и, например, 10101010У 10010010 = 10111010. Логическая сумма над полем модуля 2 символов 0 © 0 = 0, 1 © 0 = 1, 0©1 = 1,1© 1 = 0 и, например, 10101010 © 10010010 = = 00111000. |, Бинарные сообщения, над которыми выполняются ло- т, гические операции, могут быть весьма длинными. Для то- "1 го чтобы не разбивать их на слишком мелкие части, входным языком рассматриваемых МПК предусмотрена возможность логических операций над бинарными сообще- ниями, содержащими до 28 бит. Операнды вводят в ко- дированном виде с отделенной запятой любой значащей 32 •цифрой и до семи десятичных цифр после запятой, отобра- жаемых десятично-двоичным бинарным представлением. Соответствующая операция выполняется над этими пред- ставлениями, но результат высвечивается в кодированном виде с отделенной запятой цифрой 8 и, после запятой, шест- надцатеричным представлением результата. Так, для операций над бинарными сообщениями BL = =01010101 и В.2 = 10010010 следует выполнить соответ- ствующие логические операции над кодами Б*х=8,55 и £L = 8,92 этих сообщений, В этом случае получим 8,55 ИНВ (8,АА); 8,92 ИНВ (8,60); 8,55 f 8,92 Д (8,1); 8,55 f 8,92 у (8,77); 8,55 | 8,92 © (8,С7) что соот- ветствует 01010101 = 10101010; 10010010 = 01101101; 01010101 Д 10010010 = 00010000; 01010101 V 10010010 = « 11010111; 01010101 © 10010010 = 11000111. Нажатиями клавиш в рабочем режиме теоретически можно решать сколь угодно сложные задачи. Практически сложность решаемых таким способом задач ограничена быстрым увеличением затрат времени и вероятности оши- бок при увеличении длины программы. На исправление ошибок требуются значительные затраты времени, а при незамеченной ошибке результат вычислений оказывается неверным. Поэтому нажатиями клавиш в рабочем режиме целесообразно решать лишь простейшие задачи, для кото- рых вероятность ошибок практически исключена. Во всех остальных случаях следует ввести программу вычислений в программную память, проверить правильность ее выпол- нения и лишь после этого выполнить программу в програм- мируемом режиме. 1.4. РЕЖИМ ПРОГРАММИРОВАНИЯ Режим программирования (переход в который из ра- бочего режима обеспечивается нажатием клавиш с симво- лами F и ПРГ) предназначен для ввода нажатиями клавиш программы автоматических вычислений в программную память. В этом режиме происходит обмен информацией между пультом управления, управляющим устройством, регистром-счетчиком шагов СШ адресного стека АС, ре- гистром X и индикатором (рис. 7). Программная память содержит 105 ячеек для записи иосьмибитовых бинарных кодов шагов программы автома- тических вычислений, которыми могут быть коды операто- ров, занимающих один шаг программы, а также коды коман- ды БП, ПП, х 0, х > 0, х < 0, х = 0 и двухразрядные Десятичные адреса в операторах прямого перехода. Про- 2 ь-321 33
граммная память разбита на И страниц по 10 (5 на послед, ней странице) ячеек с адресами ab, образованными шестна- дцатеричными номерами а = 0,1, .... 9, А страниц и ;<>?. сятичными номерами b = 0,1, ..., 9 ячеек на каждой стра- нице. Следовательно, первые 100 ячеек и шагов програч- мы, коды которых заносятся в эти ячейки, имеют адреса 00, 01, 99, а последние пять ячеек (и шагов программы)— адреса АО, А1, А4. Так как адреса последних пял и ячеек нельзя набрать с пульта управления, то перехо- ды к пяти последним шагам с этими адресами невыпол- нимы. Адрес ячейки программкой памяти, в которую вво- дится код очередного оператора при нажатии соответствую- щих клавиш, формируется регистром-счетчиком шагов СШ, являющимся входным регистром адресного стека АС. Пос- ле первого перехода в режим программирования этот ре- гистр очищен, что соответствует адресу 00. При повторных переходах в режим программирования этот регистр ма- жет оказаться неочищенным и для его очистки в рабочем режиме нажимают клавишу В/0 (возврат/очистка), после чего переходят в режим программирования. При вводе очередного оператора нажатиями клавиш в режиме программирования его код после распознавания и высвечивания на индикаторе засылается в ячейку про- граммной памяти, адрес которой равен содержимому ре- гистра-счетчика шагов СШ, после чего содержимое этого регистра автоматически увеличивается на единицу и вы- свечивается па индикаторе в знакоместах порядка. Следо- вательно, высвечивается адрес шага программы, который должен вводиться следующим. Код оператора, введенного последним, высвечивается в крайних левых знакоместах мантиссы, а правее на индикаторе высвечиваются коды предыдущих двух шагов программы. При этом шестнадца- теричные цифры в кодах операторов и адресах высвечи- ваются в упрощенном виде — цифрам А, В, С, D, Е соот- ветствуют символы —, L, С, Г, Е. После занесения кода оператора в последнюю ячейку программной памяти на индикаторе высвечивается сфор- мированный регистром-счетчиком шагов адрес —5, свиде тельствующий о полном заполнении программной памяти При продолжении ввода операторов нажатиями кла- виш их коды будут заноситься в начальные ячейки на место ранее введенных кодов и программа станет непригодной для дальнейшего использования. В простейших случаях программу автоматических вы- числений составляют мысленно и непосредственно вводи с 34 в программную память нажатиями клавиш. Однако обыч- но программу приходится предварительно составлять па бумаге и многократно переписывать в поисках наилучше- го варианта. Поэтому существенное значение имеет форма записи программ, обеспечивающая минимальные затраты времени на ее составление (программирование) и доста- точно удобная для хранения в библиотеке пользователя ддя последующего использования. В руководствах по эксплуатации ПМК операторы про- граммы автоматических вычислений отображают символа- ми нажимаемых клавиш, причем для определенности ука- дйвают все символы, обозначенные на клавише и около нее. Каждое такое отображение оператора программы сопровож- дают адресом шага и высвечиваемым в режиме програм- мирования кодом. Кроме того, подобную программу снаб- жают инструкцией по ее выполнению с указанием разме- щения исходных данных и результатов вычислений в ре- гистрах памяти и операционного стека, способом пуска программы и, иногда, дополнительными комментариями. Для упрощения подобной записи в некоторых пособиях для обозначения нажимаемых клавиш указывают лишь те символы, которые соответствуют вводимой команде или оператору. В табл. 5 приведен пример подобной записи программы, дополненной высвечиваемыми на индикаторе кодами операторов и адресов шагов. Такая табличная запись достаточно удобна для начи- нающих программистов, что и предусмотрено руководства- ми по эксплуатации ГЪМК. Однако указание символов всех Нажимаемых клавиш в сложных программах затрудняет Их чтение и понимание представляемых ими алгоритмов. Кроме того, запись в составляемых программах сложных ПО начертанию символов (особенно символов оператора Поворота стека и операторов обращения к памяти) связана со значительными затратами времени. Поэтому в символах табл. 3, которые используются в настоящей книге для обоз- начений операторов, исключены знаки префиксных клавиш (кроме буквы К в символах операторов косвенной адреса- ции) и упрощены знаки, сложные по начертанию, что со- вращает время записи программы на бумаге. Табличная форма записи программ практически неприменима в слу- чаях многократного переписывания и коррекции текста Программ, и необходима форма, обеспечивающая меньшие 'Затраты времени. Этим требованиям отвечает компактная запись программ по строкам из 10 (или менее в последней строке) шагов. При такой компактном записи отпадает не- обходимость в указании адресов шагов программы, так 33
5. Табличная запись программы вычислений по формуле d = A4!?2 sin 20/g- н информация, высвечиваемая на индикаторе в режиме программирования Нажимаемые клавиши Адрес Код Индикатор |В/0| IF| ,'ПРГ| 00 jF( М 00 22 22 01 |П->х| Q 01 67 67 22 02 02 12 12 67 22 03 |П->х| |8| 03 68 68 12 67 04 12; 04 02 02 68 12 05 W 05 12 12 02 68 06 |F| Isinl 06 1С 1С 12 02 07 й 07 12 12 1С 12 08 in х| |9| 08 69 69 12 1С 09 *’^1 09 13 13 69 12 10 icTnj 10 50 50 13 69 11 Инструкция по выполнению программы: 1. Перейти в режим «автоматическая работа» нажатием клавиш F и АВТ. 2. Ввести числа k, 6 и g = 9,81 соответственно в регистры 7,8 и 9. 3. Набрать в регистре X число V. 4. Нажать клавиши В/О и С/П. 5. После выполнения программы зарегистрировать высвечиваемое значение d. как адрес ab любого шага легко определить по номеру а = ='0,1, ..., 9, А строки и номеру b = 0, 1, 9 столбца, на пересечении которых в программе находится нужный шаг- В этом случае, например, по программе вычисления А!:„ (приведенной в конце гл. 1.2) в компактной форме П8 П9 ИП8 1 — П8 ИП7 — х^=0 16 ИП9 ИП8 х БП 01 ИП9 С/П легко определить как оператор П9 по адресу 01 безуслов- ного перехода, так и оператор ИП9 по адресу 16 условного перехода. Аналогично программа из табл. 5 записывается в компактной форме № ИП7 х ИП8 2 х sin х ИП9 4- с/п и занимает лишь две неполных строки вместо 12 и в таблич- ной форме. Программу в компактной записи целесообразно сопро- вождать и компактной записью инструкции со стандартны- ми способами указаний на способ размещения исходных даяйых и результатов вычислений, а также указаний на способ выполнения программы. Поэтому в дальнейшем способ размещения исходных данных перед пуском про- граммы будем описывать «обращенными» формулами при- сваивания вида а = PN, означающими, что исходное число а перед пуском программы должно быть занесено в регистр JV числовой памяти или операционного стека. В частности, формула а = РХ будет означать, что перед пуском програм- мы число а должно храниться в регистре X операционного стека и, следовательно, высвечиваться на индикаторе. Запись вида а — РУ, b — РХ или а = PZ, b = PY, с = — РХ соответственно означает, что перед пуском програм- мы числа а и b должны быть занесены в регистры Y и X или числа а, b я с — соответственно в регистры Z, Y и X стека. Кстати, для этого достаточно, набирая нужные чис- ла в регистре X, последовательно выполнить a f b или а.| b f с. Многие программы предназначаются для многократного выполнения в процессе решения задачи и в таких случаях необходимы указания па те исходные данные, которые сохраняются после выполнения программы в тех же ре- гистрах и, следовательно, их не нужно набирать повторно. Для такого указания формулы занесения исходных данных в регистры будем заключать в круглые скобки, если эти Данные сохраняются после выполнения программы в тех регистрах. Для указания на способ пуска программы достаточно Указать символы клавши, нажимаемых для пуска, а раз- мещение результатов выполнения в регистрах памяти 11 операционного стека — формулами присвоения вида PJV — а, означающими, что результат а после выполнения программы находится в регистре N. В подобной записи инструкция к программе! представленной в табл. 5, будет 37 36
иметь компактную стандартизованную форму- (k = Р7 0 = pg, g = 9,81 = Р9) v = РХ В/О С/П РХ = d. Таким образом, каждый элемент такой компактной записи отс б. ражает определенную операцию, выполняемую пользоьц. телем — ввод исходных данных, пуск программы нажа. тием указанных клавиш, вызов и регистрацию результатов выполнения программы. При этом подразумевается, м;о перед вводом исходных данных выполнен переход в рабочий режим. Определенный недостаток рассмотренной компактяс"! записи заключается в отсутствии кодов операторов, высге- чиваемых для контроля правильности ввода программы в режиме программирования. В этом случае для сравнения высвечиваемых кодов с вводимыми операторами приходится обращаться к табл. 3 или более компактной табл. 6. Однако при составлении программы коды операторов не нужны, а программы в компактной записи, хранимые в библиотеке пользователя, можно при желании дополнить высвечи- ваемыми кодами шагов программы. Вместе с этим следует отметить, что при вводе программы четкое и внимательное нажатие клавиш практически исключает необходимость в контроле правильности ввода по индикатору. Так как наиболее частой ошибкой при вводе программы является пропуск шага, то в большинстве случаев достаточно после ввода каждого крайнего правого шага строки с адресами ah = 9, 19, 29,... проверять высвечивание адреса сле- дующего шага аЬ = 10, 20, 30, ... Сверку операторов про- граммы с высвечиваемыми кодами приходится выполнять лишь при проверке и отладке неверно выполняемых про- грамм, но и в этих случаях обычно легко запомнить коды 10, 11, 12, 13, 4л и 6/1 наиболее часто встречающихся в про- граммах арифметических операторов и операторов обраще- ния к памяти. По мере приобретения навыков во вводе про- грамм пользователь обычно запоминает и коды остальных операторов. При составлении программ по сложным алгоритмам час- то возникает необходимость в контроле содержимого регистров операционного стека после каждого шага опреде- ленных фрагментов программы. Для этого можно восполь- зоваться табличной записью, подобной показанной в табл.4, для уменьшения затрат времени достаточно над каждым шагом программы или ее фрагмента в компактной записи выписать в столбик содержимое регистров операционного стека. Например, для черновика программы, указанной в табл. 5, при ее записи в компактной форме, эту информа- цию можно указать следующим образом! '8
Вх & - W ПЕ о II X ИПЕ Кх^ОЕ КБПЕ £ КИПЕ КПЕ X. КИПЕ| Кх —UE t- *э S нд | 2 I ипд Кх + ОД 2 X л кппд КПД ? S =1 7 5 о вп £ У .’ И ПС 1 । КБПС| и л X КПГ1С кпс Кх < ОС 2 [1 X u т 1 ” сч ffi — ипв ,К.х-СВ сз Е § Л X кппв1 сс с япжя кипв с: ° X 1 ’з h W ЯНН ИА - И ПА < 4 КБ ПА < Л 12 КППА КПА 1 V0>x\[ КИПА < 11 СП L (Л ® 1 ч X ИП9 । Оэ Т: X К Б149 &т> Л к КГ1П9 кпэ 01 дэ V X КИП9 60=301 оф X £ > ОД 15 SLIH К. х А 08, □0 <3 & со Л X 22 КП8 од о КИП8 1» о И X ъ О- г-ч ЪО < Ё 0 -Л :: И Г17 К. х т G7 КБП7 Л X Е с V С S 1-- X Ф <о JW МАХ 1? И По 1 90 *Х”Я 1 КЬПб £ са । KI16 о V X КИП6 г| ?г о $ К ИП5 50 + хм КБ115 UQ Л X КПП;- КП 5 Кх < 0- кии 5 in О II t &i X |_ НОИ ИГ14 > X КБП4 КхХВ с к КП4 V * КР1Г14 1 И=хм | -о -г I- X HJ СИ - кии к KDII3 А КППЗ КПЗ ГО >50] кипа 1 К -Л. CI X « го г о Ё” Г 1 £ UZ л КПП2 КПЗ Кх<02 КИП2 1] - 1 к 1411 i- V/ К Г, П1 КИН! Kill )П> С - н £ 2 о ’'W. - i< К -/-UU КБ ГН ? Е К' 1 о кипо д? 11 lJ__ - - ? 1 ч- 1 - 1 .>• 1 1 -1 i - uj
ТООООО ООО О О о ZOOOOO v2k О О О О О у о О V2 О v2k О V2k v2k О tr7isin26Q X v v2 k v2k 0 2 20 sin 29 tr7isin20 g d x2 ИП7 x ИП8 2 x sin X ИП9 < В первом столбце такой записи указывается содержимое регистров операционного стека перед началом выполнения программы или ее фрагмента. Подобные записи удобну при проверке и отладке программ в пошаговом программи- руемом режиме, рассматриваемом далее. Программы, вводимые в программную память, при не- обходимости можно редактировать, устраняя или заменяя ненужные или ошибочно введенные операторы. Для исправ- ления оператора, расположенного в программе близко к операторам, коды которых высвечиваются на индикато- ре, используют служебные команды ШГ и ШГ, изменяю- щие на единицу содержимое регистра-счетчика шагов и соответственно смещающие на индикаторе коды, высвечивае- мые в режиме программирования, и адрес следующего ша- га. Для исправления оператора следует сместить код пре- дыдущего шага в крайние левые знакоместа индикатора, после чего набрать нажатиями клавиш нужный оператор или, если исправляемый оператор лишний, оператор НОП, (нет операции). В тех случаях, когда исправляемый оператор или фраг- мент находится в программе далеко от операторов, коды которых высвечиваются на индикаторе, следует перейти в рабочий режим нажатиями клавиш с символами F и АВТ, затем нажать клавиши БП а &, где а и & — цифры адреса нужного оператора, заносимые при выполнении этой команды в регистр-счетчик шагов в бинарном представлении, и снова перейти в режим программирования нажатием клавиш F и ПРГ. После этого на индикаторе высветится адрес ab и коды трех шагов программы, предшествующие шагу с адресом ab. Следует учитывать, что при исправле- нии адресов в операторах перехода необходимо повторить ввод оператора, включая и команду перехода или провер- ки условия, так как в противном случае при попытке набрать адрес каждая его цифра, как н при вводе операндов, будет отображаться операторами набора цифр, занимающими отдельный шаг программы. Если же адрес набирается после команды проверки условия или безусловного перехода во1, с- раторах переходов, то содержимое регистра-счетчика шаге;- увеличится на единицу только после набора обеих цн-рг адреса — поэтому должна набираться и первая цифра 0. Если необходима пошаговая проверка операторов вве- енной программы или ее фрагмента по высвечиваемым кодам, то следует рассмотренными способами перейти к на- чалу программы или проверяемого фрагмента и затем, нажимая клавишу ШГ, сверять высвечиваемые коды с шага- КИ программы или проверяемого фрагмента. 1.5. ПРОГРАММИРУЕМЫЙ РЕЖИМ В программируемом режиме обмен информацией про- исходит между всеми функциональными узлами (кроме ППЗУ, интерфейса и периферийных устройств ПМК <-Элек- трофка МК-52»), включая и пульт управления, клавиши которого нажимаются для пуска программы, соответствую- щего переходу в программируемый режим. При выполне- нии программ, содержащих подпрограммы или, по край- ней мере, оператор В/О, в обмене информацией участвует не только регистр-счетчик шагов СШ, но и остальные регистры адресного стека АС, обозначенные на рис. 7 сим- волами Р1АС, Р2АС, ..., Р6АС. Перед выполнением занесенной в программную память программы автоматических вычислений в рабочем режиме в-регистры памяти и операционного стека заносятся ис- ходные данные. Переход из рабочего режима в программи- руемый режим для автоматического выполнения програм- мы реализуется нажатием клавиши С/П. В этом случае из программной памяти в регистр КОП управляющего уст- ройства первым вызывается код шага программы, адрес которого равен содержимому регистра-счетчика шагов СШ. Поэтому при пуске ранее выполненной программы или ее фрагмента нажатием только клавиши С/П повтор- ное выполнение программы начнется с шага, адрес которого равен адресу оператора, следующего за оператором С/П в программе. При необходимости пуска программы с на- чального шага следует нажать клавиши В/О (возврат/ очистка) для занесения в регистр СШ адреса 00 начального Пйга программы и С/П для пуска программы с этого шага. Если повторное выполнение программы должно начинаться о адреса ab, то следует предварительно нажать клавиши ВД а Ь для занесения в регистр СШ адреса ab перед пус- ком программы. Эти же клавиши нажимают и для первого куска программы с шага, имеющего адрес ab. При выполнении неразветвлениой программы посьми- битовый код очередного оператора из ячейки программной памяти, адрес которой равен содержимому регистра СШ, Называется в регистр КОП и после распознавания лересы- 40 41
лается в ПЗУ. По коду оператора из ПЗУ вызывается и за. сылается для исполнения в процессор соответствующе микропрограмма. После ее выполнения содержимое регист ра СШ автоматически увеличивается на единицу и в р@. п:стр КОП вызывается содержимое следующей ячейки программной памяти. Подобные операции повторяются д; считывания из программной памяти кода оператора С/П. В этом случае содержимое регистра СШ фиксируется на ад. ресе следующего шага программы, выполнение ее прекра. щается и на индикаторе высвечивается содержимое ре. гистра X. Таким образом, выполнение в программируемом режиме неразветвленной программы вычислений, не содержащей операторы косвенной адресации и переходов, отличается от выполнения той же программы в рабочем режиме только тем, что коды шагов программы пересылаются в регистр КОП из программной памяти, а не из пульта управ ления. Если программа содержит операторы косвенного обра- щения к памяти КПП или КИПП, то при считывании кода такого оператора из программной памяти он засылается в ПЗУ, и по соответствующей микропрограмме содержимое адресного регистра модифицируется, после чего выполняется обращение к тому регистру числовой памяти, номер ко- торого (при этом шестнадцатеричным цифрам А, В, Е соответствует модифицированное содержимое 00000010, 00000011, .... 00000014 адресного регистра) равен модифи- цированному содержимому адресного регистра N. Ошиб- ки происходят в тех случаях, когда неправильно выбрано исходное содержимое адресного регистра, и, например, меньше единицы для адресных регистров с номером N < 3. Так, при первом выполнении оператора косвенного обра- щения к памяти с адресным регистром X < 3, содержимое которого меньше единицы, но больше нуля, в регистр X вызывается ^модифицированное содержимое регистра А, а при последующих выполнениях этого оператора — со- держимое регистров числовой памяти с номерами, меньши- ми N. Если исходное содержимое адресного регистра с но- мером У < 3 равно нулю, то после первого выполнения оператора косвенного обращения к памяти в регистр X вызывается содержимое —99999999 адресного регистра, уменьшаемое на 2 после каждого следующего выполнения этого оператора. Если меньше единицы исходное содержи- мое адресного регистра А > 6, то при выполнении опера- тора КИПЫ оно не изменяется, а обращение выполняется в регистру 0. При таком же исходном содержимом адресно- го регистра в номером 4 < ;V < 6 и выполнении оператора KHnN оно вызывается в регистр X, а при последующих вьптолнениях этого оператора в регистр X вызывается со- держимое регистров памяти с номерами 1,2, ... Подобные особенности характерны и для выполнения других опера- торов косвенной адресации, когда содержимое адресного регистра является правильной десятичной дробью. В не- которых случаях эти особенности можно использовать при программировании, но в общем случае необходимо так со- ставлять программу и вводить исходные данные, чтобы операторы косвенной адресации выполнялись в соответ- ствии с их прямым назначением. Сложнее обмен информацией при выполнении развет- вленных программ с переходами. При считывании из про- граммной памяти кода команды БП безусловного перехода следующий за ней адрес перехода заносится в регистр-счет- чик шагов (без изменения содержимого остальных регист- ров адресного стека), затем в регистр КОП вызывается со- держимое ячейки с этим адресом перехода, и выполнение программы продолжается с этого адреса. Подобным обра- зом выполняется и оператор ПП ab обращения к подпро- грамме. Если из программной памяти считан код коман- ды х 7^0, х > 0, х<0 или х = 0 оператора условного перехода или код команды вида LN оператора цикла, то вначале проверяется содержимое регистра X или, для опе- раторов цикла, адресного регистра на равенство единице. Если проверяемое условие удовлетворено, то адрес опе- ратора блокируется и выполнение программы продолжает- ся со следующего шага, записанного в программе после условного оператора или оператора цикла. Если же про- веряемое условие не удовлетворяется, то в регистр- счетчик шагов СШ засылается адрес перехода считывае- мый из программной памяти, и выполнение программы про- должается с этого адреса. Подобным образом выполняются и операторы косвенных переходов с тем отличием, что при неудовлетворении проверяемого условия в регистр СШ засылается модифицированное содержимое адресного ре- гистра и выполнение программы продолжается с шага про- граммы, адрес которого равен этому содержимому. Наиболее сложен обмен информацией при выполнении обращений к подпрограммам, в котором участвуют все ре- гистры адресного стека. При считывании из программной Памяти оператора ПП ab адрес ab, как отмечалось, зано- сится во входной регистр СШ адресного стека, но одновре- менно предыдущее содержимое регистров этого стека сме- кается «вверх» и, следовательно, прежнее содержимое 42 43
регистра СШ, равное адресу шага программы с адресом ab обращения к подпрограмме, оказывается занесенным в регистр Р1АС адресного стека. Выполнение программы в этом случае продолжается с шага подпрограммы с адре. сом ab до считывания кода оператора В/О, записываемого в конце каждой подпрограммы. Это приводит к смещению «вниз» содержимого регистров адресного стека и занесению прежнего содержимого регистра Р1АС адресного стека во входной регистр СШ. В этом случае выполнение програм- мы продолжается с шага программы, адрес которого на единицу больше адреса шага программы, содержащего адрес ab обращения к подпрограмме. Рассмотренные правила выполнения обращений к под- программе обеспечивают продолжение выполнения про- граммы о шагов, следующих за каждым оператором обра* щения к подпрограмме после ее выполнения. Если опе- ратор обращения к подпрограмме записан в тексте подпро- граммы, то после считывания этого оператора содержимое адресного стека сместится «вверх», и адрес первого обраще- ния к подпрограмме окажется занесенным в регистр Р2АС адресного стека, а адрес адреса перехода из подпрограммы к подпрограмме — в регистр Р1АС, тогда как сам адрес перехода—в регистр СШ, и продолжение программы начнет- ся е этого адреса. При считывании оператора В/О проис- ходят обратные операции — адресный стек смещается «вниз», адрес адреса второго обращения к подпрограмме засылается в регистр СШ и продолжается выполнение первой подпрограммы до считывания заканчивающего ее оператора В/О. В этом случае содержимое адресного стека снова смещается «вниз» и в регистре СШ оказывается зане- сенным адрес адреса первого обращения к подпрограмме. В этом случае выполнение программы продолжится с шага, следующего в программе за этим адресом, занимающим второй шаг оператора обращения к подпрограмме. Адрес- ный стек обеспечивает до пяти подобных обращений из под- программы к подпрограмме (вложений подпрограмм), но при большем числе вложений стек переполняется, и адрес адреса первого обращения к подпрограммам оказывается стертым. Поэтому, хотя большое число вложений под- программ требуется редко, при составлении программ следует учитывать возможность переполнения адресного стека. В качестве примера рассмотрим решение уравнения х—cos х — 0 в программируемом режиме. Простейшим< хотя и достаточно медленным способом решения такого уравнения, является метод простых итераций, заключаю- щийся в выборе начального приближения х0 корня и после- довательном его уточнении по формуле x,-+i = cos хе, i — 0, 1,2, ... (3) довыполнения условия | Xf+i — х, [ < е, где е—наперед заданная малая величина, определяющая требуемую точ- ность вычисления корня. Итерационную формулу (3) несложно реализовать про- граммой П7 ИП7 cos ИП7 П7 — |х[ ИП9 — х<0 01 ИП7 С/П с инструкцией: установить переключатель Р-ГРД-Г в по- ложение Р, (е = Р9) хп = РХ В/О С/П РХ = Р7 = х*. При выборе е = 1 • 10'5и хп—0,5 по этой программе значе- вяе корня х* = 0,73908181 или, с учетом заданной точности, х* = 0,73908 зЬ 0,00001 вычисляется примерно за 2, 5 мин. Для иллюстрации обмена информацией при вложении подпрограмм представим составленную программу более сложной с двумя подпрограммами, «вложенными» одна в другую (хотя при вычислении корня в этом нет необхо- димости, так как время решения задачи увеличится за счет аатрат времени на переходы}, П7 ПП 07 х<0 01 ИП7 С/П ИП7 cos ПП 14 ИП9 — В/О ИП7 П7 — 1х| В/О с той же инструкцией, что и для исходной программы. Изменение содержимого регистров СШ, Р1АС и Р2АС адресного стека (для удобства пользователя представлен- ного в шестнадцатеричной форме), бинарного содержи- мого регистра КОП и содержимого регистра X при считыва- нии из программной памяти кода очередного оператора этой программы в процессе выполнения одной итерации Указано в табл. 7. После ввода значений е и х0 в регистры 9 и X соответ- ственно в рабочем режиме и нажатия клавиш В/О содержи- мое регистра-счетчика шагов СШ очищается, и при нажа- тии клавиши С/П в регистр КОП из программной памяти вызывается бинарный код первого оператора П7 програм- мы, хранящийся в ячейке с адресом 00. После занесения копии содержимого регистра X в регистр 7 содержимое ре- гистра-счетчика автоматически увеличивается на единицу, и в регистр КОП вызывается содержимое второй ячейки программной памяти с адресом 01, равное коду команды ПП. После вызова этого кода содержимое СШ увеличи- вается на единицу, и в регистр КОП вызывается адрас 07 44 45
7. Изменение содержимого регистров кода операций, адресного стека и регистра X при выполнении программы решения уравнения х — cosjc = 0 с вложением подпрограмм я Оператор коп СШ PIAC Р2АС X П7 01000111 00 00 00 ПП 01010011 01 00 00 *0 07 00000111. 02 00 00 ИП7 01100111 07 02 00 Хо cos 00011101 08 02 00 *1 = cosxo ПП 01010011 09 02 00 14 00010100 10 02 00 ИП7 01100111 14 10 02 х0 <-> 00010100 15 10 02 А'1 П7 01000111 16 10 02 Х1 — 00010001 17 10 02 00110001 18 10 02 В/О 01010010 10 02 00 ИП9 01101001 11 02 00 е •—- 00010001 12 02 00 1 *0 — *11 — 8 В/О 01010010 02 00 00 к < 0 01011110 03 00 00 1*о — *i 1 — е 01 00000001 04 00 00 ПП 01010011 01 00 00 1 *о — *1 1 — е 07 00000111 02 00 00 ИП7 01000111 07 02 00 *1 перехода к подпрограмме, после чего этот адрес засылается в регистр СШ, прежнее содержимое которого 02 заносится в регистр Р1АС. При этом по адресу 07 в регистр КОП вы- зывается содержимое ячейки с адресом 07, равное коду оператора ИП7, и в регистр X вызывается содержимое регистра числовой памяти с номером 7. Выполнение подпрограммы продолжается до считыва- ния кодов следующего оператора обращения к памяти, что приводит к смещению «вверх» содержимого регистров адрес- ного стека, засылке адреса 02 в регистр Р2АС, адреса 10 в регистр Р1АС и адреса 14 в регистр СШ с одновремен- ным вызовом в регистр КОП кода оператора ИП7 и его вы- полнением. Выполнение программы продолжается до считывания из программной памяти следующего оператора обращения к подпрограмме, после выполнения которого содержимой регистров адресного стека снова смещается «вверх», а во входной регистр СШ — адрес шага программы, с которого продолжается ее выполнение. При считывании кода опе- ратора В/О адресный стек смещается «вниз», и продолжается выполнение первой подпрограммы до считывания one* ятора В/О. После этого содержимое адресного стека снова вещается «вниз», и выполняется оператор условного пере- хода х < 0 01. Так как условие | x,+i — х, j < 8 еще пе удовлетворено, то в регистр СШ заносится адрес 01, с ко- торого продолжается выполнение программы наследующей итерации. Подобные итерации повторяются до тех пор, пока не будет выполнено условие, проверяемое условным □ператором и соответствующее вычислению корня х* с тре- буемой точностью. Рассмотренные особенности выполнения обращений к подпрограммам позволяют сделать выводы, полезные при составлении программ автоматических вычислений: 1. Если регистр Р1АС адресного стека очищен (содер- жит адрес 00), то считывание из программной памяти кода одератора В/О приводит к смещению содержимого адресно- го стека «вниз», занесению в регистр СШ адреса 00, увели- чению его на следующем такте на единицу и переходу к вы- полнению шага программы с адресом 01. Следовательно, когда данный оператор В/О не охвачен циклом обращения к памяти, то его можно использовать в программе как опе- ратор безусловного перехода ко второму шагу программы о адресом 01. 2. Если в программе отсутствует оператор В/О и, сле- довательно, изменение содержимого регистров Р1АС, ..., Р6АС несущественно, то оператор ПП ab можно использо- вать как оператор безусловного перехода к любому шагу программы. 3. Оператор ПП ab обеспечивает переход к любому шагу подпрограммы и, следовательно, с помощью таких опера- торов можно обращаться к различным фрагментам (с раз- личными начальными адресами) одной и той же программы. Следует также учитывать, что в программируемом ре- жиме считывание кода оператора С/П приводит к прекра- щению выполнения программы с сохранением в регистре- счетчике шагов адреса следующего шага программы. Если инструкцией не предусмотрен следующий пуск программы нажатием только клавиши С/П, то в этом случае регистр- счетчик шагов начнет формировать адреса следующих яче- ек программной памяти, и их содержимое будет вызываться 8 регистр КОП до считывания оператора С/П. Если в про- грамме после оператора С;П, с которого продолжилось е® выполнение, отсутствует другой такой же оператор, то после считывания содержимого всех ячеек программной памяти регистр-счетчик шагов продолжит формирование адресов, больших А5. Эти адреса будут распознаваться как адреса следующих не по порядку шагов программы, и она 47 46
будет выполнена неверно. Поэтому для повторных пусков программы, когда это необходимо, следует нажимать лищь клавиши, предусмотренные инструкцией. В некоторых случаях (например, при ошибках в програм. ме или невыполнении условий выхода из цикла) код one. ратора С/П не считывается из программной памяти, и вы. полнение программы не прекращается в ожидаемое время. В этих случаях для аварийной остановки программы еле. дует нажать клавишу С/П или другую клавишу на пульте (например, В/О или ПП) и после остановки программы найти причину «зацикливания» программы. При составлении и отладке сложных программ, а также проверке правильности их выполнения используют про- граммируемый режим с пошаговым выполнением програм- мы при нажатии клавиши ПП в рабочем режиме. В этом случае следует ввести в регистр-счетчик шагов адрес на- чала программы или проверяемого фрагмента (с помощью команд ШГ и ШГ или В/О или БП я Ь) и, нажимая клавишу ПП, сравнить высвечиваемые на индикаторе результаты выполнения каждого шага с заранее подготовленными контрольными данными. Иногда ожидаемые результаты выполнения каждого шага проверяемых фрагментов про- граммы можно оценить мысленно, но в общем случае их приходится проверять, например, выполнив соответствую- щие вычисления нажатиями клавиш. Для удобства конт- роля над каждым оператором в черновом тексте проверяе- мой программы или ее фрагмента можно выписать контроль- ные данные для сверки с высвечиваемыми. Десятичные дроби и многозначные числа в контрольном тексте доста- точно указывать с таким минимальным числом знаков, которое не вызовет недоразумений при сверке с высвечи- ваемыми данными. Например, для проверки неразветвленной программы из табл. 5 при исходных данных k — 1,5 = Р7, 0 = 45 = = Р8, g — 9,81 = Р9, 20 — РХ можно заготовить сле- дующий контрольный текст? 20 400 1,5 600 45 2 90 1 600 9,81 61,6 х2 ИП7 х ИП8 2 х sin х ИП9 -? При несовпадении контрольных и проверяемых данных следует исправить ошибку, перейдя в режим программиро- вания. Несколько сложнее пошаговая проверка программ или их фрагментов с переходами. В этом случае операторы про- граммы следует выписывать в том порядке, в котором они выполняются с учетом переходов. При этом следует учесть, зто при каждом нажатии клавиши ПП будет выполняться один оператор программы независимо от числа занимаемых ям шагов, и число нажатий клавиши ПП будет меньше об- щего числа шагов программы с операторами условных и безусловных переходов. Пошаговая проверка должна выполняться для всех разветвлений программы до опреде- ления места ошибки. В качестве примера рассмотрим про- верку программы с переходами из табл. 7. При и = 1 • 10~5 Я = 0,5 контрольный текст достаточно составить для одной итерации: 0,5 0,5 0,5 0,5 0,87 0,87 0,5 0,87 0,87 . П7 ПП 07 ИП7 cos ПП 14 ИП7 ~ П7 —0,37 0,37 0,37 10’5 0,37 0,37 0,37 0,37 ... - jx В/О ИП9 — В/О х<0 01 ПП ... - В этой записи для сокращения затрат времени указаны лишь первые цифры ожидаемых результатов, но в некото- рых случаях (например, при оценке накопления погреш- ностей) приходится указывать все значащие цифры кон- трольных чисел. Пошаговая проверка программы с большим числом опе- раторов трудоемка и не всегда нужна. Обычно для проверки такой программы достаточно разбить ее на части, вре- менно заменяя оператор проверяемого фрагмента опера- тором С/П и восстанавливая исходный оператор после про- верки правильности выполнения этого фрагмента. Ряд при- емов проверки, отладки и перевода программ с других входных языков описан в книге [81. Дополнительно сле- дует учитывать, что при многократной проверке и выпол- нении программ с оператором СЧ ка?кдый раз будут фор- мироваться различные результаты, совпадающие лишь при выполнении программы после выключения и включения ПМК. Следует добавить, что ПМК может эффективно заменить ее всегда доступные справочники. В частности, использо- вание программ для вычисления специальных функций обычно устраняет необходимость обращения к таблицам Функций, данные которых часто приходится интерполиро- вать, а использование справочных программ, приведенных в конце гл. 3, существенно упрощает определение часто встречающихся физических величин в требуемой размер- ности. Обращение к подобным программам значительно Упрощается при их хранении в ППЗУ или внешних запо- минающих устройствах ПМК «Электроника МК-52», рас- смотренных в приложении. 48 49
ГЛАВА 2 СОСТАВЛЕНИЕ ОПТИМАЛЬНЫХ ПРОГРАММ 2.1. КРИТЕРИИ ОПТИМАЛЬНОСТИ ПРОГРАММ Любое вычислительное средство экономически цел с- сообразно использовать лишь в том случае, когда с его по- мощью данную задачу можно решить не дороже, чем с по- мощью других вычислительных средств или без них. Стои- мость решения задачи на ЭВМ любого класса, включая и ПМК, определяется стоимостью затраченных машинного времени и рабочего времени пользователя. Стоимость од- ного часа машинного времени равна частному от деления стоимости приобретения и эксплуатации ЭВМ (включая стоимость подготовки и отладки программы обслуживаю- щим персоналом) на число часов работы машины в течение амортизационного периода. Поэтому дорогостоящие ста- ционарные ЭВМ высокой производительности окупаются лишь при практически непрерывном решении достаточно сложных задач. Экономические критерии определяют и область эффек- тивного применения ПМК. по сравнению с ЭВМ других клас- сов. Стоимость одного часа машинного времени ПМК равна частному от деления стоимости покупки, ремонта и пита- ния в течение срока аммортизацин на число часов работы (включения) за этот срок. При семилетием амортизацион- ном сроке и не менее 180 ч работы в год стоимость одного часа машинного времени ПМК составляет менее Юкон. Быстродействие ПМК значительно уступает быстродей- ствию ЭВМ других классов, а затраты времени на решение сложных задач с использованием пакета программ или вы- числительных бланков для записи промежуточных резуль- татов существенно возрастают. Однако время подготовки решения задачи на ЭВМ составляет большую часть общих затрат времени и практически не зависит от быстродействия ЭВМ. Поэтому время решения несложных задач на ПМК. и ЭВМ других классов соизмеримо, и применение ПМК В таких случаях в связи с малой стоимостью их машинного времени более выгодно, чем применение ЭВМ других клас- сов. Даже при решении относительно сложных задач с пол- ным использованием ресурса памяти ПМК, пакета программ или вычислительных бланков, или задач с большим време- нем счета оказывается экономически выгодным применение ПМК, так как относительно большое время вычислений компенсируется, как правило, низкой стоимостью машин- ного времени. Поэтому применение ПМК. экономически ць
«сообразно для решения практически всех задач, кото- ые могут быть решены с их помощью. F пмк незаменимы и в связи с возможностью использо- вания практически в любых условиях, что является серьез- ном преимуществом по сравнению с персональными ЭВМ ддбых классов. Лишь когда стоимость автономных мало- (Ябаритных персональных ЭВМ станет соизмеримой со стоимостью ПМК, последние потеряют свои преимущества. (Тртако и за карманными ЭВМ будущего, вероятно, сохра- нится название «микрокалькулятору-, так как пршщиии- ульных различий между ПМК и микроЭВМ других классов ве существует. Эффективность применения ПМК при прочих равных условиях зависит от оптимальности (качества) программ решения задач. Основным критерием оптимальности яв- ляются минимальные затраты времени па полное решение вадачи. Эти затраты времени определяются суммой Г-Л-гЛН-ЛмЭ-Л, (4) где Tz — затраты времени па составление, Та — на ввод в программную память, 7\,— на автоматическое выпол- нение программы, а ТЛ— дополнительные затраты времени на вспомогательные операции, включая ввод исходных данных, пуск программы, регистрацию результатов вычис- лений. Все составляющие суммы (4) взаимосвязаны и умень- шение только одного слагаемого может привести к увели- чению других слагаемых и, как результат, всей суммы. Поэтому при оптимизации программы следует прежде всего Добиваться уменьшения наибольших составляющих суммы (4) до величин, сравнимых с остальными затратами вре- мени и лишь после этого искать дополнительные возмож- ности минимизации общих затрат времени. Затраты времени Г,- на составление программы мини- мальны при использовании готовой программы, взятой из справочника или, для ПМК «Электроника МК-52», смен- ного блока расширения памяти. В остальных случаях ве- личина Тс, как правило, превышает остальные слагаемые суммы (4) и включает все затраты времени на рациональ- ный выбор математической формулировки исходных усло- вий задачи, метода и алгоритма ее решения, а также на Представление алгоритма программой и ее отладку. В случае, когда программа не предназначена для пов- торного использования, а затраты времени Тс значительно превышают остальные слагаемые минимизируемой суммы (4), целесообразно принять первый составляемый вариант 51
программы, обеспечивающий получение результата реше- ния с требуемой точностью. Исключение составляют слу- чаи, когда время выполнения программы, реализующей выбранный метод, значительно превышает возможные за- траты времени на выбор другого пути решения. В качестве примера рассмотрим задачу определения числа п «счастливых» трамвайных билетов с шестизначным if номерами, у которых суммы цифр, например, в трех стар- ших и трех младших разрядах одинаковы. Непосредствен- ный метод решения этой задачи заключается в выборе каж- дого из возможных сочетаний цифр в трех разрядах и пере- боре всех сочетаний цифр в остальных разрядах с такими же суммами. На входном языке ПМК этот метод реализует- ся достаточно короткой программой, а на проверку каж- дого сочетания затрачивается несколько более 3 с. Однако требуется перебрать (103)г — 10® сочетаний и затратить не менее 3- 10й с или более месяца непрерывной работы ПМК. Очевидно, что имеет смысл затратить даже несколько дней (если решение задачи необходимо) для поиска более быстрого пути решения. В комбинаторике для решения подобной задачи используют формулу 27 п = S (Мз.5)3, s-0 где число слагаемых с индексом s определяют из так называемых рекуррентных соотношений: Мз18 = M2-s -|- + Mi.s— 1 + • • +jV2(3_fi; Nzm — Mfm + N\,m—I + ' ’ + Ml/n-s; Л/h = 1 при I < 9 и Nlt = 0 при />9. Внимательно исследовав эти соотношения, можно со- ставить следующую формулу 27 S " = 2 (S *»)’• s=C 1г—О где числа = k ф- 1 при k < 9, Nk = 18—k при 9 < k < <18 и = 0 при /г> 18. В этом случае потребуется сложить лишь 378 слагаемых, что требует существенно меньших затрат времени, чем при попытке «решить задачу в лоб». Затраты времени Тс на составление программ, соответ- ствующих минимальной сумме затрат 7ф + 7\, + осо- бенно оправданы в тех случаях, когда программа пред- назначена для постоянного хранения в библиотеке поль- зователя и се последующего многократного применения. В таких случаях Гс = TCQ>k, где Tcq — начальные затраты 52
времени на составление программы, a k— предполагаемое ф«:ло последующих выполнений программы. Следовательно, цем чаще предполагается использовать программу, тем относительно меньше величина Тс и тем тщательнее долж- быть минимизирована сумма затрат Тп -ф Тм ф- Тд. Поэ- тому практически любые затраты времени на составление Я оптимизацию наиболее часто используемых библиотечных программ окупаются, если достигнуто минимальное значе- ние суммы (4). Затраты времени Тп на ввод программы в программную память минимальны для ПМК «Электроника Д1К-52», если программа переписывается из сменного блока расширения памяти. В случае, когда программа переписывается из Опзу, следует принять Тп = T^q, где TIIfl — началь- ные затраты времени на ввод программы нажатиями кла- виш в программную память и перезапись ее в ППЗУ, a q — 4исло выполнений хранящейся в ППЗУ программы. Во всех остальных случаях, когда программа вводится в про- ц>аммную память нажатиями клавиш, величина Тп зависит от числа m шагов программы и навыков пользователя в чет- ком и безошибочном вводе операторов. Так как для неко- торых операторов требуется нажать несколько клавиш, то при достаточном навыке пользователя в безошибочном вводе операторов Тп «ml,45 с и на ввод программ пре- дельной длины требуется не более 2—2,5 мин. Однако при увеличении числа шагов возрастает вероятность ошибоч- ного нажатия клавиш и, как следствие, существенно уве- личиваются затраты времени Тп. Уменьшение длины программы и соответствующее умень- шение величины Тп достигается при рациональном выборе модели, метода и алгоритма решения задачи и достаточно полном использовании лексических и синтаксических осо- бенностей входного языка. Минимизация длины неразвет- вленных программ обеспечивает также уменьшение за- трат времени Ты на выполнение программы. Однако мини- мизация длины программы с помощью разветвлений при- водит к одновременному увеличению времени счета Ты в связи с относительно медленным выполнением переходов в программе. Поэтому в тех случаях, когда для решения Задачи достаточно однократного выполнения неразветвлен- Ной программы, целесообразно стремиться к минимизации Длины программы, что обеспечит и минимальное время счета. Однако для программ, многократно выполняемых в процессе решения задачи, как и для программ с много- кратным циклическим повторением их фрагментов, основ- ном критерием оптимальности является минимальное вре-
мя счета Ты и для его обеспечения иногда приходится устра- нять переходы в программе и соответственно увеличивать ее длину. Таким образом, время Ты выполнения программы за- висит как от выбранного способа представления програм- мой алгоритма решения задачи, так и от времени выполне- ния каждого оператора программы. Это время зависит от типа операторов и тактовой частоты ПМК, которая не- сколько отличается для различных образцов ПМК даже одного типа в связи с технологическим разбросом пара- метров компонентов ПМК при их изготовлении. Для опенки времени выполнения любого оператора или фрагмента программы целесообразно использовать следую- щий прием. При выборе числа п = РО итераций (обычно достаточно принять п — 20 ... 50, причем большие значе- ния п соответствуют быстрее выполняемым операторам) следует по секундомеру определить время Tf! = ntQ выпол- нения программы LO 00 С/П на проверяемом ПМК. Затем для нужного оператора или фрагмента программы Ф при том же числе п итераций следует засечь время выпол- нения программы Ф LOOOC/П. Тогда среднее время выпол- нения оператора или фрагмента Ф определится по формуле ^Ф = Ф Та)1п. Подобным образом можно оценить время выполнения не только одношаговых операторов и неразветвленных фрагментов программы, но и операторов перехода или фрагментов, содержащих такие операторы. Так, для опре- деления времени выпол!1ения оператора безусловного пере- хода следует определить время Тф выполнения программы БП 02 LO 00 С/П, а для операторов условного перехода — программы вида х = 0 02 LO 00 С'П. В последнем случае для выполнения условного перехода при удовлетворении или неудовлетворении проверяемого условия нужно пред- варительно ввести в регистр X соответствующее число. Например, для определения времени Тф выполнения услов- ного оператора х =0 ab при удовлетворении проверяемого условия перед пуском программы следует принять 0 = = РХ, а при неудовлетворении — занести в регистр X не равное нулю число. Для оценки времени выполнения операторов косвенной адресации целесообразно выбирать адресный регистр с но- мером JV > 6. При проверке времени выполнения опера- торов косвенных переходов в адресный регистр следует за- нести адрес начального шага оператора LO 00 в программе вида КБП.\' LO 00СТ1, а перед выполнением программы — занести в регистр х число, соответствующее удовлетворе- 5-1
вик> или неудовлетворению условия, проверяемого опера- торами косвенного условного перехода. Время выполнения оператора перехода к подпро- грамме оценивают с помощью программы ПП 02 LO 00 С/П, а время /Оор обращения к подпрограмме— с помощью программы ПП 05 LO 00 С/П В, О. В этом случае время рылолнения оператора В/О вычисляют по формуле ta/0 = ₽/Обр — tun- Аналогично для оценки времени выполнения оператора КППП с адресным регистром N>6 достаточно использовать программу КППИ LO 00 С/П с содержи- мым адресного регистра 1 = PN, а для оценки полных затрат времени на косвенное обращение к подпрограмме — Программу КППЫ LO 00 С/П В/О с содержимым адрес- яого регистра 4 = PN для перехода к оператору В/О по Адресу 04. Особенно тщательно следует минимизировать время вы- полнения фрагментов программ, охваченных циклами, реа- лизующими методы последовательных приближений. Это относится, в частности, к программам решения нелиней- ных уравнений с высокой точностью, в которых число ите- раций может достигать сотен и даже тысяч, и время вы- полнения каждого оператора в цикле существенно влияет на полное время счета. Дополнительные затраты времени 7Д при решении боль- пмнства задач относительно малы и связаны лишь с затра- тами времени на ввод исходных данных, пуск программы В регистрацию результатов выполнения программы. Для Минимизации этих затрат прежде всего необходимо состав- лять четкую и однозначную инструкцию к выполнению про- граммы, обеспечивающую простоту запоминания порядка Выполнения вспомогательных операций и минимальное число нажатий клавиш. Дополнительные затраты времени существенно возра- стают в тех случаях, когда приходится использовать не- сколько последовательно выполняемых программ (пакет .Программ), в особенности на ПМК «Электроника МК-61», ¥огда программы пакета не могут быть предварительно за- несены в ППЗУ. Кроме того, дополнительные затраты вре- мени могут оказаться наиболее значительными в тех слу- чаях, когда ресурс памяти ПМК недостаточен для хранения промежуточных результатов вычислений и для этой цели приходится использовать внешнюю память в виде вычис- лительного бланка. Следует помнить, что любые методы оптимизации про- грамм должны обеспечивать вычисление результата с тре- буемой точностью, так как в противном случае задача не 55
будет решена. Вместе с этим не следует добиваться чрезмер- ной точности результата, превышающей требуемую и, как । правило, приводящей к дополнительным затратам времени ' на решение задачи. Поэтому пользователь ПМК должен ' уметь оцепить погрешность полученного результата, изме- нив при необходимости выбор метода, алгоритма пли про- граммы вычислений для обеспечения требуемой точности при минимальных затратах времени на решение задачи. 2.2. ПОГРЕШНОСТИ ВЫЧИСЛЕНИЙ Разность Диет = а — о* между приближенным а и точным а* значениями результата решения задачи назы- вают истинной абсолютной погрешностью, а число 6,.ст = = Дист/| а* ] — истинной относительной погрешностью. Так как точное значение а* обычно неизвестно, то точ- ность результата решения задачи оценивают половиной ширины интервала А > AliCT, в котором по имеющейся информации находится значение а*. Величину А называют предельной абсолютней погрешностью, а число 6 = Д/| а] — предельной относительной погрешностью, причем блово «предельный» обычно опускают. Во многих случаях' погрешности результатов выполне- ния программы удобно оценивать числом k верных цифр де- сятичного представления. Первые слева значащие цифры результата называют верными, если абсолютная погреш- ность содержимого fe-го слева разряда не превышает поло- вины единицы. При этом значащими называют цифры от 1 до 9 и нули, расположенные между ними пли, для указа- ния точности в дробной части или порядка целой части, справа от них. При числе fe> 2 верных цифр предельные абсолютная и относительная погрешности результата Д = 5 • 10-"-*, б = 5 • Ю-*/Л1, (5) где п м М — порядок и мантисса представления результата в показательной нормализованной (1 -с /VI < 10) форме. При известных абсолютной ДЛ4 или относительной 6.11 погрешностях мантиссы число верных цифр результата вычислений k = Е [lg(5/6.VJ)J - Е [1g(5.M/A/W)b (6) где Е — символ целой части содержимого квадратных ско- бок. В случае, когда точное значение мантиссы не известно,- его принимают равным минимальному значению Л? = 1 я определяют 6 <5-10-*, k = Е [1g (5/6)|. (7) Если погрешность результата не превышает единицы fc-го слева разряда, то первые k цифр результата называют верными в широком смысле, что соответствует удвоенным значениям погрешностей в формулах (5) — (7). Если аб- солютная погрешность не превышает двух единиц й-го разряда, то содержимое этого разряда называют сомни- fflgibHblM. Источниками погрешностей результатов решения прак- (йческих задач являются погрешности математической мо- дели исходных условий задачи и погрешности вычислений. Погрешности моделирования связаны с принципиальной невозможностью точного отображения физических явлений математическими отношениями и уменьшаются при выборе более точной, но, как правило, более сложной математиче- ской модели связей исходных условий с требуемым резуль- татом решения. Погрешности вычислений делят на операционные и ме- тодические. Причина операционных погрешностей заклю- чается в ограниченной разрядности (числе разрядов) ман- тиссы и порядка в представлениях операндов. Так, малый по абсолютной величине результат вычислений, отличаю- щийся от нуля, но не попадающий в диапазон представле- ния чисел, имеет предельную погрешность А = 1 • 10*", равную половине ширины интервала машинного нуля. Ре- зультат вычислений на ПМК, попадающий в диапазон представления чисел, но содержащий большое число цифр мантиссы, округляется до ее восьми цифр, в евязи с чем Возникает операционная погрешность округления. В рассматриваемых ПМК способ округления зависит От выполняемой операции. Результаты деления округляют- ся отбрасыванием избыточных цифр мантиссы, а резуль- *аты остальных арифметических операций округляются Несимметричным дополнением до восьми цифр по разрядам Убыточной части, например, 10000000 + 0,445= 10000000+ + 0,45 = 10000000 + 0,5 = 10000001; 10000000 + 0,444= 10000000 + 0,44 = 10000000 + 0,4 = ЮОООООО. Таким образом, предельная погрешность округления определяется «ценой» (зависящей от порядка) единицы по- следнего разряда мантиссы. Несмотря на малость этой Погрешности, ее влияние может привести к грубым ошиб- кам. Так, при вычислениях на ЭВМ с производительностью Миллион операций в секунду уже через одну секунду вслед-
ствие только погрешностей округления содержимое шест^ младших разрядов десятичного представления результата может оказаться ошибочным. Однако к грубой ошибке mq. жет привести и единственная погрешность округления. Например, при вычислениях по формуле ((10:3—4)6 + 4) 10s, реализованной на входном языке ПМК программой 10 f3 + 4 — 6x4+1 ВП8х, будет получен результат а = 20. Между тем, его верное значение равно нулю, в чем легко убедиться, преобразовав исходную формулу с приведением к общему знаменателю выражения во внутренних скобках и его сокращением к виду а =((10— 12) 2 + 4) 108 = 0. Необходимо также учитывать, что при вычислениях с ограниченной разрядностью нарушаются дистрибутив- ный, ассоциативный и коммутативный законы арифметики, справедливые для точных чисел. Так, при вычислениях на ПМК (20000 10s5— 18000 - 108Б) = (оо), но (20000 — 18000) 10ЭБ = 2 • 109? и, следовательно, дистрибутивный закон нарушается. Аналогично при вычислениях на ПМК нарушается и ассоциативный закон: 0,4 + 0,4 + 10000000 — = 10000001, но 0,4 + 10000000 + 0,4 = 10000000. Нару- шается также и коммутативный закон, например, 1 - 1048 X X 3 . 10й X 1,5 10 й х 2 • Ю'за = (оо), 2 10“зв х 1,5 X X Ю*м х 3 • 1052 х I 10“ = (0), 2 10-»й х 3 • 105гХ X 1,5 • 10*м X 1 • 10“ = (9). Поэтому, например, сло- жение нескольких чисел начинают с меньших, а множите- ли вводят так, чтобы все промежуточные произведения попадали в диапазон представления, для чего проще всего раздельно умножить мантиссы и сложить порядки множи- телей. К сожалению, в программах автоматических вычис- лений достаточно сложно заранее предусмотреть сочета- ния всех возможных значений операндов. В процессе вычислений операционные погрешности на- капливаются и необходимо выбирать такие алгоритмы, для которых это накопление минимально. Для оценки опера- ционных погрешностей результат f вычислений рассмат- ривают как функцию всех т операндов и результатов про- межуточных вычислений а.:. Раскладывая эту функцию в многомерный ряд Тейлора и ограничиваясь линейными ценами ряда, получают формулу для оценки абсолютной догрешности (S) и относительной погрешности т т 6f = ^«Va-LU ^1 = УЗМ; ! /• / Оа, а; i 1= 1 i= I (9) rjgv коэффициенты и называют соответственно чув- СТрительностями функции / к абсолютным и относительным изменениям а.-. ' .'Формулы для вычисления коэффициентов /?, и Sit ис- пфрьзуемых при опенке результатов выполнения различ- ftfot операций, приведены в табл. 8. Эти формулы, как и ис- 8. Коэффициенты пропорциональности малых погрешностей вйрандов погрешностям результатов выполнения операций йеэультат si >1 + i 7?! = /?я = 1 S1 = + X,), S2 = X2/(X! -P X2) Х2 •< /?! = 1, Д2 --1 51 = Xi/(Xj xa), S2 = — X2/(Xj — ,r2) /?! = xs, Я2 = Х1 s; . sa = 1 5\= 1, Sa= -1 23 З3 И II * * — х м м — и- X; j д = x2, S2 = x2 In хл 1/л- — 1 ,'х -1 !ха 2х 2 Уж 1/2 Vx 1/2 е* е* X 10- 10* In 10 x In 10 1пх 1 /х 1/lnx Igx 1/х In 10 1 /In 10 Inx *in * COS X x/tgx cosx —sin х —x tgx tgx ] /с os'- л: 2x/sin 2.r ercsin л: 1/V 1 -X2 +(K 1 — xi arcsin x) arccosx X/V 1 — х“ 1 /(p 1 — xa arccos .v) arctg x 1/(1 + x/((l + x2) arctgx) 58 59
ходные приближения (8) и (9), справедливы лишь при малых изменениях aL и при нарушении этого допущения могут оказаться неверными. В последнем случае приходится об- ращаться к более сложным методам оценки погрешностей. Наибольшие погрешности возникают при вычитании близких чисел и особенно при делении на их разность. По- этому стремятся так преобразовать алгоритм вычислений, чтобы заменить эти операции другими с меньшими погреш- ностями результатов. Во многих случаях достичь этого удается при умножении и делении разности близких чисел на их сумму с последующим сокращением подобных членов в разности квадратов. Так, при вычислениях на ПМК по формуле а == У"IО’* + х— 10® для х = 100; 10; 1; 0,1; 0,01; 0,005 соответственно получим а = 4,99- 10-2; 4,9- 10"®; 4,9- 10“4;ч0; 0. Между тем, после предварительного пре- образования этой формулы а = (И 10“ + х — 103) х X (У’ИУТх + 1О3)ДУЛ1О6 + Х + 103) = х/(]/10® + X + +103) для тех же значений аргумента получим более точные значения а— 4,9998752 • Ю~а; 4,9996877 • I0”3; 4,999999. 10~4; 5- 10"5; 5 • 10-6. Аналогично при вычислениях на ПМК по формуле а= х/(К10а + х — 10®) для № 1000; 100; 10; 1; 0,5; 0,5; 0,4; 0,2 соответственно получим а = 2000,8003; 2004,008; 2040,8163; 2500; 2500; 5000; оо с явно ошибочными ре- зультатами при малых значениях аргумента. Между тем, при вычислениях по предварительно преобразованной фор- муле а = х(рг Юв + х+ 103)/(У 10® + х— 103) (/10®+ х + + Ю3) = у юэ 4-х + 103 при тех же значениях аргумен- та получим значительно более точные результаты а = = 2000,4998; 2000,0499; 2000,0049; 2000,004; 2000,002; 2000,001; 2000. Подобная ситуация возникает и при решении часто встречающейся задачи вычисления вещественных корней алгебраического уравнения х2 + а^х 4- а0 = 0. Если коэф- фициенты аг и rzj соизмеримы по модулю, то веществен- ные корни МОЖНО ВЫЧИСЛЯТЬ ПО обычной формуле Х|,2 = = —at/2 i V (£j/2)a — а0. Однако при а0 в связи с вычитанием по этой формуле близких чисел относитель- ная погрешность меньшего по модулю корня существенно возрастает, и при й1>2- 104йц корни хг = —alt ха = 0. В таких случаях больший корень целесообразно вычислить по обычной формуле вида х1=±(а + Каг — а0), где а = |—Oj/21, а знак корня противоположен знаку Для вычисления меньшего корня целесообразно преобразовать €0
исходную формулу х2 = ± (а — — а0) = ± (а — (а + К»2 — а0): (а + /а3- ай) = а0/х1. В этом случае, например, при решении уравнения ха 4- 10000x4- ^8=0 по обычной формуле получим л\ = —10000; х2 = ехО, а при вычислении меньшего корня по преобразован- яо9 формуле получим хл = — 10000; х2 — —8 10~4. Рассмотренные примеры подтверждают, что для состав- ления оптимальной программы, обеспечивающей получение результата с требуемой точностью, возможные погреш- ности следует грубо оценить еще на этапе выбора метода решения и лишь после этого приступать к выбору алго- ритма (при более точной оценке погрешностей) и его реали- зации программой. Оценка накопления погрешностей до- статочно громоздка, но ее можно несколько упростить, используя для большей наглядности графы — чертежи, образованные точками и соединяющими их направленными линиями, называемыми соответственно вершинами и ду- гами графа. Для оценки накопления абсолютных погреш- ностей вершины-источники (из которых только исходят дуги) сопоставляют погрешностям исходных данных и погреш- ностям округления результатов операций, вершины-стоки (в которые только заходят дуги) — погрешностям резуль- татов операций, а промежуточные вершины с обозначения- ми операций — погрешностям результатов операций. Все вершины соединяют дугами с весом, равным соответст- вующему коэффициенту Д из табл. 8. Для примера на рис. 9, а показан граф накопления абсолютных погрешно- стей при вычислении у = а — b In (c/d). Подобным образом составляют и графы накопления от- носительных погрешностей с тем отличием, что вершинам- источникам соответствуют относительные погрешности, а веса дуг равны коэффициентам S; из табл. 8 (рис. 9, б). Погрешность результата вычислений определяется по таким графам, как сумма произведений весов дуг на по- грешности в вершинах, из которых исходят эти дуги, по всем путям, от вершин-источников до вершины-стока. На- пример, графу на рис. 9, а соответствует абсолютная по- грешность Ду -с | Д3 + Да — Да — (с/б) (А1 + 4- 4- ЬДс/с2), а при точных исходных данных (Да = Д& = = Дс — 0) Ду | Д3 — Д2 — ckjb ।. Аналогично графу йа рис. 9, б соответствует относительная погрешность Ьу К | б3 + аба/ I а — In (blc) 1 — а! | а — In (&/с) | ) (б2 4* + 4- &b + бс) / In (6/с)) и при точном задании исходных Данных (ба = ЬЬ — бс = 0) бу < I б3 — (а/(а — In (Ыс)} х X(6a4- 6i/In (Ь/с)), 61
Особого внимания требует оценка точности решения линейных алгебраических или трансцендентных уравнений / (х) — О. В общем случае поиск корней (решений) таций уравнений разбивают на этапы определения области ар. гумента, в которой находятся корни, областей нахождения каждого корпя (отделение корней) и сокращение этих об. ластей до размеров, определяемых заданной точностью (уточнение корней). Для первых двух этапов удобно ис- пользовать программы для приближенного определения Рис. 9, значений функции при изменении аргумента. Примером может служить базовая (пригодная для различных функ- ций в левой части уравнения) программа 87 в гл. 3 с авто- матическим изменением аргумента на величину Ах после каждого вычисления функции. Если желательно измене- ние аргумента по логарифмическому закону, то в фрагмен- те, следующем за оператором С/П этой программы, доста- точно заменить оператор + оператором X, а в регистр 8 177/-7— предварительно занести множитель у 10, где т — число точек отсчета функции при изменении аргумента в 10 раз (на декаду). С помощью подобных фрагментов можно орга- низовать изменение комплексного аргумента или несколь- ких аргументов. Определив с помощью такой программы области изме- яеВця знака и минимумы функции, можно уточнить поло- ® ние таких областей при меньшем шаге и, в принципе, найти корни с требуемой точностью. Однако для уменьше- на затрат времени целесообразнее использовать другие кетоди уточнения корней в соответствии с условиями их сходимости. Следует учитывать, что большинство таких истодов, реализованных программами гл. 3.5, не обесне- чявает уточнение вещественных корней, в которых функ- ция не изменяет знак. Примером могут служить уравне- х* — 2ах + и2 = 0 или In х (In х — 2) И- 1 = 0, ко- торые несложно преобразовать к виду (х — 2)2 = 0 и Рис. 10. (In х— I)2 = 0. Для решения таких уравнений приходит- ся использовать другие методы (например, численной опти- мизации, реализованные программами гл. 3.6). Достаточно сложной проблемой является точное опре- деление корней (решений) систем линейных уравнений, мо- делирующих свойства многих физических объектов. При- чины этих трудностей удобно рассмотреть на примере си- стемы из двух линейных уравнений ^11-^1 4* ^12 ^21'^1 4“ ^23X3 отражаемых на плоскости хп х2 прямыми линиями. Если эти прямые сходятся в корне под большим углом (рис. 10, а), то даже при относительно больших операцион- ных погрешностях и погрешностях коэффициентов область Нахождения решения таких уравнений (называемых хоро- шо обусловленными) относительно мала. Прямые плохо обусловленных уравнений сходятся под очень малым уг- лом и небольшие погрешности приводят к значительному 63 62
увеличению (при совпадении прямых до бесконечности) области нахождения корня (рис. 10, б). Примером может служить система уравнений 9,954л:!—30,01 2х2= 9,504; 5,043.^— 15,205х2= 4,815, решение которой на ПМК обычными методами (например, с помощью программы 45 в гл. 3) xL = 10,8; х2 — 3,24' Между тем, точное решение Xj = 10; х2 — 3 можно полу- чить для этой (но не для каждой) плохо обусловленной системы уравнений, например, методами численной оптимп. зации суммы квадратов невязок (значений сумм левых и пра- вых частей уравнений), но затраты времени в этом случае возрастут. Для решения многих задач (связанных, в частности с чис- ленным интегрированием или суммированием сходящихся рядов) используют методы, теоретически обеспечивающие получение точного результата при бесконечном числе опе- раций. Так как практически выполнимо лишь ограничен- ное число операций, то возникает методическая (остаточ- ная) погрешность результата. Иногда ее можно уменьшить, увеличив число операций, но минимально достижимая ме- тодическая погрешность при вычислениях на ПМК огра- ничена «ценой» единицы последнего разряда мантиссы. Кроме того, при увеличении числа операций возрастает операционная погрешность и следует так выбрать алго- ритм вычислений [81, чтобы суммарная погрешность резуль- тата была минимальной, что обычно соответствует равен- ству методической и операционной составляющих. Элементарные функции ПМК вычисляет автоматически по микропрограммам, реализующим методы последователь- ных приближений с методической погрешностью, причем для уменьшения затрат времени точность результата вы-: числения элементарных функций ограничена 5—7 верны-• ми цифрами (табл. 9). Кстати, при оценке погрешностей результата выполнения сложной программы погрешности ' автоматического вычисления функций следует рассматри- вать как операционные, так как их нельзя уменьшить уве- личением числа операций. Решение задач методами последовательных приближе- ний с методической погрешностью реализуют с помощь^ циклов с прекращением их выполнения после достижений требуемой точности. Выход из цикла обычно обеспечивают по условию |х,- —Х;_| [ < е, где Xi — текущее значение ре- зультата вычислений в цикле, а е — малое число, опреде- ляющее требуемую точность. В этом случае максимальна^ точность достигается теоретически при 8 = 0, что соответ- ствует совпадению всех значащих цифр в двух очередны* 64 -Предельные относительные погрешности 8 и числа k верных цлфр результатов вычисления на ПМК элементарных функций — функция Интервал аргумента a k sin х 1 - 1Сг1Э < | < 101'1 3 io-» 6 COS х » » » tg t » arcsin л л < I » arccos x £ 7> arctg a- I • 10 ntJ С X 9.9995999 IO00 }> 1g 1 х > 0 » In X » » » 10 < | X \ < 99,999999 4 10 7 ev I х i < 100 In 10 » » Yx x > 0 1 • 10 -7 7 Xs x < 10s0 » \/x xyfi > Xi> x > 0 3 • 10 ° 5 результатах выполнения цикла. Однако иногда при вы- числениях в цикле возникает погрешность, соответствую- щая примерно половине единицы последнего разряда мантиссы. В этом случае при достижении минимальной погрешности два очередных значения х, и будут отли- чаться на единицу и условие е = 0 окажется невыполни- мым, что приведет к «зацикливанию» программы. Поэтому при выборе условия е = 0 часто приходится оценивать опе- рационные погрешности результата на каждой итерации Цикла и выбирать минимальное значение е > 0, обеспечи- вающее условие выхода из цикла [81. Особое внимание приходится уделять точности вычис- ления специальных функций по программам (см. гл. 3.9), избавляющим пользователя от необходимости обращаться к таблицам функций и их интерполяции. Большинство специальных функций являются решениями дифференциаль- ных уравнений и не могут быть выражены через вычисляе- мые ПМК специальные функции, называемые элементар- ными. Такие функции можно вычислить методами числен- ного интегрирования, но при этом затраты времени быстро ноэрастают с увеличением аргумента. Поэтому используют Различные аппроксимации специальных функций в различ- Нь,х интервалах аргумента, В таких случаях необходимо особенно тщательно выбирать как эти интервалы, так и ме- *°ДЫ аппроксимации, чтобы обеспечить заданную точность всем интервале аргумента при минимальных затратах времени. Б-321 С5
Не следует добиваться точности результата, превышаю, щей требуемую, так как это неизбежно увеличит затрату времени (если только не найден удачный метод решения обеспечивающий высокую точность при малых затратах времени). Более того, большинство физических величин не могут быть измерены с точностью, превышающей 2.. .4 верных цифры, и при вычислениях таких величин не имеет смысла тратить время на получение результата со значи- тельно большей точностью (обычно ограничиваются чис- лом верных цифр, на единицу больше требуемого). 2.3. ОПТИМИЗАЦИЯ МЕТОДОВ И АЛГОРИТМОВ Программирование часто называют искусством, так как при составлении программ решения сложных задач от программиста требуется не только знание физических осо- бенностей условий задачи, методов математического моде- лирования и вычислительной математики, но и умение Рис. И. творчески подходить к решению задачи. Это относится и к решению относительно простых задач, когда удачный выбор модели исходных условий и метода решения позво- ляет существенно упростить отыскание искомого резуль- тата. Известным, но весьма наглядным примером является задача о выборе кратчайшей трассы между пунктами & и В, находящимися на расстоянии а и & от линии п — п (рис, 11, а), при условии, что трасса должна заходить не эту линию. Искомую длину трассы и расстояние х, соот ветствующее минимальной длине, можно найти методами численной оптимизации этой длины А = У аа + ха 4 -г ц- (d — х)а , но это связано со значительными за- тратами времени. Между тем, выбрав зеркальное отобра- жение В' точки В на чертеже, достаточно соединить точ ки А и Вг прямой, которая будет определять кратчайшую длину трассы при х = ad[(a + Ъ) (рис. II, 6). Составление математических моделей физических (ре- существующих) объектов является предметом есте- ственных и, в частности, технических наук. Поэтому в боль- ндшстве случаев программисту достаточно выбрать извест- кую модель исходных условий, связывающую с требуемой точностью исходные данные с искомым результатом. Од- нако одну и ту же задачу можно решить различными мето- дами, от удачного выбора которых существенно зависят оптимальность выбранного пути решения и возможность ее реализации имеющимися средствами. В качестве примера рассмотрим часто встречающуюся задачу решения алгебраических уравнений апРп + ... +а2р2 + агр + а0 = 0, (10) левые части которых являются степенными многочленами в общем случае комплексного аргумента р = х + jy. Пол- ное решение этой задачи сводится к вычислению всех п вещественных или комплексно-сопряженных корней, а точ- ность решения определяется невязками уравнений — зна- чениями их левых частей при подстановке вычисленных значений корней. , Основные затруднения при решении уравнений (10) с помощью ПМК связаны с малой емкостью их памяти, ограничивающей предельную степень решаемого уравне- ния, и характерной для всех ЭВМ конечной разрядностью операндов, усложняющей точное решение уравнений с раз- личающимися по порядку коэффициентами. Однако при тщательном выборе метода решения эти ограничения во многих случаях удается успешно преодолеть. В частности, уравнения с различающимися по порядку коэффициентами иногда удается расщепить на два или бо- лее уравнений низшего порядка. Например, расщепив Уравнение /г + 106р + 1 = 0 на два уравнения р 4- 10°= = 0 и 106р —]=0, получим корни хг = —10е; х2 = & — IO’6 с невязками A (xj = 1 и А (х2) — 10-1а, прием- лемыми для большинства практических задач. Ограничения на максимальную степень уравнения во многих случаях удается снизить, вычислив предварительно все вещественные корни и определив комплексно-сопря- ’ксиные корни по уравнению меньшей четной степени, левая часть которого равна частному от деления левой части Исходного уравнения (10) на множители вещественных Корней р — х(. В большинстве методов определения интервалов нахож- дения отдельных вещественных корней (отделения корней) 11 Их последующего сужения (уточнения корней) до вели- 66 3* 67
чины, определяемой требуемой точностью, использует^ различие знаков невязок на границах интервала. Однаи01 в вещественных корнях четной кратности знак невязки цЕ изменяется и для вычисления таких корней приходится использовать методику нелинейного программирования 10, 12], реализуемую с помощью программ 89, 90, 10g и программ численной оптимизации, описанных в гл. з Используя подобную методику в сочетании с другими тодами решения нелинейных уравнений (реализуемых с по- мощью программ, приведенных в гл. 3.3 и 3.5), можно ре. шать уравнения (10), содержащие до п < 18 вещественных корней. Вычисление комплексно-сопряженных корней уравне- ний степени п < 6 обеспечивают программы 97, 98, 101 и 102 гл. 3, но при ис- пользовании методов к», линейного программиро- вания (в частности, ме- тодов координатного спуска [8, 10, 12]) с по- мощью программ 116 II 117 можно вычислять до п < 12 комплексно- сопряженных корней. В этом случае невязка А [р) = РеЛ (д) + /1тЛ (д) — 'А ‘ е^л рассматривается |8| в качестве целевой функции, нули которой равны иско- мым корням. При этом учитывается, что комплексно-сопря- женные корни многочлена дм+! = xfr(-+! + на плос- кости р расположены симметрично относительно веществен- ной оси и достаточно полуплоскости. Кроме линии равных фазовых значений модуля | А ] контуры. Для примера модулей и фазовых углов многочлена Л (д) — д4 + 2д3 — — 2д2+10 с нулями (корнями) д|ф2 =— 2'±/1 и Дз., = 1 ± /2, Корни многочлена расположены на плоскости д внутри окружности радиуса R-- ] +!аП1ах|/а„ ( t?max — наи- больший из модулей коэффициентов, кроме ап) с центре*1 в начале координат. На линии равных фазовых углов 90° составляющая Re А (д) = 0, а на линии равных фазовый углов 0° составляющая Im А (д) = 0. Следовательно, вЫ' числив значения А (д) на полукружности радиуса R и.Ш описывающем ее прямоугольнике в верхней полуплоскО' найти лишь п/2 корней в верхней того, в нулях многочлена сходятся углов <р = arg А (р), а линии равные образуют вокруг нулей замкнутые на рис. 12 показаны линии равны* по изменению знаков Re А (д) и Im Л (д) можно найти пересечения этих линий с линиями равных фазовых углов 0 иля 90° и проследить методом координатного спуска ли- пни фазовых углов 0 или 90° до их совпадения с искомыми корнями, где А (д) = 0. Затраты времени в этом случае оказываются достаточно большими и зависят в основном от навыков пользователя ПМК, но корни многочлена опре- деляются независимо с точностью, ограниченной лишь опе- рационными погрешностями вычисления многочленов. По- иск корней упрощается при использовании программ, подобных программам 116 и 117 с автоматическим измене- нием приращения координат. Например, в табл. 10 приве- ден один из возможных вариантов поиска корня методом координатного спуска. При п < 12 можно воспользоваться программами гл. 3.3, но в этом случае затраты времени на поиск корней методами нелинейного программирования 10. Поиск нуля многочлена А (р) = ps + ps + р4 + Рэ + Рг + Р 4* 1 методом координатного спуска на плоскости р — X + Jy Исходные данные: =2, &<, = 0 Пуск Re А (р! Тт Л (р> к 4 5 0,5= РЕ БП 3 5 С/П 43,57 134,7 2 0.5 2 С/П -154 !25 2 I 3 С/П -314; 7 -125,1 2 1.5 4 С/П —505 —614 2 Й 6 —0,5= РЕ В/О С/П 129.4 —265,7 1.5 2 6 В/О С/П 139 — !4 1 2 7 В/О С/П 29,23 7.5 0,5 2 8 В/О С/П -51 26 0 2 9 С/П -7,578 5,718 0 1,5 10 с/п 0 I 0 1 11 -0,1 = РЕ В/О С/П —0,192 0.546 —0.1 1 12 В/О С/П —0.15 0.054 -0,2 1 13 с/п —0.059 0.085 -0,2 0,9 14 -0,02 = РЕ В/О С/П —0,025 0,0005 -0,22 0,98 15 —0,002 = РЕ С/П —0.017 0.0943 -0,22 0,978 16 В/О с/п -0,013 0.0038 -0,222 0.978 17 с/п -0.0053 0.00002 —0,222 0,976 18 -0,0005 = РЕ В/О С/П —0,0043 0.02002 —0,2225 0.976 19 -0,001= РЕ С/П —0,0049 0,001'9 —0.2225 0.975 so -0,000! = РЕ С/П +0,00007 0.00013 —0,2225 0,9749 31 0,00005 — РЕ С/П —0,00012 9.00004 —0,2225 0.97495 S2 -0,00001 = РЕ В/О С/П —0,000029 0,00000! -0.22251 0.97495 S3 —0,00002 = РЕ С/П —0,000029 0.00004 —0,22251 0.97493 24 -0,00001 = РЕ В/О С/П —0,00001 -0,000000 —0,22252 0.974 93 К —0.00000! = РЕ В/О С/П —0,000019 —0,000032 —0,222521 0,97493 26 —0,000002 = С/П —0,000000 —0,000000 —0,22252! 0,974928 69 68
существенно возрастают и целесообразно использовав ЭВМ более высокой производительности. После выбора метода следующим этапом является выбос оптимального алгоритма решения задачи в виде словесн^ формульного описания (которым в простейших случае будет расчетная формула) или схемы. Шаги алгоритм; с учетом его последующего представления программе; должны содержать описания операций, непосредствен^ или, во всяком случае, достаточно просто реализуем^ операторами входного языка ПМК- Основным приемом оптимизации алгоритмов являет^ минимизация числа операций, обеспечивающая уменьше- ние операционных погрешностей, длины программы j затрат времени на ее ввод и выполнение. При этом следуй учитывать не только вычислительные операции, но и опе- рации пересылки данных между различными регистрами памяти и операционного стека, на выполнение которыц затрачивается время (кстати, избыточная пересылка данньи является характерной особенностью программ, состав- ленных начинающими программистами). Например, рас- четную формулу у = 21п (х — 1) — 1п (х + 1) целесооб- разно на этапе оптимизации алгоритма заменить формулой у = In ((х—1)а/(х + 1) не только потому, что умень- шится на одну число вычислительных операций, но и по- тому, что сократится число пересылок данных. Типичным примером рационального выбора расчетной формулы является используемое при программировании ЭВМ выражение для вычисления многочленов Л (Р) = (• • • (впр + On-О р 4- • • • + аа) р + aj р + Оо, (П) обеспечивающее минимальное число операций и, следова- тельно, минимальную операционную погрешность резуль- тата вычислений. В программах эту формулу часто используют также в рекуррентной форме Д* = Ak—i р + k> k = 1, 2, ..., п, (12) где Ао = а0 и Ап =А(р). Особое внимание следует уделять оптимизации расчет- ных выражений, охватываемых циклом при реализации методов последовательных приближений, когда число ите- раций зависит от сходимости решения и может быть очень большим. В этих случаях даже незначительное сокращу ние числа операций и времени выполнения таких выра?ке' ний может дать существенное уменьшение общего времени выполнения программы. Достаточно эффективное средство уменьшения числа операций и времени счета заключается в предварительном нормировании коэффициентов, переменных и результатов расчетных формул. В простейших случаях нормирование используют для приведения результатов операций в диа- пазон представления чисел, но его можно использовать и для оптимизации программы. Например, при операциях над степенными многочленами их обычно нормируют деле- нием на один из коэффициентов (чаще всего на ап), что не изменяет положения нулей многочлена, но снижает требо- вания к ресурсу памяти ПМК, где хранятся коэффициенты. Так, многочлен А (р) = 4 1018/?3+ 1,6 10 V + 6,4 107р + 2 • 102 (13) можно нормировать как А (р)/4 • 1018= дз + 4 - 10 V 4- 1,6 . 10"“р + 5 - КО-1®, или А(р)/200 = 2 10V 4- 8 • Ю>2 + 3,2 • 105р + 1 и т. п. Подобное нормирование применимо и для дробно-ра- циональных функций (отношений степенных многочленов), значения которых не изменяются при делении числителя и знаменателя на один из коэффициентов. Часто используют нормирование аргумента. Так, для многочлена (13) при подстановке р = г/10* получим A (z) = 4?3 4- 1,6?2 4- 64? + 200; A (z)/4 = zs 4- 0,4z2 + 4- 16? + 50; А (?)/200 = 0,02?3 + 0,008?2 4- 16? 4- 50 и т. д При подстановке р = цу/(>/^20 I05) получим А (&у)/200 = *=ии3 + 0,8 (V20)2xi2 -4- 3,2у”20 ^4- 1 только с двумя от- личными от единицы коэффициентами. Особенно эффективно нормирование для расчетных формул, реализующих вычисления на одной итерации в ме- тодах последовательных приближений. Например, для реше- ния подобным методом уравнения ofe''*— 1) + сх — 0 его Целесообразно представить в виде ег — 1 4- 2d = 0, где z = bx, d = c[ab. После вычисления корня ?* такого уравне- «ня легко определить корень х* = z*jb исходного уравнения, причем затраты времени на решение преобразованного ура- внения существенно меньше исходного. Для ускорения решения дифференциальных уравнений Мокет оказаться целесообразным нормирование даже неза- 70 71
висимых переменных. Например, для упрощения решения дифференциального уравнения ^+6-10зу + 1,1 • 10^ + 6. 109х = 0 целесообразно перейти к независимой переменной т = 10®х, так как тогда dх dx d-r __ 1 пз Ф?. — 1 лв ^а.я . d8x _ . pfl d3x di — dr di — U dr ’ di2 — 1U dtB ’ di3 ~ 1U dt3 и после сокращения на 109 правой и левой части получим уравнение d3x . с d2x . , f dx , ~ т-з+6т^ + 11з- + ох=0, di3 dt2 dx 1 отличающееся от исходного лишь масштабом независимей переменной. Нормированием в широком смысле является и преоб- разование расчетных формул с выделением фрагментов, обозначаемых определенными символами (именами) и вы- числяемых отдельно. Использование подобного приема часто упрощает вычисления и позволяет уменьшить длину программы в тех случаях, когда в исходной формуле име- ется несколько однотипных фрагментов. Если задачу не удается решить с помощью одной программы, выделение однотипных фрагментов облегчает составление оптималь- ного пакета программ. Рис. 13. В качестве примера рассмотрим вычисление ослабле- ния G мощности при передаче электрической энергии or источника о сопротивлением г0 в нагрузку с сопротивле- нием гн через цепи, отображаемые эквивалентными П- или Т-образными схемами (рис. 13). Ослабление мощности в децибелах вычисляют по формуле G = 20 lg (1 /К) - 20 1g ((г0 4- г„)/гв), где К = цв?4/о — отношение напряжений на нагрузке и ис- точнике напряжения. Составив математические модели электрических процес- сов в рассматриваемых целях в виде систем уравнений 72
узловых напряжений и контурных токов 181, получим рас- четные формулы для ослабления мощности в цепи с Т-об- разной схемой (рис. 13, а) (?т = 201g (1 + г3/г4 + (г0 + г3) (1/гя + 1/г2 + + г3/гагн)) — 20 1g ((г0 + г„)/гн) Л в цепи с П-образной схемой (рис. 13, б) Ga = 20 1g (1 + r2/r3 + г3/гн + r0 (1 /rt + r2 (1 /г3 + 4- +r0(l/r3+ 1/ги) — 201g((r0 4-Гн)/Гн). Каждую из этих формул несложно реализовать на вход- ном языке ПМК, но общая программа будет длинной и вре- мя счета большим. Между тем, выделив в этих формулах одинаковые фрагменты, можно представить их выражениями 6Т = 20 1g ((1 + aryjrj bra + arjc); G„ = 201g ((1 4~ пга/re) bra -j- аги/с), где переменные а = 1 4- гв/гх, 6=14- с = г0 4* Аг. В связи с однотипностью структуры обоих выражений большую часть операций можно отобразить одним фрагмен- том, дополнив его операторами, относящимися только к вычислению GT или G„ . В этом случае алгоритм вычис- лений отображается на входном языке достаточно корот- кой программой НПЗ ИП1 П8 ИП2 ИП0 ИП1 — 1 4- П9 X X + ИП4 ИПЗ I* + X ИП8 ИП9 X 4- НПО ИП4 + -— 1g 2 0 X СП ИП4 П5 ИП0 ИП2 ЙП0 БП 04 с инструкцией: (г0 = РО, rt = Pl, r2 = Р2, rs = P3, rH = = P4), В/О С/П РХ — GT С/П РХ = Gn; для вычисления только Gn нажать клавиши БП 3 3 С/П. При г0 — 100 Ом, гг = 75 Ом, га = 38 Ом, г3 = 19 Ом, гн = 50 0м по этой программе получим GT = 11,46924 дБ (время счета ( да 9 с) и Сп = 14,559761 дБ (( да 10 с). Подобным образом целесообразно предварительно пре- образовать и другие расчетные формулы и алгоритмы, до- биваясь оптимальности их программного представления. Иногда приходится вычислять различные величины, свя- занные одним уравнением / (хп х2, ..., хп) = 0. В таких случаях целесообразно составить расчетные формулы для Каждой неизвестной величины при известных остальных и, по возможности, объединить общие фрагменты расчетных формул. Если все величины X/ не принимают в рассматри- ваемой области нулевых значений, то целесообразно выде- лить для каждой из вычисляемых величин определенный 73
регистр памяти и для автоматизации выбора нужной фор. мулы вместо неизвестной величины вводить в соответствую- щий регистр нуль, используя следующий алгоритм: 1. Если Xi = 0, то вычислить Хр 2. Если х2 = 0, то вычислить хг. п — 1. Если хп-] =0, то вычислить хп_\. п. Вычислить хп. В качестве простейшего примера составим ирогра'.г: вычисления величин, входящих в формулу / = 1/2р) ЛС для частоты резонансной системы с параметрами L и С (ко- торыми, например, могут быть длина и масса маятника или индуктивность и емкость электрического контура). В соответствия с этой формулой L — 1/(2л/)3 С и С = — 1/\2л/У L. Выделив для переменных /, L и С соответ- ственно регистры Л, Ви С, составим для решения рассмат- риваемой задачи программу ИПА х = 0 13 ИПС ИПВ х / 2 х л X 1 /х С/П ИПВ х = 0 26 ИПА 2 X л X х2 ИПС х 1/х С/П ИПВ 2 х я X х2 ИПВ х 1/х С/П с инструкцией: (f РА, L — РВ, С = PC, вместо неиз- вестной величины х ввести 0) В/О С/П РХ = х. Так как во всех расчетных формулах содержится мно- житель 2л, то при размещении фрагмента вычисления этого множителя в начало программы ее длина уменьшается: л 2 X ПО ИПА х~0 10 ИПС ИПВ х V ИПО X 1/Х С/П ИПВ х= 0 26 ИПА ИПО X х2 ИПС х 1/х С/П ИПА ИПО X ха ИПВ х 1/х С/П Переписав расчетные формулы L — 1/С (2л/)3 и C=l/Lx X (2л/)2, можно объединить фрагменты вычисления одинако- вых множителей: я 2 х ПО ИПА х=0 15 ИПС ИПВ х И ИПО X 1/х С/П ИПВ х=0 26 ИПС ИПА ИПО х х3 х 1/х С/П ИПВ БП 19 Наконец, совмещая окончания всех трех разветвлений программы и учитывая, что при невыполнении второго про- веряемого условия содержимое регистра В сохраняется в регистре X, получим л 2 X ПО ИПА х=0 15 ИПС ИПВ х / ИПО х 1/х С/П ИПВ х=0 19 ИПС ИПА ИПО х х2 БП 12 74
Таким образом, даже для рассматриваемой простой за- дачи удалось значительно сократить программу ее решения, совмещая оптимизацию алгоритма с оптимизацией его Программного представления и используя особенности вход- ного языка. Заметим, что в общем случае для сокращения затрат времени на ввод программы в программную память при обращениях к памяти целесообразно в первую очередь использовать (если нет других соображений) регистры 9, 8, 7, 6, 5, ..., номера которых набираю!ся клавишами, расположенными наиболее близко к клавишам с коман- дами обращения к памяти х П и П х. 2.4. ИСПОЛЬЗОВАНИЕ ОСОБЕННОСТЕЙ ВХОДНОГО ЯЗЫКА При составлении и оптимизации программ необходимо наиболее полно использовать все лексические и синтакси ческие особенности входного языка ПМК. Это относится прежде всего к реализации разветвленных алгоритмов в минимизации длины программы с помощью операторов перехода. Длину программы часто удается сократить при обраще- ниях к подпрограммам. Если в алгоритме можно выделить h однотипных фрагментов, каждый из которых реализуется т шагами программы, то общее число занимаемых такими фрагментами шагов программы равно пт. При выделении одного такого фрагмента в подпрограмму, заканчиваемую оператором В/О, и замене каждого из п фрагментов про- граммы оператором ПП ab обращения к подпрограмме (за- нимающим два шага) общее число шагов, соответствующих исходным фрагментам, составит т 4- 1 + 2п. Следова- тельно, при введении обращения к подпрограмме длина программы изменится на число шагов AL = тп — (2п + т + I) (14) и при AL > 0 или тп >> 2п + т + 1 длина программы Уменьшится. Соотношение (14) удобно использовать для оценки целе- сообразности обращения к подпрограмме для сокращения Длины программы. Так, если в программе содержится два или три одинаковых фрагмента, то длина программы сокра- тится лишь в том случае, когда эти фрагменты занимают соответственно т > 5 или т Z> 4 шагов. Обычно подпрограммы записывают после оператора С/П или оператора безусловного перехода. Однако в тех случаях, когда обращения к подпрограмме размещены 75
в окончаниях разветвлений программы (например, ... FIF] ab С/П ... ПП ab С/П Ф В/О, где Ф — подпрограмма, a ab адрес ее оператора), можно сократить на два шага ее длину объединяя разветвления программы как ... БП ab ... С/П В/О. Примером может служить окончание программы з в гл. 3. Возможны различные способы уменьшения длины про- граммы со сложными разветвлениями при использовании обращений к подпрограммам и их вложениям (обращениям из подпрограммы к подпрограмме), причем следует учиты- вать, что можно переходить не только к началу, но и к лю- бому шагу подпрограммы с помощью различных адресов в операторах обращений к подпрограмме. Однако при вве- дении подпрограмм, как и при использовании различных операторов перехода, время выполнения программы увели- чивается в связи с затратами времени на выполнение пере- ходов. Если в алгоритме имеется последовательность из п оди- наковых фрагментов Ф длиной т шагов каждый, то целе- сообразно заменить их циклом ... Ф LN ab ..., где адресный 1 регистр оператора цикла N -с 3, a ab — адрес перехода к первому шагу фрагмента. В этом случае перед выполне- 1 нием цикла в адресный регистр N оператора цикла должно быть занесено требуемое число п итераций. При этом сле- дует учитывать, что после выполнения п итераций и выхо- да из цикла содержимое адресного регистра РХ = 1 и при повторном выполнении программы без изменения содержи- мого регистра W фрагмент Ф выполнится только один раз. Применение оператора цикла LN ab для организации вычислений в цикле с заданным числом итераций позволяет уменьшить длину программы на величину AL — тп — (т 4-2) (15) уже при т > 2, п > 2. Примером эффективного использования оператора цик- ла может служить программа вычисления факториала al = i = а(а — 1) (a — 2) ... 2 1 положительных целых чисел а < 70 (при больших значениях а возникает переполнение в связи с попаданием результата в область машинной бес- конечности) ПО 1 НПО х LO 02 С/П с инструкцией: а — РХ В/О С/П РХ = а\. При выполнении этой программы оператор ПО заносит содержимое регистра X в адресный регистр 0 оператора цикла, после чего вычисляется 1 X а = а. При невынолне- 76 I
дни условия РО = 1 оператор цикла передает управле- ние оператору ИПО, вызывающему модифицированное /уменьшенное на единицу) содержимое регистра О и сме- [цаЮЩОе предыдущее’ содержимое регистра X в регистр У, после чего предыдущее частное произведение умножается на содержимое регистра О. Подобные операции продолжа- )отся до выполнения условия РО = I, соответствующее вычислению факториала, выходу из цикла и прекращению выполнения программы с высвечиванием значения фак- ториала а!. «/Картонное» (не предусмотренное руководством по экс- плуатации ПМК) использование оператора ВП [12] перед первым оператором этой программы обеспечивает и вычис- ление факториала неотрицательных чисел а < 70, включая О! = 1. При решении некоторых задач целесообразно последо- вательно использовать одинаковые операторы цикла с уче- том модификации содержимого их адресного регистра N после каждого выполнения такого оператора (см. програм- му 14 гл. 3), но в большинстве случаев используют опера- торы цикла с различными адресными регистрами А’ < 3 в одной программе. При этом удобно использовать возмож- ность арифметических операций над содержимым адрес- ного регистра перед выполнением оператора цикла или операторов косвенной адресации. Если регистры памяти с номерами N < 4 требуются для других целей, циклы с заданным числом итераций могут быть сформированы с помощью операторов прямых или косвенных условных переходов. В этом случае операторы условного перехода дополняют счетчиками итераций вида ИПК 1 — nN с предварительным занесением в регистр W памяти числа п итераций или заменяют оператор LN ab фрагментом ИПИ 1 — nN х = 0 abt но тогда необходимо обеспечить (например, с помощью оператора -> в начале цикла и поме условного оператора или с помощью опера- торов засылки в память и вызова из нее результатов вы- числений в цикле) устранение из регистра X содержимого регистра/V после выполнения условного оператора. Иногда условный оператор х = 0 ab целесообразно заменить дру- гим условным оператором в зависимости от выбранного условия выхода из цикла. В некоторых случаях удобнее организовать цикл с заме- ной оператора цикла фрагментом вида ИП^ 1 — nNt MnN2 — х = 0 ab с предварительным занесением в регист- ры и JVa чисел, разность которых равна требуемому числу итераций. Сокращения числа шагов на один в подоб- 77
ных случаях достигается при использовании фрагментов ИПМХ 1 — nNi Кх = ONa или ИПМХ ф nNx ИПН, Кх = ON3 с предварительным занесением адреса перехода к началу цикла в адресный регистр с номером Л/2 > 6 опе- ратора косвенного условного перехода. В качестве регистров-счетчиков также используют адрес- ные регистры операторов KPfflN при А < 3, если требует- ся уменьшение на единицу содержимого счетчика. Напри- мер, оператор цикла заменяют фрагментом КИПО ИПО х = 0 ab с предварительным занесением числа итераций в адресный регистр. При этом оператор КИПО может быть размещен в любом удобном месте в фрагменте, охваченном циклом. Аналогично в качестве счетчиков числа выполнения фрагментов программы используют операторы КИПМ с адресным регистром 4 < W < 6 при исходном содержи- мом адресного регистра, равным нулю. Например, рассмот- ренный выше оператор цикла, составленный из нескольких операторов входного языка, можно заменить фрагментом КИП4 ИП4 HnNj — х = 0 ab или КИП4 ИП4 ИПЬ1Х ~ Кх = ONa, где адресный регистр N2 > 6, а в регистры 4 и 2УХ перед выполнением цикла должны быть занесены числа, разность которых равна требуемому числу итераций. Операторы косвенной адресации и прежде всего опера- торы КИПИ (при выполнении которых не изменяется содер- жимое других регистров памяти и не выполняются неже- лательные переходы) могут быть также использованы при необходимости для замены операторов [х] и (х) выделения целой и дробной части чисел, но такая замена целесообра- на лишь в том случае, когда одновременно операторы кос- венной адресации выполняют и другие функции. Основное назначение операторов косвенного обращения к памяти заключается в упрощении операций над последо- вательностями (массивами) чисел, хранимых в числовой памяти. Примером может служить автоматическая очистка регистров памяти 1, 2....Е с помощью фрагмента 1 3 ПО 1 5 П1 Сх КП1 LO 06. При первом выполнении этого фрагмента в адресные ре- гистры заносятся исходные данные, очищается регистр Е, код 14 которого равен модифицированному содержимому регистра 1 и оператор цикла передает управление опера- тору Сх для продолжения очистки остальных регистров памяти, прекращающейся, когда модифицированное со- держимое адресного регистра оператора цикла становится равным единице и очищены все 13 заданных регистров памяти. 7в
z Особенно часто приходится использовать операторы кос- венного обращения к памяти при решении сложных задач с большим числом промежуточных результатов, которые Приходится распределять в памяти различными способами И вызывать в регистр X для продолжения вычислений. Менее употребительны операторы косвенных переходов, но и их использование во многих случаях позволяет уменьшить длину программы или время ее выполнения, а также до- полнительные затраты времени на выполнение вспомога- тельных «ручных» операций. При минимизации длины программы, особенно в слу- чаях, когда длина составленной программы лишь на не- сколько шагов превышает емкость программной памяти, приходится использовать все особенности входного языка, включая «жаргонные». Кроме «жаргонных» применений оператора ВП, подобных рассмотренному, целесообразно, например, использовать то обстоятельство, что при пере- ходе ко второму шагу операторов безусловного (включая оператор обращения к подпрограмме) и условного перехода с помощью других операторов перехода адрес на втором шаге распознается в регистре КОП как операнд, над ко- торым будут выполняться следующие за этим адресом опе- раторы. Некоторые из «жаргонных» операторов рассмат- риваются далее, но при использовании таких операторов нужно быть очень внимательным, чтобы не возникли не- желательные побочные эффекты. Иногда приходится использовать пакет программ в свя- зи с недостаточной для хранения исходных и промежуточ- ных результатов емкостью числовой памяти. В таких слу- чаях прежде всего следует попытаться выбрать метод и ал- горитм решения задачи, обеспечивающие минимальное число исходных данных, с использованием, в частности, нор- мирования коэффициентов, переменных и результатов вы- числений. Следует тщательно выбрать программное пред- ставление алгоритма с минимальным числом регистров па- мяти (называемых в этом случае буферными), требуемых для временного хранения промежуточных результатов вы- числений, и использованием одних и тех же буферных ре- гистров для хранения различных последовательно вычис ляемых результатов, Однозначные операнды или даже опе- ранды с несколькими значащими цифрами целесообразнс в этих случаях заносить непосредственно в текст програм мы, используя по возможности наиболее короткие пред ставления чисел для уменьшения длины программы (на пример 2 1/х вместо 0, 5; 3 1/х вместо 0, 3 3 3 е* вместо 2, 7 1 8 2 8 1 8; 2 у" вместо 1,4 1 4 2 13 5 7
л вместо 1 8 0° и т. п.). Если по программе вычисляется несколько результатов, то требования к числу регистров памяти уменьшаются при вводе в программу операторов С/П регистрации очередного результата без хранения в па- мяти. В подобных случаях для хранения текущих значении переменных целесообразно использовать все регистры опе- рационного стека. Так, регистр XI можно использовать для «операций с константой», когда один и тот же операнд ис- пользуется в нескольких одноместных или двухместных операциях. Например, для умножения содержимого ре- гистра X на содержимое нескольких регистров памяти с за- несением результатов в те же регистры можно использо- вать оператор Вх вызова содержимого регистра XI в фраг- ментах вида ИП1 ++ х П1 ИП2 Вх х П2 НПЗ Вх х ПЗ ... , причем над вызываемым содержимым регистра XI могут выполняться и другие операции. Во многих случаях для хранения одной из переменных с целью уменьшения требуемого ресурса памяти удобно использовать операционный стек, при смещении содержи- мого регистров которого «вниз» содержимое регистра Т сохраняется. Примером может служить программа 25 из гл. 3, после пуска которой и выполнения операторов t КИПЕ ИПЁ исходное содержимое регистра X оказывается занесенным в регистры Z и Т и в дальнейшем хранится в операционном стеке. Следует учитывать, что в связи со значительными за- тратами времени на переходы, короткие программы вычис- ления многочленов, подобные программе 25, целесооб- разно использовать лишь при однократном вычислении многочлена, когда время счета соизмеримо со временем ввода программы. Если же многочлен должен вычисляться многократно при различных значениях аргумента, то це- лесообразно минимизировать время счета, отказавшись от условных переходов и операторов косвенного вызова из памяти. Примером может служить программа 29 из гл. 3, в которой для хранения аргумента также использован операционный стек. Кстати, в операционном стеке могут храниться и несколько переменных (см. программы 2 или 44 гл. 3). Во многих случаях при использовании операционного стека в программу приходится вводить и другие синтакси- ческие операторы, в частности оператор поворота опера- ционного стека, смещающий «вниз» содержимое опера- 80
ционных регистров. Чаще всего этот оператор исполь- зуют для замены уже ненужного (например, занесенного в память) содержимого регистра X содержимым регистра у. Если при этом прежнее содержимое регистра Y должно сохраняться в операционном стеке, то для стирания со- держимого регистра Т, равного прежнему содержимому регистра X после выполнения оператора используют оператор f или вызов из памяти, обеспечивающие смеще- ние содержимого операционного стека «вверх» и засылку в. регистр Т содержимого регистра Z. Достаточно часто в программах приходится использо- вать также синтаксические операторы Сх для стирания со- держимого регистра X без изменения содержимого осталь- ных регистров операционного стека и оператор для изме- нения порядка ввода в двухместные операции или порядка следования содержимого регистров X и У. В библиотеке программ в гл. 3 можно найти много- численные примеры разнообразного использования опера- торов входного языка и его грамматических правил для обеспечения оптимальности программ. В частности, в ряде программ оператор В/О (в соответствии с рассмотренными в гл. 1.5 правилами работы адресного стека) использован в качестве оператора безусловного перехода ко второму шагу программы с адресом 01. Надлежащий выбор опе- раторов обеспечивает и оптимальную структуру про- грамм решения сложных задач. В частности, оператор С/П в ряде случаев целесообразно размещать в подпрограммах или даже начинать программу с этого оператора. 2.5. ФОРМИРОВАНИЕ СОСТАВНЫХ ОПЕРАТОРОВ В связи с неформальным (без ключевых слов) пред- ставлением операторов алгоритма во входном языке рас- сматриваемых ПМК любой фрагмент программы, который можно представить отдельным шагом алгоритма, следует Рассматривать по отношению к словарному запасу входного языка ПМК как составной оператор. Словарный запас вход- ного языка рассматриваемых ПМК достаточно обширен, но не может охватить всех операторов, используемых во вход- ных языках ЭВМ различных типов. Однако большинство операторов других алгоритмических языков, если нет су- щественных конструктивных ограничений, могут быть ото- бражены в программах на входном языке рассматриваемых ПМК составными операторами. В качестве примера укажем условный арифметический °оератор IF A mi т3 распространенного языка про- 81
граммирования ФОРТРАН, используемого в основном для программирования стационарных универсальных ЭВМ Этот оператор имеет три выхода и передает управление другому оператору программы с меткой /лг, если число А, значение переменной А или результат вычислений ц0 формуле А больше нуля, оператору с меткой m2t если А =^0, и оператору с меткой ms, если А > 0. Такой условный опе- ратор легко представить на нашем входном языке состав- ным условным оператором, например х #= 0 агЬг х <; < 0 агЬ2, передающем управление по адресу айЬ2, если содержимое х регистра X больше нуля, по адресу если х — 0, и следующему после составного условного опе- ратора шагу программы, если х > 0. Подобным образом отображаются и многие операторы других алгоритмических языков. Так, в языках програм- мирования многих универсальных микроЭВМ содержатся операторы установки, снятия и проверки флага. Флагом называют определенный признак («узелок на память») вы- полнения некоторого условия в предыдущей части програм- мы или, в общем случае, ранее выполненном ее фрагменте. Этот признак отображается операторами STFG пили SF п ус- тановки n-го флага. Если в ходе выполнения программы не- обходимость в флаге отпадает, то используют операторы снятия флага, обозначаемые обычно символами CL FG п или CF п. Наличие n-го флага проверяют условным опера- тором 1FFG п? т или Фл? т, который передает управле- ние оператору с меткой т при отсутствии (в некоторых язы- ках — при наличии) n-го флага. В противном случае вы- полнение программы продолжается с оператора, записан- ного после оператора проверки флага. Операторы флагов используют в тех случаях, когда ход выполнения программы зависит от некоторого условия в ра- нее выполненном фрагменте программы. Для отображения операторов установки и снятия флагов на входном языке рассматриваемых ПМК достаточно выделить регистр А Памяти и принять нулевое или ненулевое его содержимое как признак снятия или установки флага с помощью опера- тора nN, заносящего в регистр М соответствующее зна- чение. В этом случае для проверки флага достаточно использовать составной оператор ИПГ4 х = 0 ab или HHN х #= 0 ab, передающий управление по адресу ab при установленном или снятом флаге. В качестве простей- шего примера использования флага рассмотрим случай, когда при каждом пуске программы поочередно должны выполняться две различные ветви программы. В этом слу* чае целесообразно ввести в программу составные опера- 82
фры флагов ... HTIN х 0 ab Сх FIN ... С/П I jjjsl ... С/П. Если перед первым пуском программы флаг не установлен (pN = 0), то оператор проверки флага передаст «правление по адресу ab оператора 1 nN, и после уста- новки флага выполнится следующая за ним ветвь програм- му. При следующем пуске программы флаг окажется установленным и оператор проверки флага передаст управ- ление оператору Сх nN снятия флага и следующей за ним ветви программы. Подобные никлы будут повторять- ся и для всех последующих пусков программы. Во входных языках некоторых микроЭВМ содержится оператор PAUSE, при считывании которого выполнение про- граммы прекращается на несколько секунд для регистрации результата вычислений. Во входном языке рассматривае- мых ПМК этот оператор проще всего заменить оператором С/П с нажатием (после регистрации результата предыдущих вычислений) клавиши С/П для продолжения выполнения программы. В системах внешних команд многих универсальных ста- ционарных и микроЭВМ имеются служебные или программ- ные команды, обеспечивающие изменение разрядности операндов или, по крайней мере, результатов вычислений. Для уменьшения числа разрядов мантиссы, содержащих вначащие цифры, с восьми до меньшего числа k, для рас- сматриваемых ПМК можно воспользоваться следующим алгоритмом: 1. Вычислить b = a 10s, где а— исходное число, s = 8 — k. 2. Вычислить с — b а. 3. ВЫЧИСЛИТЬ Qj = с — Ь. При выполнении этого алгоритма сумма исходного числа а и большего числа b округляется в ПМК до восьми цифр и после вычитания из полученного результата числа b в числе сохранятся только те k цифр, которые остались после суммирования b и а. На входном языке рассматриваемых ПМК этот алгоритм реализуется составным оператором f ВП s + Вх — , где s—оператор набора числа $ — 8 — k. Напри- мер, при k = 5 и s = 8 — 5 = 3 после выполнения такого составного оператора получим 7,8945612 « 7,8946; 78945612 aj 78946000; 0,0789456 « 0,078946; 7,8945612 х X КГ6 « 7,8946 10"®. В некоторых случаях можно упростить подобный со- ставной оператор. Например, если число а меньше единицы, для сохранения в нем- k значащих цифр достаточно сло- вз
• П жить с ним и вычесть из него s-значное число. Например, 0,9876543 + 100— 100 = (0,98765). Во входных языках некоторых микрокалькуляторов и микроЭВМ имеется оператор, обычно обозначаемый сим- волом FIX т для ограничения результата вычислений а значащими цифрами после запятой (например, при по- строении графиков по результатам вычислений или для приведения многозначного результата к числу цифр, с которыми может быть измерена соответствующая физиче- ская величина). Реализацию подобного оператора на вход- ном языке рассматриваемых ПМК обеспечивает следующий алгоритм: 1. Вычислить b = а + 1(К где q — 7 — т. 3. Вычислить Й! ~ b — 10’. Этот алгоритм реализуется составным оператором t 1 ВП q + Вх — , где q — оператор набора од- нозначного числа q, а оператор | необходим лишь в тех случаях, когда исходное содержимое регистра X наби- рается операторами набора цифр, а не является резуль- татом других операций. При выполнении этого опера- тора, например, для т = 2 и q = 5 получим 789,45612 да да 789,46; 7,8945612 да 7,89; 7894,5612 да 7894,56. В некоторых алгоритмических языках или системах внешних команд стационарных ЭВМ предусмотрена воз- можность вычислений при повышенной разрядности опе- рандов (что требует большего времени счета, ио обеспечи- вает повышенную точность результатов вычислений). Хотя разрядность операндов в ПМК ограничена конструкцией запоминающих устройств, возможно повышение разряд- ности операндов при арифметических операциях с помощью составных операторов, реализующих операции последова- тельно над отдельными частями (блоками) многоразрядных представлений чисел. Так, многозначные слагаемые можно разбить (начиная с младших разрядов), на блоки по семь или менее в старшем блоке разрядов и выполнять операции сложения над каждым блоком в отдельности. В этом случае может поя- виться единица в старшем разряде блока слагаемых одного порядка, но ее несложно перенести в младший разряд сле- дующего блока, отняв при этом 1 • 10’ от данного блока суммы. Примером реализации подобного составного опе- ратора может служить программа 10 в гл. 3, но подобным образом можно организовать точное сложение и чисел с большим числом знаков. Эти же программы можно ис- пользовать и для вычитания, причем в этом случае их моЖ' ; 84
но упростить, так как потребуется заем, а не перенос еди- ницы, если вычитаемое больше вычитаемого. При реализации умножения с двойной точностью сле- дует учесть, что восьмиразрядный результат умножения, высвечиваемый на индикаторе, может быть точным лишь в случае когда каждый множитель содержит не более четы- рех значащих цифр (например, 9999 X 9999 = 99980001). Следовательно, для точного умножения двух восьмираз- рядных чисел их следует представить в показательной форме с целыми мантиссами и разбить каждую из мантисс на два блока, младший из которых содержит четыре раз- ряда. Тогда для мантисс а = щ 104 4- а0 и b = &J04 4- Ьо произведение а X b = a^JO8 + (щЬо + аД) Ю4 + а0&0. Если представить второй член произведения суммой двух блоков (аД + с А) = (аД + Ю4 4- (аД + ааЬу), каждый из которых содержит по 4 разряда, то результат умножения а X b = (аД 4- (щЬ0 + аДК) 10s + ((аД 4 + йА)и Ю4 4 можно занести в два регистра памяти по блокам, содержащим 8 разрядов. Подобное умножение с двойной точностью реализовано в программе 11 гл. 3, Несколько проще можно реализовать деление с произ- вольной точностью двух чисел с восьмиразрядными ман- тисеами. Для этого можно воспользоваться обычной схе- мой деления, ограничиваясь на каждом шаге целой частью очередного частного. Тогда после первой операции деления получим целую часть [с] частного с = а/b (см. программу 12 гл. 3), а при каждом следующем делении — очередную цифру частного. Составные операторы могут представлять собой не толь- ко самостоятельные фрагменты программы, но и целую про- грамму. Подобная ситуация, в частности, характерна для решения на стационарных ЭВМ сложных задач (например, автоматизации инженерного проектирования) с помощью хранимых в памяти программ для решения частных задач. Для вызова каждой из таких программ используют иден- тификаторы (имена программ), образованные по опреде- ленным правилам из элементов алфавита входного языка. Каждый такой идентификатор является символом опера- тора высшего уровня (составного оператора), трансли- руемого на входной язык вызываемой программой, каждый оператор которой, в свою очередь, транслируется в ЭВМ на язык низшего уровня в бинарных кодах. Совокупность подобных операторов высшего уровня и операторов вход- ного языка, используемых совместно с ними (например. Аля ввода операндов), образует словарный запас языка Аысшего по отношению ко входному языку ЭВМ уровня, 85
который часто называют языком управления заданиями. Грамматические правила такого языка определяются ин- струкциями по использованию комплекса программ. При вычислениях на ПМК также приходится составлять комплекс программ, выполняемых самостоятельно при ре- шении задач с операциями над однотипными сложными операндами (например, комплексными числами или векто- рами) или с выполнением функций определенного класса (например, гиперболических и обратных гиперболиче- ских). ' После занесения частных программ комплекса в программную память для вызова каждой частной про- граммы подобной составной программы можно использо- вать операторы В/О С/П для вызова программы, код пер- вого шага которой занесен в ячейку программной памяти с адресом 00, и операторы БП а b С/П для вызова программ, первый шаг которых записан в программе по адресу ab. Совокупность этих операторов и образует сло- варный запас языка высшего уровня вместе с операторами набора чисел, а грамматические правила такого языка описываются инструкцией к пользованию составной про- граммой. Недостаток выбора подобных операторов высшего уров- ня заключается в трудности их запоминания и необходимо- сти обращения к инструкции для вызова каждой из частных программ. Поэтому для облегчения пользования состав- ной программой целесообразно так выбирать операторы высшего уровня, чтобы они легко запоминались и не было необходимости в непрерывном обращении к инструкции по выполнению программы. В тех случаях, когда с помощью составной программы над сложными операндами выполняются арифметические или аналогичные им операции, целесообразно использовать в операторах высшего уровня символы арифметических операций. Эту задачу можно решить различными способами. Один из них заключается в использовании «жаргонных» операторов обращения к памяти с вводом в оператор ИПЫ вместо номера N регистра памяти, где хранится адрес начала нужной частной программы, символов +. —, Л - -4- или о. В этом случае после выполнения такого «жар- гонного» оператора будет вызвано из памяти в регистр X соответственно содержимое регистра 0, 1, 2, 3 или 4. Сле- довательно, если начать составную программу, например, фрагментом ПЕ КБПЕ, то после ввода оператора ИП-г или ИПX из памяти в регистр Xбудет вызвано соответствен- но содержимое регистра О или 2, равное адресу перехода к соответствующей программе сложения или умноже- «6
дня. После нажатия клавиши С/П или, в общем случае В/О и С/П, содержимое регистра А' будет занесено в регистр £, являющийся адресным регистром оператора косвенного перехода КБПЕ, который и передаст управление началь- ному шагу соответствующей программы. Подобные опе- раторы высшего уровня использованы в составных програм- мах 24, 163 и 223 гл. 3, причем в последней из них для запоминания операторов векторного и скалярного умно- жения использовано хранение адресов соответствующих программ в регистрах В и С памяти соответственно. Возможны и другие способы формирования легко запо- минающихся операторов высшего уровня. Например, в программе 162 гл. 3 для вычисления гиперболических и обратных гиперболических функций использованы операторы высшего уровня вида 1 f С/П, где f — опе- ратор вычисления соответствующей тригонометрической или обратной тригонометрической функции (например, для вычисления функций ch х и arth х вводятся нажатиями клавиш соответственно составные операторы 1 cos С/П и 1 tg^1 С/П). Для обеспечения выполнения таких опе- раторов в начальной части составной программы записан фрагмент, подобранный таким образом, что каждому ре- зультату вычисления I f соответствует адрес началь- ного шага частной программы для вычисления соответ- ствующей гиперболической или обратной гиперболической функции. 2.6. МИНИМИЗАЦИЯ ДОПОЛНИТЕЛЬНЫХ ЗАТРАТ ВРЕМЕНИ Дополнительные затраты времени в основном свя- заны с вводом исходных данных, пуском программы и вы- зовом и регистрацией результатов вычислений. Эти затраты времени уменьшаются при составлении четкой, однознач- ной и легко запоминаемой инструкции к выполнению про- граммы. Этим требованиям отвечает рассмотренная в гл. 1.4 стандартизованная компактная запись инструкции, быстро осваиваемая пользователем. В частности, инструк- цией должен предусматриваться легко запоминаемый спо- соб размещения в памяти нескольких исходных данных с минимальным числом нажатий клавиш для их ввода. Од- нако при этом должно сохраняться и оптимальное соотно- шение между уменьшением дополнительных затрат време- ни при повышении уровня автоматизации вспомогатель- НЫХ операций и увеличением затрат времени на ввод и вы- полнение программы. 87
Размещение исходных данных в памяти ускоряют при его автоматизации с помощью начального фрагмента про- граммы вида ПЫТ С/П ПЫ2 С/П ПЫ3 С/П ... В этом случае для ввода в регистр памяти исходного чиста трр. буется лишь одно нажатие клавиши С/П (совмещаемое с пус- ком программы после набора последнего исходного числа) вместо нажатия двух клавиш х П и N, при непосред- ственном занесении исходных данных в регистры памяти. Однако при большом числе исходных данных требуется особая внимательность в связи с возможностью ошибки в порядке ввода данных. Поэтому в тех случаях, когда имеются пары связанных исходных данных, например, от- счетов функции f (х() и соответствующих значений х; ар- гумента, то целесообразно заносить каждую пару исходных чисел в регистры У и X (с использованием клавиши В f для засылки в регистр У набранного числа). В этом слу- чае программу можно начать фрагментом вида ПЫг -> ПЫ2С/П ПЫ2-> ПЫ4 С/П... При решении некоторых задач с группами взаимосвя- занных исходных данных (например, коэффициентов си- стем линейных уравнений) в операционный стек для умень- шения затрат времени на их ввод целесообразно заносить по три или даже четыре числа. В этом случае для выпол- нения указаний инструкции вида а = PZ, b РУ, с = = РХ или а — PT, b = PZ, с = РУ, d — РХ следует после набора каждого из первых двух или трех чисел на- жать клавишу В f (т. е. выполнить соответственно a f b f с пли a f b f с f d). Часто целесообразно организовывать ввод исходных данных в операционный стек в зависимости от выполняе- мых над ними операций. Например, если в начале програм- мы вычисляется выражение а— b In (c/d), то достаточно организовать ввод исходных данных а = PT, b = PZ, с= РУ, d = РХ и начать программу фрагментом ~ 1пх —... Если такие операнды используются при дальнейшем выполнении программы, то их по мере вызова из регистров операционного стека во входной регистр X следует засы- лать в нужный регистр памяти операторами ПЫ. Существенное значение имеет и выбор регистров памяти для хранения исходных данных. В частности, если нет дру- гих соображений, то для уменьшения времени ввода про- граммы и упрощения контроля введенных исходных данны* при их размещении следует прежде всего выбирать регистры памяти, номера которых набираются клавишами, располо- женными наиболее близко к клавишам с символами х П и Г1 —х. При вводе последовательности исходных данных 88
с порядковыми индексами g0> «1, dn Для их размещения целесообразно выбирать соответственно регистры 0, 1... п. Если в условиях задачи исходные данные обозна- чены буквами a, bf с, d, е или а, 0, у, 6, е,то для их хране- ния удобно выбирать регистры А, В, С, Д, Е. Для исход- цух данных, связанных пространственными отношениями, следует выбирать регистры памяти, также связанные по- добными отношениями (например, для хранения коэффи- циентов квадратной матрицы удобно выбрать an = Р7, aii = — Р4, а22 = Р5 или йп — Р8, а1г = Р9, аи = Р5„ а22 — Р6 и т. п.). Естественно, что такие спосо- бы размещения данных следует выбирать лишь в том слу- чае, если нет более приемлемых приемов. Дополнительные затраты времени при повторных пус- ках программы с начального шага связаны с необходимо- стью нажатия двух клавиш В/О и С/П для каждого пуска. Эти затраты можно уменьшить, заменяя оператор С/П в конце программы фрагментом С/П БП 00. В этом случае для повторного пуска программы достаточно на- жать только клавишу С/П, хотя допустимо и нажатие двух клавиш В/О и С/П. Однако, если при повторных выполне- ниях программа должна начинаться с шага с ненулевым адресом ab, то целесообразно заменить оператор С/П в кон- це программы фрагментом С/П БП ab. В этом случае Для повторного пуска следует нажимать только клавишу С/П (или три клавиши БП а b ). В тех случаях, когда повторное выполнение программы должно начинаться с ша- га, записанного после оператора С/П внутри программы, в конце программы вместо операторов С/П БП ab целе- сообразно записать оператор БП а (Ь— 1), после выпол- нения которого управление передается оператору С/П внутри программы. Если повторные пуски программы Должны начинаться с шага с адресом 01, то целесообразно оператор С/П в конце программы заменить фрагментом C/п В/О. Если же повторные пуски программы начи- наются с шага с адресом 02, а шаге адресом 01 занят опе- ратором С/П (подобные случаи возможны, когда на первом •Дате в регистр памяти заносится содержимое регистра X), то достаточно в конце программы заменить оператор С/П оператором В/О. В некоторых случаях для уменьшения дополнительных затрат времени на ввод исходных данных и программы ока- зывается целесообразным использовать обращение к под- программе, хотя оно увеличивает время выполнения про- граммы. Примером могут служить базовые (пригодные для Различных функций, фрагментами вычисления которых 89
заменяются многоточия) программы 140 или 141 в гл. 3 где обращение к подпрограмме введено для уменьшения’ затрат времени, связанных с изменениями адресов пере- ходов при фрагментах вычисления функций с различным числом шагов. Дополнительные затраты времени уменьшаются также при автоматизации вызова из памяти результатов вычис- лений. Для вызова пары результатов концовку программы целесообразно составить так, чтобы эти результаты после выполнения программы хранились в регистрах X и У. В этом случае для вызова содержимого регистра У доста- точно нажать одну клавишу «->, причем оба результата сохраняются в операционном стеке. Можно также автома- тизировать вывод результатов, оканчивая программу фраг- ментом вида ... С/П ИЛИ! С/П ИПЫа ..., но при боль- шом числе результатов их лучше вызывать попарно, груп- пируя близкие по характеру результаты, в регистры X и У операционного стека. Результаты выполнения некоторых программ могут быть разнотипными, например, вещественные и комплекс- но-сопряженные корни алгебраических уравнений. В этих случаях можно высвечивать не сами результаты, а указа- ния на номера регистров, в которых хранятся результаты определенного типа. Например, можно организовать хра- нение пары вещественных корней в регистрах 7 и 8, а ком- плексно-сопряженной пары (вещественной и мнимой их части) в регистрах 4 и 5, с высвечиванием после выполнения цифр 78 и 45 (или 7 и 4) в зависимости от типа корней. Для этой цели можно организовать высвечивание символа ЕГГОГ при вычислении корней определенного типа, но следует принять все необходимые меры, чтобы не возник- ло переполнение или попытка выполнения некорректной операции, когда высвечивание символа ЕГГОГ может быть неправильно понято пользователем. Дополнительные затраты времени существенно возра- стают при необходимости использования в качестве внеш- ней памяти для хранения промежуточных вычислений вы- числительных бланков. В этом случае должна быть осо- бенно тщательно продумана методика решения задачи, включая форму бланков и последовательность ручных опе- раций для минимизации вероятности ошибок при выпол- нении программы, регистрации результатов и их считы- вании с вычислительного бланка. В качестве примера рассмотрим решение систем ли- нейных уравнений, обычно записываемых в матричной форме «о
(16) Поиск решений такой системы заключается в вычислениях значений аргументов х,- (корней или решений системы), при которых сумма правых и левых частей каждого уравнения, называемая его невязкой, равна нулю. В общем случае искомое решение определяется формулой х,- = S А^/Д, i = 1> 2, ... , п, (17) /=! где А,/ и А — соответственно алгебраические дополнения и определитель квадратной матрицы А коэффициентов си- стемы уравнений (16). Однако для определения численных значений корней Xi эти формулы практически пригодны лишь при п — 2, когда % __ Дц<71 + _ G22^1 — й12<?3 . 1 Л аиага — й12яг1 ’ _ + ^22^2 __ °11 — ail41 а А anG« — аиа si При п> 2 обычно используют численные методы, сре- ди которых наиболее известен один из вариантов метода исключения переменных Гаусса, называемый схемой един- ственного деления 12]. Для решения системы линейных уравнений по этой схеме на каждом р-м шаге коэффициенты р-го уравнения преобразуют по формуле а# = й<р-р < / <+ 1, (18) а коэффициенты уравнений с номерами iz>p — по фор- муле = <] 9) причем свободные члены уравнений qi рассматриваются как коэффициенты af.n+i == qt. После п— 1 шагов подобных преобразований (называе- мых прямым ходом) исходная система уравнений преобра- зуется к треугольной системе Я1 + +-----Н а<% = >?+1; *»+ 4-й^=^2>п+1; 91
с вычислением корня хп = Остальные корни выч^ ляют в процессе обратного хода по формулам 1 х(= — Е ao,JC/« i = и — 1.......2, 1. /=п Так, для решения системы из двух уравнений по схеме единственного деления после одного шага прямого хода получают ха - и на обратном ходе х2 - <4” — а<’ V?. В этом случае число операций и, следовательно, операцион- ная погрешность вычисления корней меньше, чем при ис- пользовании формулы (17) и решение обеспечивает доста- точно короткая программа 61 в гл. 3. Для уменьшения по- грешностей вычисления корня предварительно перестав- ляют уравнения исходной системы так, чтобы коэффициен- ты ац были максимальными по абсолютной величине. При увеличении числа п уравнений системы (16) воз- растает число + + п коэффициентов, которые необходимо хранить в памяти ПМК. Поэтому для решения систем ли- нейных уравнений при п > 3 целесообразно использовать метод оптимального исключения [8], реализованный в про- граммах 65 и 66 гл. 3. Однако при п> 5 промежуточные результаты вычислений не удается разместить в памяти ПМК и приходится использовать вычислительный бланк для их временного хранения. В этом случае целесообразно использовать метод Жордана [3,8J, отличающийся от схе- мы единственного деления Гаусса тем, что преобразованию по формуле (19) подвергаются все уравнения, кроме р-го, преобразуемого по формуле (18). В результате после вы- полнения только прямого хода вычисляются все корни уравнения При реализации этого метода используют вычислитель- ный бланк с р + J частями, каждая из которых содержит л строк и п+2 столбцов, включая контрольный. В ну- левую часть бланка заносят столбцы коэффициентов aq квадратной матрицы коэффициентов системы (16) и сво- бодные члены qt, а в контрольный столбец— суммы осталь- ных элементов каждой строки (табл. 11). Вычисление эле- ментов каждой следующей р-й части по элементам (р—1)-й части обеспечивает программа 67 гл. 3, составленная та- 92
-«г Вычислительный бланк для решения ^м'иейвых уравнений методом Жордана системы (16) из n c 12 f J = 2 1 = 3 i =4 j= 5 s fi 10 2 4 i 30 47 2 12 20 2 91 130 5 5 10 0 65 6 2 6 2 36 62 i 11,6 19,2 1,8 88 120,6 4 8 -0,5 30 41,8 0,8 3,6 ! .4 18 23.8 1 0,2 0,4 0.1 3 4,7 i 1,3793104 —1.1206896 —3,44827-10—i -8,6204-10-’ 2,2758621 1,275 8621 11,931035 15,482759 1 6,896552-10—£ 6,896556-10—• 1,4827536 2,6206898 I 1,6551724 1.5517241 7,5862068 10,396551 3 3,1249999 12,5 15.624996 1 0,125 2,5 2,625 1 1,4699998 7,9999992 10,499996 1 -8,1249992-10—1 —2,4999956-10—> - 6,2497897-10- » 4 1 I 1 1,9999999 2,0000002 2,999999 1 3 0000002 4,0000007 1 4,0000001 4,9999988 ким образом, что первыми преобразуются элементы р-го уравнения. Это приводит к циклической перестановке ко- эффициентов уравнений в процессе выполнения прямого хода, но на р-м шаге исходный порядок уравнений восста- навливается и совпадает с индексами вычисленных корней. Контрольный столбец служит для проверки правильно- сти вычислений, так как его элементы, вычисляемые в со- ответствии с инструкцией к программе, должны быть равны сумме остальных элементов соответствующих строк с учетом единиц, записываемых в нижних строках вместо преобразованных коэффициентов ai£. В случае ошибки во вводе с бланка очередного элемента /-го столбца р-й части бланка достаточно повторить ввод в регистр X пер- вого элемента /-го столбца (р— 1)-й части, нажать кла- виши В/О и С/П, а затем продолжить ввод и преобразова- ние остальных элементов этого и следующего столбцов со- гласно инструкции. При п > 12 можно разбить каждую р-ю часть бланка на блоки, содержащие не более 12 строк, но затраты времени в этом случае существенно увеличиваются. 93
Метод Жордана достаточно удобен для обращения мат. риц [8], но для вычисления определителей квадратн^х матриц целесообразно использовать схему единственного деления Гаусса, когда определитель Л - вычисляют в результате лишь прямого хода при меньшем числе регистрируемых чисел, чем в методе Жордана, Вы. числительный бланк (табл. 12) в этом случае также содер- жит контрольный столбец для проверки правильности вы- числений. Несколько изменив инструкцию к программе 71 гл. 3, по этой схеме можно вычислять определители мат- риц порядка 12 с разбиением строк на блоки. Для уменьшения операционных погрешностей следует так раз- мещать коэффициенты уравнений в нулевой части бланка, чтобы диагональные элементы матрицы коэффициентов бы- ли максимальными, но при перестановке строк следует учитывать изменение знака определителя. 12. Вычисление определителя по схеме единственного деления Гаусса с помощью программы 71 гл. 3 р /= I / = 2 ! i = 5 Е 1 5 4 3 2 1 15 4 3 2 1 5 15 2 1 3 4 5 15 3 2 1 4 5 15 1 2 3 4 5 15 2 -т-1,2 —0,4 —0,6 4,2 3 —0,6 1,8 3,2 4,6 9 —0,4 —0,8 2,8 4,4 6 1,2 2,4 3,6 4.8 12 3 3 5 —8 0 0 4 -4 0 0 0 30 30 4 . 4 —4 0 0 30 30 5 30 30 Л = 360 Метод Жордана удобно использовать также для реше- ния систем из п > 2 уравнений с комплексными коэффи- 94
F ияентамв- В этом случае методика вычислений лрактиче- I н не изменяется (операции над вещественными числами 1 ^леняготоя теми же операциями над комплексными чис- аМ») 11 может быть использован вычислительный бланк, аналогичный показанному в табл. 12. Однако в каждой глюке такого бланка необходимо предусмотреть реги- гтоацию вещественных и мнимых составляющих коэффи- циентов и корней. Примером может служить вычислитель- 13. Решение системы линейных уравнений с комплексными доффицнентами методом Жордана с циклической перестановкой строк бланка р /= 1 / = 2 / ==3 / = 4 I - — 0 1 2 2 3 3 4 14 20 20 29 5 4 6 5 7 0 38 14 56 23 0 7 7 8 8 9 38 50 53 74 1 —2.8 —0,4 —5,6 -6,8 —22,4 —21,2 —30,8 —28,4 5,6 -3,2 5,2 —6,4 26,8 —25,6 37,6 —35,2 1 1,6 —0,2 2,2 —0,4 10,8 — 1,6 15,6 —2,2 2 — 14,4 — 10,8 —43,2 -32,4 —57,6 —43,2 1 -1.9 -3,3 —4,7 —9,9 —5.6 — 13,2 1 2,3 2,1 8,9 6,3 12,2 8,4 3 1 1 0 2 0 1 2 0 3 0 1 3 0 4 0 95
ный бланк (табл. 13) для решения с помощью программы 78 системы из трех уравнений '1 +/2 2 + /3 3+ j4~ 5 + /4 6 4- /5 7 4-/0 0 4-/7 7 4-/8 8 4- /9 Xj ’14 4 /20’ 38 4-/14 38 4- /50 с решением: 4 = 14 /0; х2 — 2 4- /0; /j=3 4/0. Вычислительные бланки приходится использовать и, например, при решении задач линейного программирова- ния симплекс-методом [8]. Этот метод сводится к последо- вательному преобразованию симплекс-таблиц способом, на- зываемым модифицированным жордановым исключением, который реализуется программой 107 гл. 3. Для проверки правильности выполнения этой программы в табл. 14 при- ведены две очередные симплекс-таблицы. Если такие таб- лицы содержат более 13 столбцов, то также можно исполь- зовать программу 107, преобразуя элементы неразрешаю- щих столбцов по блокам, содержащим менее 13 столбцов. 11 Преобразование симплекс-таблицы при выборе = а51 = 1 на шаге модифицированного ж орда нова исключения р —*4 —хг ! р +1 —Ут, — I У1 —1 0 —20 У1 1 0.7 50 У? 0 — 1 -20 Уг 0 — 1 —20 Уз 1 1 80 Уз —1 0,3 10 Vi 0,375 1 60 У1 —0,375 0,7375 33,75 Уь 1 0.7 70 I 0,7 70 ф —2 —1 200 Ф 2 0,4 340 Дополнительные затраты времени значительно возра- стают при необходимости использования пакета из двух или нескольких программ для решения одной и той же за- дачи. В этих случаях необходимо предусмотреть такое раз- мещение данных в памяти, чтобы при выполнении следую- щей программы максимально использовались результаты выполнения предыдущей. Примером может служить паке! из программ 150 и 151 для интерполяции кубическим сплайном 18]. Затраты времени при использовании пакет.' программы существенно уменьшаются при хранении такоо1 пакета в ППЗУ или внешних запоминающих устройствах ПМК «Электроника МК-52». 86
2.7. РЕШЕНИЕ СТРУКТУРНЫХ ЗАДАЧ Результатом решения многих практических задач яв- ляются не числа, а требуемое множество (структура) отно- шений между заданными объектами. К таким задачам отно- сятся, в частности, различные игровые задачи [5,9], задачи обработки текстов и графической информации. Решение многих из них находят методами математической логики, простейшим разделом которой является исчисление выска- вываний. Оно заключается в определении истинности или ложности сложных высказываний, составленных из пред- ложений, называемых элементарными высказываниями, на- пример, «программа представляет алгоритм на входном языке ЭВМ», «дважды два — четыре», «дважды два — пять». Сложные высказывания образуют из элементарных с по- мощью логических связок, к которым относятся частица «не» и сэюзы «и», «или», «равнозначно» и «если ..., то...», обозначаемые соответственно символами —, Д, V- ~ и -*-• Следует отметить неоднозначность союза «или» в русском языке — высказывание «Иванов или Петров достигнут фи- ниша» не исключает возможности достижения финиша обо- ими спортсменами, тогда как высказывание «чемпионом ста- нет Иванов или Петров» означает, что чемпионом станет только один из них. Поэтому «неразделенное или» («или и и» или «и/или») обозначают символом \/, а «исключающее или» («или ... или ...») — символом ф. Истинность или ложность элементарных высказываний оценивают соответственно значениями истинности I и 0. Поэтому многие операции математической логики формаль- но сводятся к операциям над бинарными переменными, определяемыми правилами бинарной (булевой) алгебры. В этой алгебре функции бинарных переменных также при- нимают только значения 1 и 0 и возможны лишь четыре функции одной бинарной переменной — две из них F (х) = = 0 и Пл;) - 1 являются постоянными, третья F (х) = х равна аргументу и наиболее употребительна четвертая Функция F (х) = х или F (0) = 1 и F (I) = 0, называемая отрицанием (инверсией) или логическим НЕ. Отрицание отрицания равно исходной переменной к = х. Существует 16 бинарных функций двух переменных х и У. значения которых, названия, смысловые аналоги в рус- ском языке и выражения через другие функции указаны в табл. 15. Свойства логического произведения отображают формулами: А В ~ В /\ А, А /\ 0 — О, А Д 1 = А, А Д Д А = А, А Д А = 0, А Д (В Д С) = (Л Д В) Д С. Свой- ства логической суммы: А \/ В — В V А, А\/ 0 = А, А \/ 5-321 4 97
15. Бинарные (булевы) функции бинарных переменных хну У X ;o 10 0 1 1 0 ! 1 Символ Название Смысл Выражение через торы —, л , V ц F„ 0 0 0 0 0 Логический нуль Всегда 0 X Л X = у л ~у Fi 0 0 0 1 y/\x Логическое произведение, конъюнкция, логическое ИЛИ и у и х У Лх — уу'х F, 0 0 1 0 y^x Обратная импликация у, но не х yV х F3 0 0 1 1 у Повторение у как у У F 4 0 1 0 0 X*-y Отрицание обратной импликации не у, НО X у\/ X F, 0 1 0 1 X Повторение х как х X Fe 0 1 1 0 y&x. Неравнознач- ность, сумма по модулю 2, ис- ключающее ИЛИ или yt ИЛИ X У®х==(УУх)Л(у\/х) F, 0 1 1 1 ij\fx Логическая сумма, логиче- ское ИЛИ, дизъюнкция у или (и) X У V х = у Д х FB 1 0 0 0 У^х Стрелка Пирса, отрицание дизъюнкции, лог ическое не—или ни НИ X уух F, 1 0 0 1 У~~х Равнозначность у как х г/®х^(у\/ х) ЛС'/V л) F io 1 0 I 0 X Отрицание х не х X Fn 1 0 1 1 x-^y Обратная импликация если х, то у У У х F12 I 1 0 0 у Отрицание у не у У F13 1 1 0 1 y^-x Импликация если у, то X У V X Fn 1 1 1 0 y/x Функция Шеффера, не- совместимость не у или ЕЮ -¥ У Л х Fi, 1 1 1 I I Логическая единица псегда 1 X v X = у V р 98
у 1 = 1, A\JA — A, A\JA = \, A\J (B\J C) =(A\J у B)V С. Если формула А Д (В V с) = (А Л Д) V ИДС) соответствует в обычной алгебре формуле А (В-Ь С) = АВА~ 4- АС, то формула А у (В Д С) = (А V В) Д (А V С) не имеет аналога в обычной алгебре, где формула А + ВС = *= (Л + В) (А + С) неверна. Все булевы функции двух переменных выражаются че- рез логические операторы , Д и V- Так как оператор V выражается через Д и , то все функции табл. 15 можно выразить через эти два оператора и даже через единствен- ный оператор /. Однако при уменьшении числа операторов выражения функций усложняются, то оптимально неволь- аование четырех основных операторов: , Д, V и ф. tf Рис. 14. Математическая логика приобретает особый смысл в свя- 8и с разработкой ЭВМ пятого поколения, входные языки которых предусматривают ввод логических высказываний об исходных условиях задачи, на основании которых ЭВМ должна составлять и выполнять программу ее решения. Однако и сейчас бинарная логика широко используется, в частности, при разработке коммутирующих (электриче- ских, транспортных) сетей, простейшие примеры которых показаны на рис. 14, а, и, в особенности, при проектиро- вании ЭВМ и цифровых устройств, простейший пример которых показан на рис. 14, б. Логические операции выполняются независимо над каж- дым битом бинарного сообщения с помощью логических операторов, содержащихся в словарном запасе входного языка рассматриваемых ПМК- Для операций над относи- тельно длинными (содержащими до 28 битов) бинарными сообщениями последние вводятся с помощью десятично- двоичных кодов (см. гл. 1.3), каждая десятичная цифра которых отображается четырьмя двоичными разрядами (тетрадами). В связи с этим бинарные сообщения, тетрады которых содержат информацию, отображаемую цифрами, не содержащимися в десятичной системе счисления, при- ходится предварительно разбивать на две составляющие, 4* ' <<.)
тетрады которых содержат два нуля в первом и четверток, разрядах и, соответственно, втором и третьем. Напримеп сообщение Ь — 11011110, отображаемое шестиадиапр^ч’ ным числом BE, необходимо представить слагаемыми t *=> 10011000 и (?2 = 01000110, ввести в регистры X и У' колы 8,98 и 8,46 и выполнить операцию логического сле- жения с результатом 8.98 V Мб = 8.I3E. Подобные гресб. разевания приходится выполнять и над промежуточными результатами цепных логических операций, что затруднг.ег их выполнение. Это затруднение можно устранить, используя для би- нарных сообщений восьмеричный код с цифрами 0, 1, ... 7t отображающими тройки разрядов бинарного сообщения' В этом случае результаты двухместных логических опе- раций также высвечиваются в восьмеричном коде и их можно использовать в цепных операциях без дополнитель- ных преобразований. Исключение составляет операция ин- версии, при выполнении которой нули в неиспользуемых старших разрядах тетрад преобразуются в единицы. Чтсбы и в этом случае получить результат в восьмеричном коде, достаточно код инвертируемого бинарного операнда сло- жить с кодом 8.8...8, где число восьмерок посте запятой равно числу цифр после запятой в первом слагаемом. На- пример, при использовании восьмеричного кода бинарный операнд b ** 011 011 ПО отображается кодом 8,335, над которым можно выполнять все двухместные логические операции. Для инверсии такого операнда следует выпол- нить 8,335 V 8,888 (8,ЛЛЕ) ИНВ (8,441), что соответствует б= 01'1011110= 100100001. При подобном восьмеричном кодировании предельная длина бинарных операндов уменьшается (за счет неисполь- зуемых старших разрядов тетрад) с 28 до 21 бита, но обыч- но логические операции выполняются над бинарными со- общениями меньшей длины. Логические операции над ко- роткими бинарными операндами удобно выполнять с по- мощью арифметических операций. Так, для инверсии би- нарного операнда дсстаточно вычесть его из послед- вательности единиц такой же длины: 6 = 011011110=* = И 111111 —011011110 = 100100001. Для выполнения двухместных логических операций достаточно найти ар: Ф' мстическую сумму бинарных операндов, например, * •’=’ = 10101010 4- 01101101 = 112021111 и заменить в ней с-;1‘ ннпы нулями, записав d = 00202000. Тогда d>2 будет рай- 1Ю логическому произведению, разность s— d/2 — чоП»' ческэй сумме, а ь — d—логической сумме исходных спе* 100
^•ндов над полем модуля 2. Эш соотношения использованы Г программе 3 (гл. 3), обеспечивающей, кроме выполнения ^g^upex логических операций, сдвиг содержимого восьми* ютовых бинарных сообщений на один бит влево. Логические операторы применимы и для операций над кно*ествами- Напомним, что множество математических иди физических объектов отображают перечислением (так- уе называемым множеством) их символов, заключенных в скобки, например, А = (а, Ь, с). Не содержащее эломен- множество называют пустым и обозначают символом 0. Принадлежность элемента а множеству А обозначают символом а£А, а принадлежность множества элементов д множеству В обозначают символом А с В или (если д может содержать все элементы В) А = В. Элементы мно- жества В, не содержащиеся в подмножестве Л, называют дополнен нем множества А и обозначают символом отрицания (инверсии) Л. Множество А V R (для множеств обычно используют символы (J и П)> содержащее все элементы множеств А и В, называется их объединением. Множество Л Л В, об- разованнос элементами, содержащимися как в множестве 4, пак и в множестве В, называют их пересечением, а мно- жество Л В, образованное множеством элементов мно- жеств А и В, за исключением совпадающих, называют их объединением по модулю 2. В общем случае элементы множеств могут перечислять- ся в любом порядке, но для действий над ними с помощью логических операторов входного языка следует найти объе- динение всех множеств и отобразить каждый его элемент Одним из бинарных разрядов. В этом случае операции вад подмножествами такого объединения можно заменить операциями над соответствующими бинарными сообще- ниями. В качестве простейшего примера рассмотрим следую- щую задачу. Из восьми жильцов дома, фамилии коюрых Для простоты обозначим буквами a, b, с, d, е, f, g и ft, жиль- 4, с и / являются пенсионерами, жилец К — таксист, Жильцы с, f и g— женщины, а жильцы а, сне - брюнеты. Требуется определить, кто из жильцов находится на пенсии, ® кто из жильцов является учителем со светлыми волосами. Для решения этой задачи поставим в соответствие жиль- ем а, Ь, с, d, е, f, g, h разряды восьмибнтового бинарного й общения. Тогда множеству пенсионеров будет соответ- ствовать бинарное сообщение 11 = 01100100, таксистов — r<s 00000001, женщин — Ж = 00100110, брюнетов — Б = ** 10101000. Теперь несложно определить множество же»:- 101
щин-пенсионерок как П Д Ж = 01100100 Д 00100110^ = 00100100 или с и /, а учителя-шатена найти как версию объединения Б \/ЖVТVП = 11101111 = 00010%) или d. Естественно, что для решения этой несложной зада^ нет необходимости обращаться к вычислительной техник но подобная методика поиска используется и в информ/ ционных системах на ЭВМ высокой производительности Операции над множествами усложняются в тех случая/ когда нельзя непосредственно использовать логически операторы над бинарными сообщениями, отобража.озл!. ми множества. Примером может служить декартово проц+ ведение множеств А X В, члены которого образованы эле- ментами, взятыми по одному от каждого из умножаемщ множеств, а также декартово произведение множеств A tga" над полем модуля 2, не содержащее одинаковых членов и членов с одинаковыми элементами. Так, если (а, 6. с) >: X (Ь, с, е) — (а, Ь), (а, с),(а, е), (Ь, Ь), (Ь, с) (Ь, е), (с, h], (с, с), (с, е), то (а, Ь, с) ® (Ь, с, е) == (а, Ь), (а, с), (а, е), (б, е,, (с, е). В подобных случаях приходится выделять по одному элементу от каждого множества и сравнивать их, либо отображать каждый из умножаемых элементов бинарны-.1 сообщением исходного формата с единицей в соответствую- щем разряде. Если множества содержат не более 8 различ- ных элементов, то их можно обозначать цифрами от 1 до'1 и высвечивать на индикаторе ПМК как многозначные целые числа. Для выделения элементов множества можно исполь- зовать, например, фрагмент ИПМ 10 ч- f [х| ПЫ -> (х) 1 0 х, после первого выполнения которого (с записью исходпогс множества цифр в регистр N) в регистре N окажется запи- санным исходное множество без последней цифры, а в pf гистре X—последняя цифра. Повторяя выполнение фраГ' мента, можно выделить подобным образом все цифры. Автоматизация операций над множествами обеспе411’ вает возможность решения с помощью ПМК достаю411'’ сложных структурных задач, к которым относится реШг ние в общем (символьном) виде системы линейных урав№' ний (16). Для этого необходимо и достаточно в форму-11 (17) выразить определитель Д и миноры Маъ = (—I)7 через символы ami ненулевых элементов матрицы А фициентов уравнений. Определитель Д квадратной матрицы А порядка п р3 вен сумме членов, образованных всевозможными nf|C'li3 102
редениями из п ненулевых элементов ат; матрицы, взятых до одному от каждой строки и каждого столбца д = V (l~^ailla2l,...altln, (20) 1 причем знак g-го члена определяется четностью числа 6, инверсий (беспорядков) в неупорядоченной строке подста- новки индексов ml члена определителя ml I J Г1 2 п Число 6$ инверсий равно сумме чисел больших индексов, записанных перед каждым индексом (/ >• 1) неупорядо- ченной строки. Структура матрицы в методе обобщенных чисел (41 отображается частично упорядоченным множеством (мат- ричным числом) р, строки которого содержат множества индексов ml (индекс т является общим для m-й строки и может быть вынесен за скобки) ненулевых элементов ат1 в каждой m-й строке матрицы.Так как индексы т и I в под- становке должны быть различными, а строка индексов т упорядочена при соответствии строк матрицы строкам мат- ричного числа, то множество всех подстановок (контурное число) р членов определителя определяется множеством их неупорядоченных строк и равно декартовому произведению над полем модуля 2 множеств элементов строк матричного числа. Контурное число однозначно определяет структуру определителя Д = detp = det (рм) mod2. Реализацию этой формулы обеспечивает следующий алгоритм: 1. Отобразить структуру матрицы порядка п матрич- ным числом с множеством индексов / в каждой m-й строке, соответствующих ненулевым элементам ami той же строки матрицу. 2. Принять т = 1. 3. Под каждым выписанным элементом m-й строки мат- ричного числа провести линию, под которой выписать все элементы (т + 1)-й строки, отличающиеся от отделенных Линиями верхних элементов. 4. Принять т = m + 1. 5- Если т = п, то перейти к шагу 6, иначе — к шагу 3. 6. В полученном контурном числе (каждый столбец которого, образованный элементом n-й строки и записан- ными над ним элементами верхних строк с линиями, отде- ляющими общие элементы, равен неупорядоченной строке
транспонированной подстановки одного из членов опреде. лителя) подчеркнуть столбцы с нечетным числом инверсий 7. Заменить каждый столбец из элементов I с учетом но^ мера т строки произведениями соответствующих элемен- тов ami матрицы, приписав отрицательный знак получен, ним членам определителя, соответствующим подчеркну- тым столбцам контурного числа. Для разложения миноров .VI,,* по этому алгоритму до. статочно предварительно вычеркнуть в матричном числе а-ю строку и все элементы / = Ь. В качестве примера рас- смотрим разложение определителя и алгебраического до- полнения Д14 по элементам матрицы шестого порядка -С7П 0 а13 О О О «21 aS3 0 0 0 о2к О «32 «33 «34 О О «и 0 a,i3 а41 О О «51 0 «53 «54 «И 0 — «51 0 «S3 «54 О «55 В соответствии с описанным алгоритмом находим 1 "1 2 1 Д = det з 2 4 1 5 1 6 1 3 2 6 3 4 3 4 3 4 3 4 — det 5 6_ mod2 2 6 12 6 3 4 2_2 4 2 4 3 ТТ4 1 Т~4 55555555 6 6 4 3 6 6 4 1 2 «И («22 («33«44«56 «34«13«5э) «ЗА “В «2(>«33 («44«55«63 «43«55«Й4)) Т" «!3 («21«32«44«55«йв Ч” «22«34«41«55«6в «25«32 (С41«55«64 Н~ «44«55°61))! 2 “1 2 6 _ 2 1 3 2 3 3 2 Д14— —det 4 1 3 - — det 4 3 5 1 3 5 5 5 'б 1 3 6 mod2 6 2 6 3 2 1 1 3 5 5 5 6 3 1 («21«32«43«55«К5 “В «22«33«4l«55«b<i Н" “I" «2в«32 («41«55«еЗ «43«55°el))- Заметим, что столбцы контурного числа можно записать и в виде неупорядоченных строк (транспонировав столбцы- т. е. записав их элементы в той же последовательности в в“' де строки) подстановок ненулевых элементов матрицы. Так, для полученного контурного числа определителя pi 1=.Н
- 123456, 0а = 124356, £3 = 162354, = 162453, 0Е = = 312456, = 324156, = 362154, 08 = 362451. Од- нако в этом случае приходится отказываться от линий, от- деляющих общие элементы и соответствующих скобкам в алгебраическом выражении определителя. Рассмотренный алгоритм метода обобщенных чисел с вы- числением декартового произведения множеств строк мат- ричного числа над полем модуля 2 реализован в програм- мах 83 и 84 гл. 3, отличающихся способом формирования столбцов контурных чисел. В связи с большим числом опе- раций по выделению и сравнению элементов множеств время счета при формировании каждой неупорядоченной строки р, подстановки члена определителя относительно велико. За это время согласно тому же алгоритму можно решить задачу «вручную», но при ошибках время разло- жения определителей значительно возрастает и поэтому автоматическое формирование неупорядоченных строк под- становок обычно оказывается предпочтительным. Для уменьшения затрат времени число инверсий в неупорядо- ченных строках Pf подстановок не определяется, но его лег- ко найти и без помощи ПМК- Подобным образом можно автоматизировать решение и многих других структурных задач. В качестве примера рассмотрим произведение в символьном виде двух матриц, элементы которого связаны с элементами а(1- и матриц- множителей соотношениями п = Xl &ikbk()' t.—l Следовательно, задача автоматизации умножения матриц в символьном виде сводится к перебору сочетаний индек- сов ij ненулевых элементов щ-, первой матрицы и индек- сов pq ненулевых элементов b0Q второй матрицы и отбору тех сочетаний с } — р, которые соответствуют произведе- нию dikbtt;, записываемому на пересечении Z-й строки и q-го столбца матрицы-произведения. Решение этой задачи обеспечивает программа .86 гл. 3, для проверки правиль- ности выполнения которой можно воспользоваться произ- ведением матриц О о“" о «21 «зз О ' О «31- О ьп о tI3- О Ь2Э О О Ь33 Ьл о &J «и^11 0 йи^1з «21^11 «22^22 «гДз + + «23^’33 6 «зз^зз "Ь «з-Аи
К сожалению, не все задачи преобразования структур сводятся к операциям над множествами и приходится ис- пользовать разнообразные приемы (5, 9] для автоматиза- ции их решения, когда оно возможно с помощью ПМК. ГЛАВА 3 БИБЛИОТЕКА ПРИКЛАДНЫХ ПРОГРАММ 3.1. ПОЛЬЗОВАНИЕ БИБЛИОТЕКОЙ В настоящей главе приведено 240 программ решения типовых задач прикладной математики, распределенных для удобства поиска по соответствующим разделам. Неко- торые из программ, совместимые с входным языком ПМК «Электроника БЗ-34» и его аналогов, опубликованы в ли- тературе 17, 8, 10] и здесь по возможности дополнительно оптимизированы. Программы и инструкции к ним составлены в стандар- тизованной компактной форме, рассмотренной в гл. I, с упрощенными символами некоторых операторов, указан- ными в табл. 3. Напомним, что в инструкции к выполнению программ запись вида а = PN означает, что перед пуском программы число а должно быть занесено в регистр А па- мяти или операционного стека, причем запись подобных формул в скобках означает, что соответствующие исход- ные данные после выполнения программы хранятся в тех же регистрах. Ввод исходных данных по формулам а — РТ, b = PZ, с — PY, d~ РХ обеспечивается нажатием кла- виши В f после набора соответствующего числа {a f b f с f d). Для пуска программы следует нажимать только клавиши, указанные в инструкции, причем запись (В/О) означает, что клавишу В/О необходимо нажать только пе- ред первым пуском программы. Запись вида PN — а озна- чает, что после выполнения программы результат а хра- нится в регистре N. При записи РХ *= a, PY = b для вы- зова числа b достаточно нажать клавишу *♦. Программы библиотеки сопровождаются контрольными примерами для проверки правильности ввода и выполнения программы и, при необходимости, указаниями на время сче- та и точность результатов вычислений. При желании поль- зователь может дополнить каждый шаг библиотечной про- граммы кодом, высвечиваемым на индикаторе в режиме программирования, хотя при четком нажатии клавиш при вводе программ в этом нет необходимости. 106
3.2. ТЕОРИЯ ЧИСЕЛ И КОМБИНАТОРИКА Программа I. Поразрядное преобразование яьичных представлений dm— а, ... ata9, a_t ... а_, действитель- ных чисел в десятичные представления ИП9 П6 X П7 ИП8 ИП6 х П6 ИП7 С/П ИП6 х ИП7 4- БП 03 Инструкция: {т •- Р8, т~* = Р9) а , == РХ В О С П а_,+1 = РХ С/П ... а, = РХ С/П РХ = Jlo(/« 4 с). Примеры: для rfId = АБЭ, F7 (16 = Р8. 16 2 ~ 1/256 = . И)7 - РХ В/О С/П РХ = 0,02734375; F= 15 = РХ С П РХ = 0,96484375; 9 ~ РХ СП РХ = 9,9648438; В - = 11 = РХ С/П РХ = 185,96484; А = 10 = РХ С/П РХ- = 2745,9648; для (1г = 110110110 (2 = Р8\ I ~ Р8) dl0 = = 438. Программа 2. Преобразование представлений = = а, ... ajafi, ... a_s действительных чисел в dv при основаниях р< 10, q = 10 или q = 10, q< 10 и п—г + + 1 4- s < 8 разрядах По Сх П6 ИП7 ИП5 | ИП9 [х| П4 ИП9 х — х ИП6 4- П6 -» ИП8 х ИП4 х = 0 05 ИП6 С/П Инструкция: (/>"’= Р7, р — Р8, q — Р9) dp — РХ (дробные числа dp вводить без запятой) В/О СП РХ = — dy (/ Аг 6пп,ах С). Примеры: для dn — 1011 (1 = Р7; 2 = Р8; 10 — P9)din — =: U; для dl0 = 11 (1 = Р7; 10 = Р8-, 3 = Р9) d3 = 102 (/«18 с); для = 1011,1011 (2’4 = 1/16 ₽Р7; 2 = Р8; 10 = Р9)41П = 11,6875 (/ « 45 с). Программа 3. Операции логического умножения (И), сложения (ИЛИ), сложения нал полем модуля 2 (исключа- ющее ИЛИ), инверсии (НЕ) и сдвига на один бит влево над восьмибитовыми операндами у и х 119 1 11 1111 I <> — С/П П9 1 B1I 7 — х<0 20 ИП9 1 0 X С П ПП 39 2 С/П ПП 39 2 ч- — С/П ПП 39 — С;П + П9 8 ПО Сх Г18 И ПЭ 1 ВН 7 4- П7 1x12 — х = 0 59 2 БП 60 Сх ИП8 1 0 X + П8 ИП7 (х) 1 0 X L0 50 ИП9 ИП8 В'О И н с г р у к ц и я: у PF, х = РХ. нажать клавший: В/О С/П для инверсии х, БП 1 2 С П для сдвига на 107
разряд влево операнда х, БП 2 4 ^С/П для х/\у, БП 2 9 С/П для х\/у, БП 3 5 С/П для хфу (для выполнения следующей операции в указанном порядке достаточно нажать клавишу С/П); с для одноместных операций и 55 с для двухместных. Примеры: 10101010 = 01010101; 01010101 = 10101010- 10101010Д01101101 =00101000; 00101000V11011011 =2 = 11111011; Ill НОП Ф 10101010 = 01010001. Программа 4. Разложение целого числа d на простые множители di ПО ] П6 КИП6 ИП9 ИП6 4- П8 f [х] х=#0 21 — х=0 03 ИП6 С/П ИП8 П9 БП 04 1 С/П БП 21 Инструкция: d = РХ В/О С/П РХ = dt С/П РХ = = d2 С/П РХ =d3 ... СП РХ — 1; время счета зависит от числа множителей. Пример: 63 — 3 3 • 7 1. Программа 5. Вычисление наибольшего делителя чисел а и Ь (а с Ь) по алгоритму Эвклида П7 <-> П8 4- (х1 ИП7 ИП8 П7 X — П8 ИП7 о х =0 03 + С/П Инструкция: а = РУ, 6 = РХ В/О С/П ПХ ~d. Примеры: для л = 109; 6=511 получим (£ «# 25 с) d — 1; для а = 323; 6=816 получим (^а;18с) d = 17. Программа 6. Вычисление остатка г от деления числа а на число р П8 П9 ~ [х] ИП8 ИП9 х — С/П Инструкция: р — РУ, а = РХ В/О С/П РХ = г. Пример: для р = 13; а = 789 получим г =9. Программа 7. Представление действительного числа d обыкновенной цепной дробью d =а0 + l/(at 4- 1/(а2 +••)) П8 | (х| П9 С/П — 1/х БП 00 Инструкция: d = РХ В/О С/П РХ ~ а0 С/П РХ = = оц С/П РХ =а2 ... (/^Зс). Пример: d =3,1415926 = 3 + 1/(7 + 1/(15 + 1/(1 + + 1/(244 4- ...)))) Программа 8. Представление обыкновенной цепной дроби действительным числом а0 4- 1/(я14- 1/(ос2 4- 1/(7-3 + Ч" ••))) = П8 0 П6 ВП П9 П7 -4- С/П П5 ИП9 ИП5 ИП8 П9 х + П8 ИП6 ИП5 ИП7 П6 X 4- БП 05 W8
Инструкция: осо = РХ В/О С/П аг -- РХ С/П ... а„ = _ РХ С/П РХ = d (t ж 5 с). " Пример-3 + 1/(7 + 1/(15 + 1 '(1 + 1/244))) =3,1415926. Программа 9. Вычисление бесконечной цепной дроби ^=а0 + ₽/(« + 6.(«+ ...)) Сх П6 ИП6 ИП9 + ИП8 ~ ИП6 ~ П6 — х- 0 02 ИП6 ИП7 + С;П Инструкция: (а0 = Р7, $ = Р8, а = Р9) В/О С/П pX = d. Пример: 4+ 5/(3+ 5/(3 + ...)) = 5,1925824 (/« 50 с). Программа 10. Вычисление точной суммы чисел, со- держащих до 14 значащих разрядов одного порядка ИП7 ИП4 + П4 ИП8 ИП5 + П5 1 ВП 7 — х>0 16 П5 КИШ ИП5 ИП4 С/П Инструкция: слагаемые представить в показа- тельной форме с целыми мантиссами одного порядка, вве- сти цифры семи старших и младших разрядов первого сла- гаемого соответственно в регистры 7 и 8, второго — в ре- гистры 4 и 5; В/О С/П (/ а; 5 с); цифры семи старших разрядов мантиссы суммы хранятся в регистрах X и 4, младших — в регистрах 7 и 5. Пример-. 99951658,783217+55555,555—(9995165 8783217+ + 5555 5555000). 10‘й = 10000721 4338217- 10"6 = 100007214,338217. Программа 11. Вычисление точного произведения чисел, содержащих до восьми значащих цифр П6 пз I ВП 4 П9 НПЗ ПП 51 П7 П8 ИП6 ПП 51 П1 ИП7 х П4 4^ П2 ИП8 X ПП 51 ПО ПА ИП7 ИП2 ПП 60 по ИП8 ИП1 ПП 60 ПП 51 ИП4 — П4 о ИП9 X ИПА + П5 ИП4 С/П ИП9 t (х) ИП9 X 1x1 ВО X ПП 51 ИП4 + П4 *-> НПО + ВО Инструкция: дробные множители представить в показательной форме с целыми мантиссами а = PY, Ь = = РХ В/О С/П; содержимое 8 старших разрядов ман- тиссы произведения хранится в регистрах X и 4, 8 млад- ших — в регистрах ¥ и 5 (t « 45 с). Пример-. 99999,999x8,8388888=99+99999 X 88888888 X X 10~10 = 888888871 1 111112- 1010 = 8888888,7111 11112. ю J
Примеры: для А — флЗ-|-/] получим | А | = 1,9999999 « 2; <рл = 0,5239869 рад = 33,333328 град = 29,999995 2 яа 30°; для А = /3 — /1 получим | /1 [ « 2; <рл = 5,7595865 рад = 366,66667 град = 330,00001 « 330°. Программа 21. Преобразование комплексного числа д из алгебраической формы в тригонометрическую с опреде- лением <р в интервале ] — 180; 180°], ] — 200; 200 град ] или ] — л; л рад 1. П7 х2 П6 х2 + / П8 ИП6 <- cos’1 ИП7 х<0 18 -+ /—/ | -> ИП8 С/П Инструкция., установить переключатель Р-ГРД-Г в нужное положение; ReA=PK, Im А = РХ В/О С/П РХ = Р8 = | А |, PY = Р9 = фл (/ « 8 с). Пример: для А = ]/3-[-/1 получим |А|=2; Фл = = + 0,52359869 рад = ± 33,333328 град = ± 29,999995 яа + 30°. Программа 22. Вычисление произведения С = А х В- и частного С — A/В от деления комплексных чисел в алгеб- раической форме П5 ~ П4 1 П9 ИП4 ИП7 х ИП5 ИП8 X — ИП9 ~ ИП4 ИП8 X ИП5 ИП7 х + ИП9 ~ П8 <-> П7 С/П /—/ П5 х2 ~ П4 х2 + БП 04 Инструкция; Re А = Р7, 1 mA = Р8, ReB = RY, ImB = РХ (если А — результат предыдущей операции, то достаточно ввести Л); для умножения В/О С/П, для деления БП 2 7 С/П; результат РХ — Р7 = ReC, PY = = Р8= ImC (t « 12 с). Примеры-. (—1 + /2) (3 — /4) = 5 + /10; (5 + /2) 7(3 т -И 4) = 0,92 - 0,56; 1 / (1 + /2) (3 +/4) = (I + /0) / (1 + + /2) (3 + /4) = (0,2 — /0,4) / (3 + /4) = - 0,04 — /0,08. Программа 23. Вычисление С = А х В и С = А/В в тригонометрической форме с аргументом ф в интервале 1 — 180; 180 °], ] — 200; 200 град J или ] — л; л рад J при представлении операндов в алгебраической форме ПП 26 ПА «-> ПС С/П ПП 26 ПВ ~ ПД С/ПИПСИПД+ ИПА ИПВ х С/П ИПС ИПД — ИПА ИПВ 4- С/П П7 х3 П6 х2 + К П8 ИП6 -ь cos’1 ИП7 х < 0 44 /—/ | -> ИП8 В/О 112
Инструкция: установить переключатель Р-ГРД-Г - нужное положение; Re A — PY, 1mA ~ РХ В/О С 'П =ФД, PY =РА = |А!) КеВ=РУ, ImB=PX С/П (PX=PD=wB> PY~PB—\B[y, для умножения С/П РХ = (С|> РУ — фс. для деления БП 1 9 С/П РХ = I С), РУ =фс(/~1рс). Примеры-. (— 1 +/2) =2,2360679 e/!'6-5fiS05°; (3-/4) = ₽5e_/53.i3oi°. (—1+/2)(3—/А) = 11,18034 е'63-43495’; 1/(1 + +/2) = (1+/0)/{1+/2)= 0,44721361е-'63-434947’ . Программа 24. Вычисление результатов С цепных опе- раций над комплексными числами А и В ПС КБ ПС ИП5 /-/ П5 ИП6 /-/ П6 ИП6 ИП9 + П9 ИП5 ИП8 + П8 С/П БП 00 ИП6 н/ t х2 ИП5 X2 + П6 ИП5 Вх П5 ИП8 ИП5 X ИП9 ЙП6 X 1 ИП8 ЙП6 X ИП9 ИП5 X + П9 <-> БП 15 ИП6 cos ИП5 X П5 Вх ИП6 sin X П6 БП 16 ИП8 f X2 ИП9 X2 + V П7 cos-1 ИП9 х<0 78 —>. /~/ 1 ИП7 БП 16 ПА 5 0 ПА 2 П1 8 ПО 1 9 ПЗ 3 2 П2 6 2 П4 БП 16 Инструкция: установить переключатель Р-ГРД Г в нужное положение; БП 8 2 С/П (РХ = 62) Re A = Р8, Im А = Р9, RqB = P5, В — Рб (если А — результат предыдущей операции, то вводить только В)\ нажать кла- виши: ЙП + С/П для сложения, ИП — С/П для вычи- тания, ПП х С/П для умножения, ИП ч- С/П для деле- ния (результаты РХ ~Р8 = ReC, PY = Р9 = ImC), ИП «-> *+ С/П для преобразования А или С в тригонометрическую форму с аргументом в интервале ]—л; л] (РХ — Р7 = |С|, PY = срс), ИП А С/П для преобразования В из тригоно- метрической в алгебраическую форму (PX = P6=ImB, PY = Р5 — Re В при I В| = Р5, <ри = Р6)‘, для временного Хранения операндов использовать регистры В, D и Е. Примеры: (1 + /2) + (2 + /1) = 3 + /3 (t 4 с); (3 + + /3) - (1 -/1) = 2 + /4 (t « 5 с); (2 + /4) (1 + j 1) =-2 + + /6 R « 7 с); (—2 + /6)/(2е/39’)=(—2 + /6)/(1 +/1,7320509) </^8с); (—2 +/6)/(1 + /1,7320509) = 2,0980761 + + /2,3650253 (t « 10 с); А = 2,09800761 + /2,3660253 = = 3,1622775 е/48-434947’ (/ «з 8 с); нажатиями клавиш вычис- ляем У А = ]/(А1 е^/г = 1,7782793 X е'31-3’7473" и пересы- лаем модуль и аргумент У А соответственно в регистры ИЗ
5и 6; по программе вычисляем У А = 1,6217824-/0,72945224; для проверки засылаем алгебраические составляющие также в регистры 8 и 9 и по программе для умножения вычис- ляем (/Л)3 = (1,621782 4- /0,72945224)’ = 2,0980762 + 4- /2,366025, выполнив операцию умножения. 3.3. ОПЕРАЦИИ НАД СТЕПЕННЫМИ МНОГОЧЛЕНАМИ Программа 25. Вычисление многочлена А (х) степени п < 13 вещественного аргумента х при минимальной длине программы f КИПЕ ИПЕ I - ПЕ -> х КИПЕ + ИПЕ х = 0 03 + С/П Инструкция: (а„ — Р0, ах — Pl, .... ап = Рп) п =» «= РЕ', х = РХ В,'О С/П РХ = А (х); t Зп с. Пример: X (2) = 13х1Э + 12х13 -|- Их11 4- 10х10 4- 9x4 4- 8х* 4- 7х’ 4- 6х® 4- Ы 4- 4х* 4- Зх3 4- 2х’ 4*4 0,5« » 196610,5 (г «35 с). Программа 26. Вычисление многочлена А (х) степени л 13 или нормированного (au = I) многочлена степени п — 14 вещественного аргумента х ПЕ ** | КИПЕ Е ИПЕ 1 — ПЕ -> X КИПЕ 4- ИНЕ х=0 06 4- С/П Инструкция: при п < 14 исключить оператор -Е по адресу 04 с изменением адреса перехода па 05 или за- менить этот оператор оператором НОП; (о0 = РО, ау =* = Pi....а„ = РД) х « PY, п = РХ (13 = РХ при п - = 14) В/О С/П РХ = А (х); / « Зл с. Пример: 4 (2) - 13х13 4- 1 2а12 4- 11хп 4- Юх'° -|-9х94 4- 8х* 7х7 4- 6х« 4-' 5хь 4- 4Х4 4- Зх3 4- 2Х2 4- х 4- 0,5 =» = 196610,5; А (2) = х“ 4- 13х1Э 4- 12xu 4- 1 lx11 4-10х*° 4’ 4- 9х* 4- 8л“ 4- 7х7 |- 6х* 4- 5х° 4- 4х* 4- Зх3 4- 2х2 4- х 4- 4- 0.5 = 212991,5 (/ « 35 с). Программа 27. Вычисление многочлена А {р) степени л< 14 или нормированного (aI0 = 1) многочлена степени л = 15 вещественного аргумента х X Вх « КИПЕ 4- ИПЕ 1 - ПЕ -> X КИПЕ 4- ИПЕ №0 06 4- С/П И нстр у к ци я: (о0 = Р0, at — Pl.ап_х Р( ~~ ~ \Х\пРЕ, ап = PY, х =.РХ В;О С/П РХ = А ('): t 3 (л — 1) с. ill
Пример'. А (2) = I4xu 4- 13х18 4- !2х18 4- Пхи 4- к Юх1® 4- 9х9 Ч- 8х* + 7х7 4- 6х® 4- 5х® 4- 4х44-3х8 + 2х’ + к + 0,5 = 425986,5 (/ « 35 с). Программа 28. Вычисление многочлена Л (х) степени п < 15 вещественного аргумента х f -> х + X КИПЕ + ИПЕ 1 — ЦЕ -ч- х КИПЕ 4- ИПЕ х=0 08 4- С/П И н с т р у к ц и я: (а0 = РО а, = Р1.ап , — Р (п~ 2)) п - 2 =- РЕ, ani— PZ, ап = PY, х = РХ В/О С/П РХ » ₽Л(х); /«3(п —2) с. Пример- А (2) == 15х,4+ 14х» 4- 13х»84- 12х’*4-11хп4- 4- Юх1® 4- 4- «х* 4- 7х7 6х® 4- 5xs 4- 4х‘4-3х* 4- 2х2 4- 4- х 4- 0,5 = 917506,5 (/« 38 с). Программа 29. Вычисление зависимой части Ао (х) = в А (х) — ап нормированного (<тп = 1) многочлена сте- пени п < 17 вещественного аргумента х f -+• 4- Вх х 4- х f КИПО 4- X ИПО 1 — х = 0 08 4- С/П Инструкция: (a^Pl, а2—Р2,.... an_t=P(n — 3))п — - 2 - Р0, ап 2 - PZ, ani=PY, х = РХ В/О С/П РХ = = А (х); t« 3(п - 4) с. Пример'. Л о (2) = х17 4- 16х’* 4- 15x,s — 14х“ 4- 13х“4- 4- 12х12 4- 11х11 4- 10х,04- 9х® 4- В*8 4- 7х7 4- 6х® 4- 5х® 4- 4- 4а4 4- Зх® 4- 2х® 4- х = 2097154 (/ « 38 с). Программа 30. Вычисление многочленов А (х) степени л < 14 и нормированных {а„ — 1) многочленов степени л 15 вещественного аргумента х с минимальным време- нем < :чета t t ИПЕ 4" X ипд 4- X И ПС 4- X НПЗ 4- X ИПЛ 4* X ИП9 4- X ИП8 — - X ИП7 + X ИН6 4- 1 X ИП5 4 X ИП4 — X ипз 4" X иге 4- X ИП1 4" X ИПО + С/П БП 00 И нет руки и я: при п < 15 оператор 4- по адресу 03 исключить или заменить оператором ПОП; (о0 = РО, = Р1.......Оц = РЕ)', вместо отсутствующих коэффици- ентов ввести нули иля (для сокращения времени счета) исключить соответствующие фрагменты вида ИПМ 4- + х) х = РХ (В/О) СУП РХ = А (х); t « 1 + (п — - 1)с. Примеры'. А (2) =» 14х14 4- 13х13 4- 12х12 4- 11л41 4- 4- Юх10 4- 9xs 4- 8х8 4- 7х7 4- 6х‘ 4- 5х* 4- 4х‘ + Зх®4- 2x4- 4 x 4- 0,5 = 425986,5 (( « 15 с); А (2) = х1ь 4- Мхм 4- J|j
4- 13.v18 4 124 4 Их11 4 Юх1® 4- 9x® 4 8ж’-Ь 7x7 4- 6.* _l 4- 5х* 4 44 4- 34 4 24 4 x 4 0.5 = 458754,5 » 15 c) Программа 31. Вычисление многочленов A (x) степени n < 15 вещественного аргумента x X ИПЕ 4 X ипд 4 X ипс 4 х ипв X НПА 4 X ИП9 4* X И118 4 X ИП7 4 X НП6 4- X ИП5 4 X ИП4 4- X МПЗ . 1. X ИП2 X ИП1 И 4- х н с т р у К Ц НПО и я: 4 (ао = СП РО. а. БП 00 - Р1 аи = РЕ} x — PZ = PY. atl = РХ (ВО) С/П (вместо отсутст- вующих коэффициентов ввести нули ори п < 15) РХ = = А (х); t к (2 4- (л - 2)) с. Пример-. А (2) = 15.4 + 14.4+ 13х134 12х124 Пх114 4 10х104-9х’4- 8х84 7л7+б+’т 5хь4- 4х44- З.к34 2х=-(- 4- х 4- 0,5 = 917506,5 (/ а? 14 с). Программа 32. Вычисление многочленов Я (х) степени < 16 вещественного аргумента х X Вх t 4- х ИПЕ 4 X ипд 4 X ИПС 4- X ипв 4~ X ИПА -4- X ИП9 4- X ИП8 4- X ИП7 -|- X ИП6 X ИП5 4 X ИП4 1 X НПЗ 4 4- С/П X Ы1 ИГ12 00 4- X ИП1 • X ИП0 Инструкция: (л0 =» РО, at = Р1,.. » 01. = РЕ) «и » PZ, аи = PY (вместо отсутствующих коэффициен- тов при п < 16 вводить нули) х = РХ (В О) С П РХ *= — А (х); t 2 4- п с. Пример-. Л (2) = 16х,в 4-15х14 4 14.4 4- I 3/4 4- 12х*3 4- 1 lx11 4- 104 4- 9х® 4- 8хв 4- 7х7 4- 6х* 4- 5д* 4- 4х4 + 4- Зх3 4- 2х* 4- х 4- 0,5 = 1966082,5 (/ « 16 с). Программа 33. Вычисление многочленов А (х) степени /1 -С 17 или нормированных («?1в = 1) многочленов степени л=18 вещественного аргумента х 4 Ьх X Ex X Bx — > x Bx —> 4 4 X ИПЕ — X ИПД 4 X ипс X HI IB — X ИПА a X ИП9 4- । X Ill 18 -{- X ИП7 -4- X ИП6 X ИП5 1 X HI 14 4 X ИПЗ 4 X ПН2 4 X ИИ! 4 X И110 4 cn БП 00 И н с т р у к и и я: ори п < 18 исключить или заменить • ;сраторами НС‘11 операторы 4- Вх по адресам 00 и 01; 116
тя PO, Qi — Pl, ...» •- PF.) Ou — PT, а1Л — PZ, J PY, x = РХ (B/O) C/11 PX = A (x); t « 3 4- n (вместо отсутствующих коэффициентов вводить нули). * Примеры: А (2) = 17х174- 16х'*+ 15х1*4- 14хм4- 13х18-г . ]2xu+llxu+ !0х1Ч 9х*’ 4- 8/4- 4-7х74- 6/4- 5х54- Т 4/4- 3/+ 2/ 4- х 4- 0,5 = 4194306.5 (/ « 18с); А (2) = 3^.1. 17х174- )6х1"4- 15х154- 14хи4- 13х134- 12х‘г4- 11/4 4- |Ох104- 9x4 8/4- 7х7 4- 6/ 4- 5х6 4* 4/ 4-3/4- 2/ 4- J х 4- 0,5 = 4456450,5 (/« 19 с). Программа 34. Вычисление многочленов Л (х) лронз* вольной степени вещественного аргумента х П8 -> П9 о ПЗ КИПЗ ИПЗ С/П ИП8 ИП9 X 4- П8 ИПЗ х = 0 05 4- С/П Инструкция: л = PZ, х — PY, ап = РХ В/О С/П РХ -=л - 1, Оп-1 - РХ С/П РХ «= п - 2. а„_2 « РХ С/П РХ~П — 3 ... at = Pl С/П РХ =0, ар — Р0 С/П РХ = « А (х); f« 4 с. Пример: А (2) = Зх8 4- 2х* 4- х 4- 0,5 = 34,5. Программа 35. Вычисление многочленов А (р) степени п < 12 и нормированных (а,, = 1) многочленов степени п= 13 мнимого аргумента р — jy Сх | It-* ИПД X - ИПД /—/ X КИПЕ 4- ИПЕ 1 — ПЕ х<0 04 -> С/П Инструкции: при л <13 заменить операторы 1 по адресам 01 и 02 операторами f |; (а0 = РО, аг = = Р1....Oja = PC} у — РЦ, п « РЕ (12 = РЕ для п -13) В/О С/П PX = Re4(Jy), PY = Im A (jy)-, t № 5 с. Примеры: А (/2) = 12/г4- 11рп4- 10р'»+ 9р» 4- 8р’ 4- + 7р‘ 4- 6р’-~ 5/г4- 4р44- Зр34- 2р*4- р 4- 0,5 = 40632,5 — -/18678; А (/2) « р13 4- 12р124- Ирп4- Юр104- 9р» 4- 4- 8ps4- 7р7+ 6р’4- 5р54- 4р4Ч- Зр*4- 2р24- Р 4- 0,5 =» « 40632,5 — /10486 (t « 58 с). Программа Зв. Вычисление многочленов А (р} степени 4 13 и нормированных (а„ = I) многочленов степени п = ®= 14 мнимого аргумента р = jy хг 1 А А т Сх ИПС 4- X ИПА X ИПЗ 4- X ИПЗ X ИП4 4- X ИП2 — X НПО 4* ПЕ « >« Сх ИПД — X ипв — X ИП9 4- X ИП7 X И По 4- X ИПЗ X ИГП — <-> Y X HUE С/П БП 00
И п с т р у к ц и я: при п = 14 заменить оператор п по адресу 04 оператором /—/; (н0 = РО, а, Р1, а “* — РД; вместо отсутствующих коэффициентов ввести цул^л у = РХ (В/О) С/П РХ = Re A (jy), PY = \тА Qy);t' ~ (2 + п) с. Пример-. A (/2) = I3p‘*+ 12pu+ 11/>и+ 10р,0+ урь, 4- 8р«+ 7рЧ 6/А+ 5р6+ 4р4+ 3/?+ 2р*+ р + 0.5-1 - 40632,5 + /87818: А (/2) = р" + I Зр1Э + 12р1а + Иди + 10р10+ 9рэ+ 8р®+ 7р7+ 6р*+ 5р3 + 4р* + Зрл Ь 2p*t. + р + 0,5 ~ 24248,5 + /87818 (/ «16 с). Программа 37. Вычисление многочленов А (р) п < 14 и нормированных (а„ I) многочленов степени степени п = 15 мнимого аргумента р = jy к2 ft _ х /—/ ИПС + X ИПА — х ИП8 + х ИП6 — х 11114 + х ИП2 — х ИПО + ПЕ — Сх ИПД + х ИПВ — х ИП9 + х ИП7 — х ИП5 + х ИПЗ — х ИП1 + ~ Г х ИПЕ С/П БП 00 Инструкция: при п = 15 заменить оператор Сх по адресу 29 оператором /—/; (а0— РО, а, = PI.а1Я= « РД) Оц =« РУ (при л< 14 вместо отсутствующих коэф- фициентов ввести нули), у = РХ (В/О) С/П РХ = РЕ = — ReA (jy), PY — I т/l (jy); / « (3 т п) с. Примеры'. А (/2) = 14р14+ 13/?13+ 12дп+ 11рп + 10р11!+ + 9р*+ 8р*+ 7р’+ 6рвт- 5рв+ 4р4+ Зр3+ 2р2 f- р + 0,5= = -188743,5 + /87818, Я (/2) = р1Л -1- 14/)“ + 13рп 4 + 12р184- 11р,г+ 10р1й+ 9р»+ 8/+ 7р7 + 6р*+ 5р5+ 4/>Ч + Зр3 + 2р‘+ р + 0,5 = -188743,5 + /55050 (/ «16 с). Программа 38. Вычисление многочленов 4 (р) степени < 15 и нормированных = 16 мнимого аргумента (а,, = 1) многочленов P^lY степени ха t X /-/ ПЕ Сх + — /-/ X /—/ ИПС + X ИПЛ - X ИП8 X ИП6 — X ИП4 + х ИП2 — X ИПО + ИПЕ НЕ - ИПД + X ИПВ X ИП9 + X ИП7 — X IIП5 —. — X ИПЗ — X ИП1 - • - 4 ► V X ИПЕ С/П БП 00 Инструкци я: при п < 16 исключить или заме нить операторами НОП операторы — / — / по адреса* 08 и 09; (л0 = РО, л, = Р/, ..., а13 = РД) au = PZ, = PY (при л< 15 вместо отсутствующих коэффициент^ И8
-РСТИ нули) у = РХ (В/О) С/П РХ = РЕ = Re A (jy), рУ -- Im А (jy)-, t « (2 4- п) с. г Промеры: А (/2) = 15р’5 4- 14р“ 4- 13/?” 4- 12р“ 4- . цр« 4- Юр1» 4- 9р» 4- 8р» 4- 7р7 4- 6р» 4- 5р» 4- Т 4р«+ Зр3 4- 2ра4- р 4- 0,5 =—188743,5—/403702; Т/»)₽ри4- 15р1&4- 14рм4- 13р134- 12р134-11рп4- 10р1О4- J.V4- 8ря4- 7р’4- 6pfi4- 5р*4- 4р4+ Зр34- 2р34- р 4- J 0.5 = —123207,5 - /403702 (I ~ 18 с). Программа 39. Вычисление многочленов А (р) степени я < 16 и нормированных (ап = 1) многочленов степени 17 мнимого аргумента p = jy X* X Вх <-* /-/ ПЕ Сх 4- X ИПС 4- X ИНА X ИП8 4- X ИП6 X ИП4 — X ИП2 — X ИПО 4- ИПЕ 4-> ПЕ Сх _ц 4- X ипд 4 X ИПВ X ИП9 1 X ИП7 - X ИП5 4“ X ИПЗ X ИП1 4- *♦ Г X ИПЕ с/п БП 00 И нструкцня: при п < 17 исключить или заменить оператором НОП оператор 4 по адресу 37; (а0 = РО, аг =• = Р1.... ai9- РД) alt = PT, аи = PZ, = PY (при л< 16 вместо отсутствующих коэффициентов ввести ну- ли) у = РХ (В/О) С/П РХ = РЕ = Rc A (jy), PY = ~ lm?l (/у); t « (3 4- л) с. Примеры- А (/2) = 16р1в4-15р1ь4- 14р144 13р”4-12ри+ 4 Нр“4 10р”4- 9р*4- 8рв4- 7р74- 6рв4 5р*4- 4р*4- Зр3 4- 4- 2р3 4- р 4- 0,5 « 859832.5 — /403702; A (J2) « р17 4- + 16р‘«4- 15р,94- 14р,44- 13р«4- 12p,s4- 11ри4- Юр104 4 9р’4- 8р»4- 7р74- 6р« 4- 5р54- 4р44- Зр34- 2р24 Р 4- 40.5 - 859832,5 — /272630 (/ « 20 с). Программа 40. Вычисление многочленов А (р) произ- вольной степени п мнимого аргумента р = jy П7 П9 ++ ПО Сх П8 КИПО ИПО С/П ИПЗ /—/ ИП9 х 4- ИП7 ИП9 х П8 <* Г17 ИПО х=0 07 4- С/П Инструкция; п = PZ, у = PY, ап = РХ В/О С/П РХ = п — 1, ап х = РХ С/П РХ = п — 2, ап , = РХ С/П РХ' п — 3 ... Qj = РХ С/11 РХ = 0, в0 = РХ С/П РХ^. Р7 = ReH (jy), PY Р8 -dnM(fo); /«5 с. Пример- А (/2) = Зр3 4- 2р* 4- р 4- 0,5 = — 7,5 — /22. Программа 41. Вычисление многочленов А (р) степени
л < 10 л = И и нормированных (а„ = 1) многочленов степени комплексного аргумента р = х 4- jy ПС t <-» ПД Сх t j —ПВ «-» ИПС х ИПВ ИПД X 4- ** ипд X ИПВ line х — КИПЕ 4- ИПЕ 1 — ПЕ х<0 06 С/П Инструкция: при л<11 заменить оператор f п0 адресу 04 оператором 1; (а0 = РО, ах = Р1, ..., -- Рп) п = РЕ (10 = РЕ при п — 11), х = PY, у = РХ В О С/П РХ = ИеД (р), PY = 1тД (р); (Г» (10 4- 8л) с. Примеры-. Я (2 4- /2) = Юр1® -г 9р* 4- Вл8 4- 7р’ 4- 4- 6р*4- 5рЧ- 4рЧ- Зря+ 2р24-р 4-0,5= 112722,5 4- 4- /390594; А (2 4- /2) = р11 + 10pie-f- 9р’+ 8р’4- 7р71- 6р* 4- 5р54- 4р*4- Зр34- 2р*+ р 4- 0,5= 47186,5 4- /456130 (/ « 90 с). Программа 42. Вычисление многочленов А (р) степени н < 11 комплексного аргумента р = х 4- jy ПД о ПЕ ИПВ X ИПА 4* ИПД ИПВ X ПС <-► ИП9 ПП 43 ИЦ8 ПП 43 ИП7 ПП 43 ИП6 ПП 43 ИП5 ВП 43 МП 4 ПН 43 ипз ПП 43 ИП2 ПП 43 ИП1 ПП 43 ИПО ПП 43 С/П ИПС ипд X —— «-> ИПЕ X < * ипд X ИПС ИПЕ X 4- ПС <» В/О Инструкция: (ап = РО, о, = Р1, .... = РВ\ при л< 11 вместо отсутствующих коэЗхриннентов ввести нули или для сокращения времени счета соответственно изменить начало программы) х = PY, у — РХ В/О С/П РХ = ИеЛ (р), PY - PC = 1гвД (р); при сокраще- нии программы время счета t » (7 4- 6л) с. Пример-. Л (24- /2) = Пр”4- Юр104- 9р’4- 8р"4- 7р’ + 4-6р®4- эр64- 4р*4- Зр34- 2р24- р 4- 0,5 -608173,5 4 + /1111490 (/« 73 с). Программа 43. Вычисление нормированных (а„— 1) мно- гочленов А (р) степени п = 12 комплексного аргумент Р = х 4- jy ПД ПП ПС 40 ИПЗ ПЕ ПП И1 ш 40 ИП7 НПА ПП ПП 40 40 ИП6 ИПЕ ПП 10 Hi 15 ПН 40 ИП4 ПП 40 ИПЗ ПП 40 ПП2 ПП 40 НП1 ПП 40 ИПО ПП 40 С/П ИПС ИПД X — «-> ИПЕ X В, О о ИПД X ИПС ИПЕ X 4- ПС 120
Инструкция: (о0= РО, а,« Р1, ..., ап = РВ) ^PY, у= РХ В/О С/П РХ = ReA (р), PY = ImA (л); / « 80 с. Пример: А (2 4- /2) = р12 4- 1 Ip11 4- Юр10 4- 9р9 ф 4- 8pe + 7р74- 6р*-ф 5р5+ 4р‘— Зр3-ф 2р24- р 4- 0,5 =» -=—870317,5 4- /1111490. Программа 44. Вычисление многочленов А (р) степени я < 12 комплексного аргумента р х т jy ПД ПЕ ИПС ипд X ИПС ИПЕ X ИПВ ПП 45 ИПА ПП 45 ИП9 ПП 45 ИП8 ПП 45 ИП7 ПП 45 ИП6 ПП 45 ИП5 ПП 45 ИП4 ПП 45 ИПЗ ПП 45 ИП2 ПП 45 ИП1 ПП 45 ИПО 4- С/П ипд А. X О ИПЕ X Вх + т —> ИПЕ X *-> ипд X — В/О Инструкция: (а0 = РО, at = Р1...... а!Я = PC', при п< 12 вместо отсутствующих коэффициентов ввести нули или для уменьшения времени счета соответственно сократить длину программы) х =» PY, у = РХ В/О С/П РХ => Re А (р), PY = Im Л (р). Пример: А (2 4*/2) ™ 12р12 4- Нри+ Юр,0ф9р‘4- + 8р«+ 7р74- 6pe+ 5р54- 4р*4- Зр3-{- 2р24- р + 0.5 = » -3753901,5 4- /11111490 (/ « 100 с). Программа 45.Вычисление нормированных (<z13= I) мно- гочленов Л (р) степени п=13 комплексного аргумента Р л х 4- jy ПД <-> ПЕ ИПС ПП 42 ИПВ ПП 42 ИПА ПП 42 ИП9 ПП 42 ИП8 ПП 42 ИП7 ПП 42 ИН6 ПП 42 ИП5 ПП 42 ИП4 ПП 42 ИПЗ ПП 42 ИП2 ПП 42 ИП1 ПП 42 ИПО 4- С/П ИПД 4 > t X ИПЕ X Вх 4- —> ИПЕ X ИПД X — В/О Инструкция: (а0 « РО, pt — Pl........оГ! = PC) x = PY, y= РХ В/О C41 PX « Re A (p), PY = “ Im A (p); t » 100 c. Пример: Д (2 4-/2) = pl34- 12p*3 4- lip*14- 10p10 + 4-9р94- 8p<4- 7p74- 6рЧ- 5p44- 4p44- 3p3 4- 2p’A- p г 0,5 = «= —4278189,5 4- /587202. Програма 46. Вычисление-яормиронаннчх (aN = 1) мно- гочленов А (р) степени л= 14 комплексного аргумента Р = х ф jy 1Л
пд ПЕ ИПЕ ПП 47 ИПС ПГ1 47 ипв ЯП 47 ИПА ПП 47 ИП9 ПП 47 ИП8 ПП 47 ИП7 ПП 47 ИП6 ПП 47 ИПЗ ПП 47 ИП4 ПП 47 ИПЗ ПП 47 ИП2 ПП 47 ИП1 ПП 47 ИПО — С/П —Т - ИПД 4-» t —>• X <-> ИПЕ X Вх —> f ИПЕ X ипд X — В.О Инструкция: (ао=РО, al=Pl,..., а1г = PQ = PZ, х = PY. у^РХ В/О С/П РХ = Re А (р), PyJ, *= ImА(р)\ tm 120с. Пример: Л (2+/2)= р,4+ 13р1Э4- 12р,г4- 11рхЧ- + Юр10 4- 9р’4- 8р«+ 7р’+ 6р"4- 5рь+ 4р*4- 3ps + 2р- + + р 4- 0,5 = —1056964,5— /7801406. Программа 47. Вычисление нормированных (о1а = 1) мно- гочленов А (р) степени п — 15 комплексного аргумента Р = х 4- jy пд О ПЕ X 2 X ИПД 4* X Вх —> t —>. 4* ИПЕ 4- ИПЕ X ИПД № ПП 65 ИПС ПП 65 ипв ПП 65 ИПА ПП 65 ИП9 ПП 65 ИП8 ПП 65 ИП7 ПП 65 ИП6 ПП 65 ИП5 ПП 65 ИП4 ПП 65 ИПЗ ПП 65 ИП2 ПП 65 ИП1 ПП 65 ИПО 4- с/п + ИПД t — X ИПЕ ИПЕ X 4-> < ► X ИПД Вх X 4- В/О t •—4- Инструкция: (а0= РО, ах—Pt....... <*и = PC) ai3= PT, ati—PZ, х= РУ, у= РХ В/О С/П РХ = Re А(р), РУ = 1тД (р); tag 135 с. Пример: Д (2 4-/2) = р15 4- 14р144- 13р” 4- 12рп4- 4-Ир”4- Юр104- 9р’ 4- Зр84- 7р74- 6рв4- 5p5J- 4р‘4- Зр®4- 4- 2р® 4- р 4- 0,5 = —6375341,5— /39258686. Программа 48. Вычисление нормированных (a,t — 1) многочленов А (р) степени п= 16 комплексного аргумента р = х 4- iy. 4-е ИПЕ X2 ипд X2 — 4-* ИПЕ 4-» X Вх 4- t —> <-► ИПЕ 4- ИПЕ 4' ИПД X t — ПП 69 ипс ПП 69 ипв ПП 69 ИПА ПП 69 ИП9 ПП 69 ИП8 ПП 69 ИП7 ПП 69 ИП6 ЯП 69 ИП5 ПП 69 ИП4 ПП 69 ИПЗ ПП 69 ИП2 ПП 69 ИП1 ПП 69 ИПО ПП 69 С/П ИПЕ X Вх —► 4- я- ► ИПД «-> X Вх —>- — ипд <•> —►- X 4-* ИПЕ X - 4-> В/О 122
Инструкция: («и — РО, а{ = PI, ..., a(J = PC) . PE, у - РД, «и == PZ, PY, агъ - РХ B/0 r/Tl PX => Re A (p), PY = I mA (p); t « 130 c. Пример-. Л (2Д-/2)= p“4- 15pl*4- 14pu4- 13p13 4- 4- 12p124 llpu4- 10plu4- 9p° + 8ps+ 7p7 + 5p'4- + Ip4 4 3p’+ 2p2 4- p + 0,5 - 69122131 — /97978942. Программа 49. Вычисление многочленов A (p) произ- вольной степени комплексного аргумента р = к 4- jy П9 П8 -> П7 ~ ПО Сх П6 КИПО НПО С/П ИП9 ИП7 х ИП6 ИП8 х - 4- ИП9 ИП8 X ИП6 ИП7 X + П6 ~ П9 ИПО х-0 09 4- С/П Инструкция: п — РТ, х~Р2, у = PY, а„^РХ В/О С/П РХ = п — I, ап j = РХ С/П РХ = п — 2, оч.,= = РХ С/П РХ=п — 3 ... о, =РХ С/П РХ—0, а0 = = РХ С/П РХ - Re4(p), PY = lmz1(p); i ж 8 с. Пример: Л (2 4- /2) — Зр3 4- 2рг 4- Р 4- 0,5 = —45,5 4- 4- /66. Программа <50. Вычисление коэффициентов а' много- члена Л (г) = Д (р— х0) по коэффициентам а, многочлена А (р) степени п < 11 ПЕ ПД ПС -> КИПС ИПС 1 — ПС — X КИПС 4- КПС -> ИПЕ ИПС 2 4- ПС — х< 0 03 -> ИПД I — х = 0 01 С/П Инструкция: (а0=«РО. с^—Р!, .... а„ — Рп) х0 = г- PY. п = РХ В/О С/П РХ =.0, РО = а„, PI =*(>{, ... .... Рп = Пример: для многочлена А (р) — 7р7+ 6pe-F 5pft 4- 4- 4р443р34- 2р34- р4- 0.6 при хв = 0,5 получим Д (р — -х0) = Д (г) = 7г7-|-30,5г,4-59,75? 4- 69,625г*4-53.8125г’4- 4- 28.96875гг 4- 10,703125г4- 2,4296875 (t 3 мин). Программа 51. Вычисление коэффициентов С/ произве- дения многочлена А (р) произвольной степени п на дву- член Ь}р 4- ПЗ Сх П7 « П9 ИП1 х ИП7 4- П8 ИП9 ИПО х 117 КИПЗ ИПЗ ИП8 С/П БИ 04 Инструкция: (Ь9 = РО, b} — Pl) an—PY, п s= РХ В О С/П РХ =спа, PY = а - I, х = РХ С/П РХ = ся, PY=n — 2... at=PX С/П PX=ct. PY = 0, о„ = РХ С/П РХ = q, Р7 ce; t« 4 с. Пример: (2р — 1) (Зр3 4- 2р3 4- 0,5) — 6р’ 4- р’ —
— 2р2 ф р — 0,5 (вместо отсутствующих коэффициентов ввести нули). Программа 52. Вычисление коэффициентов с/ прсизве. дения многочлена А (р) произвольной степени п на трех, член /фр2 + bvp ф bQ <+ ПЗ Сх П7 П8 П9 ИП2 X ИП7 + П6 ИП9 ИП1 X ИП8 ф П7 ИП9 ИПО X П8 КИПЗ ИПЗ ИП6 С/П БП 06 Инструкция: (&0 — РО, Ьг = Р1, Ь2=Р2) п = Ру а„ = РХ В/О С/П РХ = cn+2t РУ =п—\, ап^ = РХ С/П РХ = с„+1. PY = п — 2, ... , ах = РХ С/П РХ = с3, РУ^ = 0, а(1 = РХ С/П РХ = с2, Р7 = clr Р8 = с0 (i tv 10 с). Пример-. (Зр2 ф 2р ф 0,5) (р2 ф 2р ф 0,5) = Зр4 ф + 8р3ф 6р2ф 2рф 0,25. Программа 53. Вычисление коэффициентов с( произве- дения многочлена А (р) произвольной степени п на много- член В{р) степени т < 7 Ч-* Сх П8 П9 ПА ПВ ПС ПД ПЕ t t ИП7 X ИПЕ + ИП6 X ипд + ПЕ —>. ф-> ИП5 X ИПС + ПД И И 4 X ИПВ + ПС —> ИПЗ X ИПА + пв <—> ИП2 X ИП9 + ПА —> ИП1 X ИП8 Ф П9 ИПО X П8 С/П БП 10 Инструкция: (Ьа = РО, by = Pl, ... , b7 = Р7, вместо отсутствующих коэффициентов при т < 7 ввести нули) ап = РХ В/О С/П РХ = сп+т, = РХ С/П РХ~ “ Pi+Jn~i = РХ С/П РХ = с7, РЕ = се, PD — с3, PC — сА, РВ — с3, РА = с2, Р9 — cI( Р8 = с0 (при т < 7 после первых 7 — т выполнений программы высвечиваются нули); / да 15 с. Пример: (7р* ф 6р“ Ф 5р5 ф 4р4 ф Зр3 ф 2р2 ф р Ф + 3,5) (р- ф р5 ф р4 ф р3 ф ра ф р ф 1) = 7р13 ф 13р12Ф ф 18р“ ф 22р10ф 25р9Ф 27р8 ф 28р7 ф 21,5р« Ф 15,5р5ф ф 10,5р4ф 6,5р3ф 3,5р“ф 1,5рф0,5. Программа 54. Вычисление коэффициентов Ci квадра- та многочлена А (р) степени п < И ПЕ ПД Сх ИПЕ ПС кипе КИПД X ИНС ИПД - х^= 0 18 <-> 2 X —Н” ИПД 1 ПД ИПС 1 —- ПС — 1 — X > 0 05 <-> С/П ИПС ипд 1 — ПС ИПЕ * " х<0 01 Сх ПД БП 06 124
г* । Инструкция: (a0~ РО, аг ~ Pl.........an = Pn) n= ^PX B/0 C/П PX = c2n C/П PX = c2n_. ... C/П PX= q C/П PX Co. Пример' (Зр3 + 2p2+ p + 0,5)2 = 9p®+ 12p5+ 10p4+ + 7p*+ 3p3+ p + 0,25 (t < 25c). Программа 55. Вычисление коэффициентов с, произ- ведения А (р) А (—р) многочленов степени п < 12 Сх ПД ПЕ кипд X2 ИПЕ х=т^ 0 32 1 ПЕ 4-> ипд 1 + ПД 1 3 — х#= 0 31 кипд КИПЕ X 2 х — БП 05 — ИПД ИПЕ + 2 — 1 + 4+ С/П В/О Инструкци я: (а0 = = РО, иг^Р/, . . » ? й12 = РС; вместо отсутствующих коэффициентов евссти нули) В. О С/П РХ = Со С/П РХ = с2 С/П РХ = ci ... С/П, РХ = = С2п‘> ~ 25 с. Пример'. А (р) — Зр3 + 2рй+ р + 0,5; А (р) А (—р) = = —9р6 — 2р4 + р2 + 0,25. Программа 56. Вычисление коэффициентов с, частного и остатка г — А (— &0) от деления многочлена А (р) сте- пени п 13 на двучлен р + Ьо по схеме Горнера ПЕ /—/ f | f -> КИПЕ х ИПЕ ] _ НЕ -> КИПЕ + КПЕ ИПЕ х = 0 06 ИПО С/П Инструкция: (цп = РО. = Р1, . .. , ап = Рп) Ьо = — PY, п = РХ В/О С/П РХ = РО = г ~ Л(— b0), Р1 = — с0, Р2 — Ср РЗ — с2 .... Рп = сп_р, i « (2 + 5п) с. Пример: (Зр3 + 2р2 + 24я + 30) / (р ~ 3) = Зр2 — — 7р ф- 45 с остатком г = —105. Программа 57. Вычисление коэффициентов q частного и остатка от деления многочлена А (р) произвольной сте- пени на двучлен Ьрр + Ьо П9 ~ П2 ИПО ИП] ~ П4 КИП2 ИП2 ИП9 ИП1 4- С/П ИП9 ИП4 х — П9 БП 07 Инструкция: (Ьо = РО, b2 = Pl) n=PY, ап~ РХ B/о С/п РХ - Cn р PY - п — 1, ап1 = РХ С/П РХ = = с„ 3, PY = н — 2, с„_2 = РХ С/П РХ = сп 3, . . . , б?! = = РХ С/П РХ -cn, PY = 0, aQ^PX С/П РХ=г(^5с). Пример: (3p3-f 2р2+ р + 0,5) / (2р 1) — 1,5ргА- + 0,25р + 0,375 с остатком р = 0,0625. Программа 58. Вычисление коэффициентов с,- частного и остатка R = v + г,, от деления многочлена А (р) сте- пени п < 10 на трехчлен р- 4- btp + rb0 125
ИПЕ 1 — ПД КИПЕ кипд ИПД 1 х > 0 26 =► ИПВ х — «- КПД ИПС х — БП Об -+ <- “ ПД кипд С/П Инструкция: (br= РВ, Ьо = PC, п = РЕ) а(. = РО, й! = Р1, ..., а = Рп В/О С/П РХ = q, РУ = г0, РО = с0, Pl = Cj. Р (п — 2) = сп_2 (7 да 6н с) Пример: (Зр4 + 15р3 + 24ра + ЗОр + 10) 7 (ра + 2р +5)== = Зр2 + 9р — 9 с остатком 7? = Зр + 55 (t да 20 с). Программа 59. Вычисление коэффициентов с, частного и остатка R = г\р + г0 от деления многочлена А (р) про. извольной степени п на трехчлен В (р) = Ьгр2 + 5хр -±ь ПА П6 Сх ПС ПЗ ИП1 ИП2 4- ИПА X ИПС + ПВ ИПО ИП2 4- ИПА X ПС КИПЗ ИПЗ х=#=0 35 ИП6 ПА ИП2 4 С/П П7 ИПВ — П6 БП 06 ИП7 ИПВ — С/П ИПС — С/П Инструкция: (&0 = РО, = Pl, b2= Р2) п== РУ, аг-= = РХ В/О С/П РХ - сп 2, PY = п — 2, ап , - РХ С П РХ = сп i ... а2 = РХ С/П РХ = с0, PY = 1, аг = РХ С./П PX=rlt РУ=0, а0—РХ С/П РХ=га (7да9 с). Пример: (Зр3 + 12р2+ ЗОр +10) / (2р2 + р + 0,5) = = 1,5 р + 5,25 с остатком R = 24р -}- 7,375. Программа 60. Определение устойчивости многочлена А (р) степени п < 12 согласью критерию Гурвица по раз- ложению в цепную дробь с коэффициентами с. ПЕ ПД кипд ИПД 1 — ПД КИПД 4 t ИПД 1 + ПД-> КПД -Ь t ипд 2 — ПД х > 0 45 — КИПД ИПД 1 — ПД х < 0 38 -- ~ 0 БП 41 КИПД х — БП 11 ИПЕ 1 — х = 000 С/П Инструкция: а0= РО, ^ — Pl, .... ап = Рп, п = РХ В/О С/П РХ = 0, Р1 = С1, Р2 = с2. Рп = сп (многочлен устойчив и не имеет корней на оси /'/ и справа от нее на плоскости р, если все коэффициенты г/ положительны); t да 25я с. Примеры, для А (р) = 6р° + 5рБ + 4р4 + Зр3 + 2p4J- + р + 0,5 получим (7 да 130 с) с;-= 3.5; 0,28571428;—14; —0,057142857; 12,5; 1,2 (многочлен неустойчив); для А (р)=; = Зр3 + 2р2 + р + 0,5 получим (/ да 47 с) 0,5; 8; 1Р (многочлен устойчив). 126
3.4. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ (16) И МАТРИЧНАЯ АЛГЕБРА Программа 61. уравнений П8 <* П9 КП1 ИП9 х ИП7 х ИП5 Решение системы из двух линейных 2 ПО 8 П1 С/П ИП8 Ч- — КП1 L0 07 ИП6 f - /-/ С/П Инструкция: од = °-ч ~ ,Г1Х В/О С/П а12=РК, % = РХ С/П qt - PY, q2 = РХ С/П РХ - xt, РУ = х.2. Пример: для системы уравнений '1 2 31 ГхЯ _ Т 4] [х2] ~ [10 получим решение = 1; ха = 2. Программа 62. Решение системы из трех линейных уравнений ПД -> ПС о пв 1 1 П1 3 1 0 СП ипд -г- КП1 П2 ИПС X -г — КП1 —> ИП2 ИПВ КП1 L0 10 ИПО ИП8 ПД X ипз — ИП5 ИПД X ИП6 ПЗ ИП2 ИП5 ИПЗ X — ИП8 — П2 ЙП4 ИП7 ИПЗ X — ИПА ИП2 у П1 С/П Инструкция: йи = PZ, а21 = PY, а31 = РХ В/О С/П = PZ, а22 = PY, а3о= РХ С/П а,3 - = PZ, а2э PY, ац = РХ С/П qx = PZ, q,= РУ,а.^РХ С/П РХ = Pl = д, PY = Р2 = х2, РЗ = х3 (t ж 20 с). Пример', для системы уравнений Г 2 3 '3 2 4 10 6 -И х2 14' 28 .22 получим решение: х2 = 1, х2 = 2, х3 = 3. Программа 63. Решение системы из трех линейных Уравнений с предварительным занесением в память исход- ных данных ИПЗ ИП6 ИП9 ПП 42 ПЗ по ИПД П9 3 ПО ИПС ИПВ ИПА ПП 42 пв ~ ПА ИПД ПС ИП2 ИП5 ИП8 ПП 42 П4 f-* П/ ИПД П1 ИП9 П2 ИП6 П8 ипз П5 L0 12 ИПА С/П ИП7 ИП1 х — В/О ПД ИП4 X — - ИПД
Инет ру кци я: ди= Р7, а12 = Р8\ al3 = Р9, а21 === = Р4,а.,~—Р5, а23 = Р6, а31 = Р1, азг — Р2, а33~рз ?, = РА, q3 = РВ, <?3 = PC В/О С/П РХ = РА = С РВ = х.г, PC - х3 {I да 30 с). Для проверки можно воспользоваться примером к про- грамме 62. Программа 64. Решение системы из четырех линейных уравнеаий с симметричной матрицей коэффициентов ПП 10 ПП 15 ПП 20 ПП 25 ИПА С/П ИП9 ИП6 ПП 91 П9 ИП5 ИПЗ ПП 91 П5 ИП2 ИП] ПП 91 П2 ИПВ ИПА пв ИП1 ПП 92 ПА ИПС ИПВ ПС ИПЗ ПП 92 ПВ ИПД ИПС ПД ИП6 ПП 92 ПС ИП8 ИП6 П8 ИПЗ ПП 92 ИП4 ИП1 П6 ИПЗ ПП 92 Ш П4 ИП7 ИП6 ИП8 ПП 92 ИПЗ ИПО — П7 -е-> ПЗ ИП8 ИПО «Д- П8 ИП6 ИПО П6 ипд ИПО ПД ИП2 ПО ИП5 П2 ЙП9 П5 В/О t ИПО -- —™ В/0 Инструкция: ап = РО, al2 = Pl, а22 — Р2, а13 = = РЗ, а,3 = Р4, а33 = Р5, ati ~ Р6, a2i = Р7, a3i = Р8, аи = Р9, ?1 = РА, q2 = РВ, q3 = PC, q4 = РД В/О С/П РХ ~ РА = РВ = х2, PC = х3, РД = (t да да 160 с). Пример', для системы уравнений г5 4 3 1 - хр Г261 4 6 0 2 24 3 0 7 3 х3 36 L1 2 3 8. 1хД .46. получим решение: х3 = 1; х2 = 2; х3 = 3; х3 = 4. Программа 65. Решение системы из п < 4 линейных уравнений П4 1 4 ПЕ П2 ИПО П1 С/П ИП4 ч- К.П.2 L1 07 ИПЕ ПЗ ИПО П1 L1 23 кипз С/П БП 19 Сх КП2 L1 2^ КП2 ИПО ИП2 + П1 П2 ИПЗ - хД= 0 42 С/П ПП 83 БП 28 КИП0ИП0 ПЗ с/г КИП2— П4 С/П КИП2 — ИП 4 -г КП1 L3 4< ИП1 ИПО + ПЗ ИПЕП1 П2 КИ1 /-/ ПП 83 ИПЗ + ПЗ ИП1 — х = 0 64 ИПО п 1 КИПЗКП2 L1 77 БП 13 ИПО кипз X киги + КП2 -> L0 85 по В/О Инструкция: п = РО, РХ В'О С/П = РХ С/П ... а1п = РХ С/П q, = РХ С/П о31 =РХ С/П . - • 128
д ~ РХ С/П ... ап1 = РХ С/П ... qn = РХ С/П РХ-= ^PD^xt С/П РХ = PC — х2 С/П РХ^РВ = х3 С П рХ - РА = х4 (t < 40 с). Пример1, для системы уравнений г 2 12 20 2п 6 8 2 2 5 5 10 0 .10 2 4 1. 1 J •м еч w т Ч К £ 1 г941 36 45 .30. полупим х4 = 1; хг = 2; х3 = 3; г4 = 4; для систем из двух и трех уравнений можно использовать данные примеров к программам 61 и 62. Программа 66. Решение системы из пяти линейных урав- нений ИПЕ -L» кпо 5 ПД С/П ИПД t t КИПО X кипд + ПП 95 х<0 09 -> ПД С/П ипд ИПО — 3 + х>0 09 »-> КИПД ипд по —> С/П КИПО —> Вх <-> ПП 95 X = 0 35 - ПД Г 3 по П1 КИП1 /-/ t -ь 1 КИПД х КИП1 + кпо ПП 96 х=0 58 <4 ПД ИП1 ИПО 6 — — — х=0 54 П1 —ь кипд кпо Сх ПП 95 х<0 81 4- 1 3 по БП 20 КПД ИПД 1 - ПД 1 — В/О Инструкция: 13 = РО, alt = РЕ, а]2 = РХ В/О С/П als = РХ В/О С/П а14 - РХ В/О С/П а15 = РХ В/О С/П <к = РХ В/О С/П 13-РО, 0 = РЗ = Р4 = Р5 - Р6 = = Р7, а21=РХ С/П аЙЗ=РХ С/П... q2 = РХ С/П аи = РХ С/П а8а = РХ С/П ... ?3 = РХ С/П ... ам = РХ С/п й5а = РХ С/П ... = РХ С/П PC = х, РВ - х2, РА = х8 Р9 = х4, Р8 = х5. Пример1, для системы уравнений 2х4 + 10х2 + 16х3— 6х4 + 8х5 — 86; Зх, + 2ха + 4х3 + 8х5 = 59; 6х4 — 4хг + х3 4- Зх4 + 5х5 = 38; 8хх — 2х3 + 4х3 — Зх4 + + х5 = 9; 3xj + 2х3 + 4х3 + х4 + 5xs = 48 получим х4 = = 1; х2 — 2; хя = 3; х4 = 4; хв — 5. Программа 67. Решение системы из п < 12 линейных Уравнений по методу Жордана с использованием вычисли- тельного бланка t Сх ** ИП1 -г ПО «-> 1 ПД ++ С/П ИПЕ ИПД 1 + ПД - х>0 26 КИПД ИПО х — БП 10 ~ ИПО БП 02 L-3S1 [29
Инструкция: для вычисления элементов /?-й части бланка (см. табл. 11) п~РЕ, записать единицу в столбец р-й строки р-й части бланка, ввести a(tp~n=Pl, = Р2, ... , а<7” = Рп, а\р~+г = В/О С/П (РХ = 0); поочередно вводить остальные элементы (р-|- 1)-го и сле- дующих столбцов (р— [)-й части бланка, нажимая после каждого ввода клавишу С/П и регистрируя результаты на строку выше, чем записан вводимый элемент в (р—l)-ij части (после ввода первого элемента следующего столбца результат записывается в последней строке предыдуще- го столбца в р-й части бланка); после ввода последнего элемента а^+2 нажать клавишу С/П и зарегистрировать fln-i,n+2. затем снова нажать клавишу С/П и зарегистри- ровать 0^4+2 в нижнюю строку контрольного столбца. Для проверки правильности ввода и выполнения про- граммы воспользоваться данными табл. 11. Программа 68. Вычисление определителя Л веществен- ной матрицы второго порядка -> X П9 -> х ИП9 - С/П Инструкция: ап = PT, а12 = PZ, а21 = PY, а22 = РХ В/О С/П РХ = А. Пример: Программа 69. Вычисление определителя А веществен- ной матрицы порядка п = 3 П7 4- П8 <> ИП7 4 П9 2 ПО 7 П1 С/П ПА ИП8 х — КП1 -> ИПА ИП9 X — КП1 L0 II ИП6 х ИП4 ИП5 х ~ — ИП7 х С/П Инструкция: ап = PZ, alt =PY, aJ3 = РХ В/О С/П ап = PZ, а22 = PY, огз = РХ С/П a3l = PZ, а32 = + PY, а33 - РХ С/П РХ = А. Пример: 3 2 1 А - 4 10 6 = 40. 1 2 3 Программа 70. Вычисление определителя А веществен- ной матрицы порядка п < 5 130
ги L1 ИПЕ 06 П2 ИПЕ КИПО ПЗ ИПО ИПО П1 Ш С/П Сх ИП4 КП2 L1 КП2 17 ИПО ИП2 + П1 П2 ИПЗ — ху=о 34 С/П пп 80 БП 21 КИПО ИП4 с/п КИП2 — X П4 ИПО ПЗ X 0 35 Вх с/п КИП2 — КП1 L3 45 ИП1 ИПО _L ПЗ ИПЕ П1 П2 киш /-/ ПП 80 ИПЗ + ПЗ ИП1 ,—- х = 0 61 ИПО П1 кипз КП2 L1 74 БП 12 ИПО 82 <+ t по кипз В/О X КИП1 + КП2 —> L0 Инструкция: 13 = РЕ, п = РО, яп = РХ В/О С/П Ог,= РХ С/П ... azl = РХ С/П а23=РХ С/П ... ал1 = ~РХ С/П ... ап2 = РХ С/П ... апп = РХ С/П РХ = А; для исправления ошибочно введенных чисел использовать только оператор Сх, чтобы не изменить содержимое осталь- ных регистров операционного стека. Примеры: для п = 2 и п = 3 использовать данные при- меров к программам 68 и 69; определители "1 2 3 4 5" 2 13 4 5 А = 3 2 14 5 = 360. 4 3 2 1 5 -5 4 3 21- Программа 71. Вычисление определителя А веществен- ной матрицы порядка п < 1! по схеме единственного деле- ния Гаусса с использованием вычислительного бланка ПС ИПД х ПД ИПЕ 1 — ПЕ ПО ИПД С П ипс кпо ИПО 1 — х = 0 10 С/П ПВ ИПЕ ПО t -> с/п КИПО ИПВ х — НПО 1 — х = 0 24 -> БП 19 Инструкция: для вычисления элементов р-й части бланка п + 1 = РЕ, 1 = PD-, а1^ = РХ В/О С/П а^г = РХ С/П РХ=р, ... 0^'2.!= РХ С/П РХ=п-р; Для каждого столбца с номером / > р выполнить = *= РХ С/П РХ = п + 1 - р, = РХ С/П РХ = = ... / = РХ С/П РХ = a^Lp'j; после заполне- ния всех столбцов / > р в р-й части проверить равенство Элементов контрольного столбца сумме остальных элемен- 5* 131
тов строки; после заполнения всех частей бланка нажал клавиши В/О С/П РХ = Л. Для проверки правильности ввода и выполнения про- граммы использовать данные табл. 12. Программа 72. Обращение вещественной матрицы /1 = В~1 второго порядка П8 -> /—/ П7 /—/ П6 П5 ИП8 X ИП7 ИПО х — П9 9 ПО КИНО ИП9 -Г С'П БП 18 И и ст ру к пня: atl = PT, а12 = PZ, аа1 = PY, == = РХ В О С/П РХ = Ьи С/П РХ = 621 С/П РХ = С П РХ=Ьгг Пример: [1 2-1 Г—2 1 1 [3 4] = [ 1,5 — 0,5] • Программа 73. Обращение вещественной матрицы А — = В 1 третьего порядка Сх 3 ПО ИП4 ИП1 + ПД /—/ ПС ИП5 ИП2 ИПД х - ПА ИП6 ИПЗ ИПД х — ПВ ИГ17 ИП1 -г ПД /—/ Г16 ИП8 ИП2 ИПД х - П4 ИП9 ИПЗ ИПД х — 115 ИП2 ИП1 ~ П7 ИПЗ ИП1 4- П8 ИП1 1/х ПЭ ИПА П1 ИПВ П2 ИНС ПЗ L0 03 С/П Инструкция: ап = Р7, ait = Р8, а13 “ Р9. ц2| => ет р4, азл — Р5, с2з = Р6, о3| = Pl, а33 — Р2, а33 — = РЗ В/О С/П РХ = РЗ = 6П, Р7 = Р8 =Ьзг, Р9 = b9y, Р4 = 613, Р5 = b2J, Р6 = &м, Pl = bl3, Р2 = «= Ь12, РЗ = bn (I « 50 с). Пример: 2 5 2 Г3 0 1 1-р г 0,34375 —0,125 2 = 0,0625 0,25 3] [—0,15625 —0,125 -0,03125 —0,1875 0,46875 Программа 74. Вычисление произведений С = Л X В вещественных матриц порядка п = 2 ПП 18 П9 П6 С/П ПП 18 П5 « П8 ИП9 П4 — ИП6 П7 -► С/П ПВ ИП8 X о ПЛ ИП7 х + ИПВ ИП5 X ИПА ИП4 х + В, О Ипструкц и я: Оц = Р7, а12 « Р8, агу = Р4, - « А5. = ру, &п = РХ В/О С/П РХ = си, Р\ = си, - PY, hi2 = РХ С/П РХ - Р8 = cu, PY И2
ef P5 = (P7 = cn, P4 = c,i); /«7c; при цепном умно- жении матриц достаточно вводить лишь следующий мно- житель, так как элементы предыдущего произведения хра- вятся вместо элементов матрицы А. Пример: [1 21 [5 61 [19 221 [19 221 [ I — 21 _ [—47 501 [з 4] [7 8] “[43 50]; [43 50][—3 4] “[—107 114J * Программа 75. Вычисление произведения С = А X В вещественных матриц порядка а = 3 ПВ -> ПА ПО ИП1 X ИП2 ИПА X + ипз ИПВ х + ПД ИП4 ИПО X ИП5 ИПА X 4- ИП6 ИПВ X + ПС ЙП7 ИПО х ИП8 ИПА х + ИП9 ИПВ х 4- С/П БП 00 Инструкция: (аи = Р7, а14 — р8, а1э = Р9, а21= = Р4, a2i = Р5, aiS — Р6, atI = Pl, aS2 = PZ, aJ3 —РЗ) bu = PZ, btl «= PY, b31 «= PX В/О С/П PX ~ cn, PY = PC = c„, РД = c31, bia = PZ, bu - PY, b31 = = РХ С/П PX = cn, PY - PC = ci2, РД = c„, b„ =PZ, ~ PY, = PX C/П PX = c13, PY = PC = РД = c33 (I » 12 c). Пример: 4 5 6 1 2 31 Г1 4 5 6 2 7 8 9 J L3 71 Г14 8 — 32 9 150 32 77 122 50 ‘ 122 194. Программа 76. Вычисление произведения С прямоуголь- ной матрицы А с п столбцами на прямоугольную матрицу В с п строками при п < 12 ПЕ 1 + ПО С/П КГ10 ИПО 1 — х = 0 04 ИПЕ 1 4- ПО Сх ПД С/П КИП0 X ИПД + ПД ИПО 1 — х = 0 18 ИПД БП И Инструкция: для каждой Лй строки матрицы А выполнить: п = РХ В, О С/П РХ = п 1, ап = РХ С П РХ = п — 1, alt = РХ С/П РХ = п — 2 ... ain = РХ С/П РХ = 0, Ьп •= РХ С/П РХ = п — 1; Ьи = РХ С/П РХ = ^п~2 ... ЬП1 = РХ С/П РХ сп, Ь12 = РХ С/П РХ == « п — 1, Ьг, = РХ С/П РХ = п — 2 ... ЬП1 - РХ С/П PX = ci2 ... Ь1Я=РХ С/П РХ = п—1, Ь2П«=РХ С/П РХ = п — 2 ... bnri - РХ С/П РХ = с1п (/ « 5 с). J33
Для проверки правильности ввода и выполнения про- граммы воспользоваться данными примера к програм- ме 75. Программа 77. Решение системы из двух линейных уравнений с комплексными коэффициентами 1-1 ПД <-> ПС с/п пп 71 114 4+ П7 СП пп 71 П5 П8 С/П ПД ПС III 17 ИП4 1 ПП 76 по 4+ П1 ИП8 ИП5 J ПП 76 П2 4* ПЗ С/П ИПО •—- /—/ ПД ИП1 — ПС С/П ИП2 —- ИПЗ —- 4-> ПП 71 ПД ПС С/П ИП7 ИП4 1 ПП 76 ИПЗ — /—/ 4-> ИП8 — /—/ С/П ипс X2 ИПД X2 4- Г19 —> пв ИПС X *-► ПА ипс X ИПВ ИПД X —- ИП9 — «-► ИПА ипд X 4- ИП9 —- В/О Инструкция: Rean — PY. \тап = РХ ВО С/П (Z«2c) Rca„ = PY, Im а„ = РХ С/П (/«12 с) Re qt e - PY, Ini ?! = РХ С/П (/«12 с) Rea3l » PY, 1m ог1 = = РХ С/П (/ « 20 с) Realt «= PY, Im а„ = РХ С/П (/ « « 3 с) Re <7, = PY. Im q2 = РХ С/П (/«15 с) РХ ~ Re х, PY = Imx, С/П(/« 12 с) PX^ReXj.PK ~ Im*,. Пример', для системы уравнений 14-/1 1 +/21Гх11 Г—3 + /3 24-/1 2 + /2]lxJ “ I— 2 + /5 получим решение: х, = 1 /0; х, = 0 4- /2. Программа 78. Решение системы из п < 6 линейных уравнений с комплексными коэффициентами методом Жор- дана при использовании вычислительного б. ланка ПС ИП1 X пд ИПО X + ИПС ИПО X ИПД ИП1 X — ИПО X2 ИП1 X2 ПС — ПД 4-4 ИПС — ПС 3 ПЕ —► С/П КИПЕ ИПС X — ЙПЕ 1 ПЕ КИПЕ ИПД X — 4-0 КИПЕ ИПС X — ИИЕ 1 4- ПЕ —> КИПЕ ИПД X 4- ИПЕ 2 4~ БП 28 Инструкция: для каждой р-й части бланка Rea^l’, = РО, =- PJ, Rea^, = Р2, Ima^i «* = РЗ, Rea£ P2i - Р('2п - 2). Ima^"л-i ~ R(2n - 1): для каждого столбца с номером / > р выполни 1ь: Real/ 134
„ PY, [та|ГП pX B/0 C/П p* = Re 4?, рУ - Imatf’, Rew-o . PY, Ima^-ч = PX С.ПРХ » ReaJ* PY = - taef? ... Jte<7u - PY, Im^r1’ * PX ЧП pX - 0 Re an-\.i, PY = Imalfli./; после заполнения бланка иско- мые корни xf = Re Xi + /Ini x, хранятся в (л 4- 1)-м столбце п-и части бланка (табл. 13). Для проверки правильности ввода и выполнения про- граммы можно воспользоваться данными табл. 13. Программа 79. Вычисление определителя Д комплекс- ной матрицы порядка л = 2 ПП 14 П8 ~ П9 С/П ПП 14 ИП8 — ~ ИП9 — С/П ПД -> ПС -> ПВ ~ ПА ИПС х ИПВ ИПД х - ИПА ИПД х ИПВ ИПС х 4- В О И и с т р у к и и я: Rean — PT, Imau = PZ, Rean = = PY, lma2I = PX В/О СП (Z«8c) Reau - PT, Imrtn = PZ, Reaa2 = PY, I ma,, = PX C/П (l «8 с) PX = Re Д, PY = Im Д. Пример'. \ _ 5 -f- /6 1 + /21 g . a - 34./4 7 J-/8| e + /ZZ’ Программа 80. Вычисление алгебраических дополне- ний Дн, ДП, Д1Я и определителя Д комплексной матрицы порядка л =- 3 ПП 28 П6 ~ П7 С/П ПП 28 ИП6 —— П6 4-» ИП7 — П7 С/П ИП7 ИП6 ПП 28 ИП9 + П9 <- ИП8 + П8 C/II ПД ПС — ПВ - ПА ИПС X ИПВ ИПД X — ИПА ИПД x ИПВ ИПС X + B'O Инструкция: 0 ь= Р8 = Р9, Rea23—PT, Im а„ = - PZ, Re о„ » PY, Im aSa = PX В О С/П Rea„ = PT, 1m ай = PZ, Re = PY. Im a3S = PX C/П PX - ReA„, PZ = 1тДп. Reau = PY, Iman = PY C/П Rea2l = PT, Im au = PZ, Re a33 = PY, Im aS3 = PX В/О C/П Rec2, = u PT, Ima13 = PZ, Reo31 == PY, Imasl PX C/П PX = »=ReA131 РУ = 1тД„. Reala=>PT, Ima^^PZCTl Re a = PT, Im a„ = PZ, Re a31 = PY, Im a3, -= PX B/O C/П Re an = PT, Im a3i = PZ, Reo„ = PY, Im a3i - PX C/П RX=ReA„, РУ = 1тДп, Reo,s = Pr. Im a., = PX C/П PX = Re Д PY Im Д (/« 10 c). 135
Пример: 1 4-/2 3 4-/5 /10 3 + /1 4 4-/5 6 4 4-/3 /6 3 4- /2 = 174 4-/33; Л„ =2-/13; Д„ = 17 + /9; Дп = —7 —/14. Программа 81. Обращение комплексной матрицы А =а = fi~’ порядка n = 2 ИП2 ИПЗ ИП4 ИП5 ПП X* Illi 59 118 П8 ИП9 П9 ИПО x’ «-► X /-/ ИП1 ИП6 ИП9 — ИП7 П9 59 4- ИП8 — 1/x f ПД 4-> ИП8 X ПС ИП6 ИП7 ПП 63 С/П ИП2 /-/ ИПЗ /—/ ПП 63 С/П ИП4 /-/ ИП5 /-/ ПП 63 c./n ИПО ИП1 ПП 63 С/П ПД ПС I IB ПА ИПД X ИПВ ИПС X 4" ИПА и нс X ИПВ ИПД X — B/O Инструкция: Rea.. = po. Im a. i = ^ \ Re °12 = P'2, Im a i, = P3, Rea.. = = P4, Im a.,, = = P5, ] Re ait = P6, Ini a21 = B/O С/П PX = Reft ii* PY = Imftn С/П PX=Reftl2, PY = lmft12 С/П РХ = Reft21, РУ = 1тдп С/П PX = Reft2J, PF = Imft22 (Р5 «= Re; ЛР9 = ImiA); t» 40 с. Пример: [1 4-/J 1 + /2Г1 Г-24-/2 2-/11 :[2 + /| 24-/2] 1-/2 24-/1J- Программа 82. Вычисление прои .ведения С = А X R квадратных комплексных матриц порядка п = 2 ПВ —► ПЗ Г16 ИГЛ X 4-* П9 ИПО X 4- ИП2 ИПВ X 4" ИПА ИПЗ X 4' И Д ИП1 ИП9 X И no ИП6 X ИП2 ИПЗ X 4* И11А ИПВ X •— ПС ИП7 ИП6 X ИП4 ИП9 X -I- ИП8 ИГ13 X 4- ИП5 ИПВ X 4~ ИП7 ЙП9 X ИГ14 ИП6 X — ИП8 ИПЗ X 4- ИП5 ИПВ X — С/П БП 00 И и с т р у к ц и я: (Rean = Р7, 1тпап “ — Р8, Ima)2 = Р5, Rca2J *= Pl, I П1(7г| «- РО, Ima21 = РА) Reftn = PT, Imftn = PZ, Imft21 = PX B/O ОП PX = Recn, PC = Rec21, РД = lmc,f, Rebi, = PT, Reft„ = PY, Imft21 = PX ОП PX = Rec12, PC = Rec22, РД e lmc22 (/ « 25 c). P4, Re a,2 = Rea,2 — P'2, Reftn = PY, PY — ImCiu Imft12 = PZ, PY ==1тсц« 136
Пример: (14-/1 14-/21 2 4-/1 2 4-/2] 3 4-/3 3 — /41 -4 4-/3 4 4- /4j 10 4-/8 3 4-/111 И 4- /7 I0 4-/U Г Программа 83. Формирование подстановок членов опре- делителя матрицы порядка п < Я ПА 1 0 ПД Сх по 1 4* ПВ кипз пс |Х| (х) х=0 25 кипв м х¥>0 46 кипв ипд + кпв БП 16 ипд X ПЕ КИПЕ х<0 34 ИПС БП 67 ИПО ипд X ИПЕ + ИНА ИПВ - 71 + С/П ИПО ипд t (*]_ ПО (х) ипд X ПЕ КИПЕ /—/ КПЕ ипн 1 - ПВ х¥0 45 КИПВ ИПД X БП 10 06 <+ по ИПС кпв КИПЕ /-/ КПЕ ИПВ БП Инструкция : ввести (с запятой перед первой циф- рой) в регистры Рт множества номеров I столбцов, на пере- сечении которых с т-й строкой матрицы находятся ее не- нулевые элементы атг, п — РХ В/О С/П РХ = 0t С/П РХ = 0а С/П РХ = 0з ... С/П РХ —0 (0, — неупорядочен- ная строка индексов I подстановки /-го члена определи- теля при упорядоченной строке индексов mw], 2,..., п) Пример: для матрицы порядка п — 6. приведенной на стр 104, при 0,13 = Р1\ 0.126 = Р2\ 0,234 = Р3\ 0,134 = = Р4\ 0,1345 = Р5\ 0,1346 = Р6\ 6 = РХ получим 0, = = 123456 (/ « 2 мин); 02 = 124356 (1 « 2 мин); 0Я = 162354 (/«Змин); 0, — 162453 (/« 2 мин); 0Я 312456 (/^ « 6,5 мин); 0в = 324156 (/ « 3,5 мин); 07 = 362154 (/ « « 3 мин); 0в= 362451 (t w 2 мин); 0, — 0 (/ » 4 мин) Программа 84. Формирование подстановок членов опре- делителя матрицы r/орядка п < 6 ПЕ Сх ПО 7 ПД 6 — ПС КИПС|х1 ПС КПДКИПСх>0 45 ИПД6 — ИПЕ — х^0 37 КИПС/—/ КПС ИПО 1 0 х ИПС 4- ПО ИПД 1 + БП 04 ИПО ВП 1 ИПС 4- С/П БП 53 ~ ИПС- 1 0 X х=0 10 ИПД1 — ПД КИПД ПС кипе /—/ КПС~ ИПОИПС— 10 4- по х<0 45 Сх С/П Инструкция: ввести (с запятой после первой циф- ры) в регистры Рт множества номеров 1 столбцов, на пере- сечении которых с m-й строкой матрицы расположены ее ненулевые элементы атг, п = РХ В/О С/11 РХ — 0j С/П РХ = 0, С/П РХ = 0в ... С/П РХ «= 0 (0, — неупорядочен- ная строка индексов / подстановки /-го члена определите- ля при упорядоченной строке индексов /и = 1, 2, ...» п). J37
Пример-, для матрицы шестого порядка, приведенной на стр. 104, при 1,3 = РГ, 1,26 = Р2-, 2.34 = РЗ-, 1,34 =, — Р4; 1.345 = Р5-, 1,346 Р6\ 6 -= РХ получим 0, 123456 (/«90 с), 0, = 124356 (/«90 с); 0, = 162354 (/ « 150 с); 0, =* 162453 (/ » 95 с); 05 = 312456 (t « 350 с); 0. = 324156 (/«150 с); 07 = 362154 (/« « 150 с); 0, = 362451 (/ « 95 с); 0 = 0 (/ « 160 ). Программа 85. Определение числа инверсий 6 в после, довательности из k <С12 порядковых чисел х П1 Сх ПД I ПС ИПД С/П ИПС 1 4- пс по ~ кпс кипе кипо — х<0 23 ипд 1 + ПД ИПО х-0 14 БП 05 И н с т р у к ц и я: х. — РХ В/О С/П х2 — РХ С/П .,, ... X), = РХ С/П РХ «= 6. Пример, для последовательностей 1,2,3,5,4 и 1,3,2,5,4 соответственно получим Л = I и 6 = 2. Программа 86. Символьное произведение прямоуголь- ных матриц С = А X В ПС ИПЕ 1 4- ПО ИПО I — х=#=0 35 КИПО х=/=0 10 f ИПС ВП 2 + ПД -> ПП 38 1 0 4- ИПС ПП 38 ИПС - — — х=0 05 ИПД С/П БП 05 1 ВП 8 + Вх — В/О Инструкция: (индексы рд ненулевых элементов матрицы В ввести в регистры /, 2, .... В, их число г~ РЕ] для каждого ненулевого элемента ат1 матрицы А выпол- нить ml = РХ ВО С/П РХ = mkkq С/П РХ = mkkq ... ...С/П РХ = 0; представить каждый суммарный индекс mkkq слагаемыми аткЬцч матрицы С, расположенными на пересечении ее m-й строки и <?-го столбца; если г> II, то повторить вычисления для остальных индексов рд мат- рицы В. Пример: для матриц А и В, приведенных на стр. 126, по- лучим индексы mkkq — 1113,1111,2113,2111,2223,2222, 2333.3333,3443, соответствующие слагаемым элементам матрицы С, приведенной на стр. 105. 3.S. РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ /(*) - 0 Программа 87. Вычисление функции f (х) с шагом h — х,~ х,_( П7 ... С/П ИП7 ИП8 + БП 00 128
Инструкция: заменить многоточие фрагментом вы- -нсления f (х) при к = Р7 с использованием регистров О .... 6. 9..Е; h *= Р8, хй=РХ В/О С/П РХ = f (хв) С/П РХ = f (х0 4- h) С/П РХ = /(хв + 2/х) для измене- ния аргумента по логарифмическому закону заменить в 8аключительной части программы оператор 4- оператором У и принять 1/10 = Р8, где tn — число отсчетов функ- ции на декаду (изменение аргумента в 10 раз). Пример: для функции / (х) “ 2х — 5х — 3 при h = я= I, х, = —5 получим f (х,) = 22,03125 ; 17,0625 ; 12,25; 7.25 ; 2,5 ; — 2 6 ; - 9 ; - 10 ; - 7 ; 4 ; Программа 88. Отделение и уточнение вещественных корней х* с погрешностью й/2 методом равномерного по- иска в интервале (х0. х^.,) 117 ПП 24 ИП7 С/П ИП9 ИП8 ИП7 4- П7 - х>0 03 ПП 24 х<0 05 ИГ17 ИП8 2 ч- - БП 04 ... ИП6 ~ П6 X В/О Инструкция: заменить многоточие фрагментом вы- числения f (х) при х=Р7 с использованием регистров 0.....5. А.....Е; h = Р8. хП1„ =- Р9, х0 = РХ В/О С П РХ = х0. РЗ = f (х0) С/П РХ = х;, Р6 = /(х/ - Л/2) С/П РХ = х? , Р6 = f (х.: - h/2) ... С/П РХ = X > w для уточнения корня Л, = —fi(—\!a = РХ (а> I) С/П РХ = х* до получения требуемой точности. Пример: для уравнения 2х —5х —3 = 0 при h — 1; Хпи,—5; х0 =—5 (заменив многоточие фрагментом ПП7 2 Xй ИП7 5 х — 3 —) получим/(хи) = 22,03125 (/»8 с) х/ —0,5 ± 0,5 (/« 50 с); х8 = 4,5 ± 0,5 (t « 55 с); при уточнении х$ для Л =—0,1 получим х? = 4,75 i 0,05 (f % 35 с) и для Л =0,01 получим х$ = 4,735 4:0,005 (/ » 40 с). Программа 89. Отделение и уточнение вещественного корня х* с погрешностью е методом равномерного поиска ИГ16 ИП8 ;х; — х> 0 08 И117 С/П ИП9 ИП5 П9 х х=£0 06 х<0 21 ИП8 /—/ 5 -4- П8 ИП8 ИП7 4- П7 ... П5 БП 00 Инструкция: заменить многоточие фрагментом вы- числения f (х) при х=Р7 с использованием регистров 0, . .. ...» 4, А...Е; h^P8, 0 = Р9. е = Рб. х4 = РХ БП 2 4 С/П РХ = х0, РЭ = f (х0) С/П РХ = Р7 = х*. Р8 = Л*. = f (х*); оператор 5 можно заменить другим делителем Чтага а> 1. 139
Пример: для уравнения 2х — 5х— 3 = 0 при h = 1. е = 0,001; х0 = —5 получим / (х0) = 22,03125 (/ 8 с? х* = —0,45312; Я*------0,00032; f (х*) = -0,0053765 (г « 3 мин 15 с); при h = 1; х0 = 0 получим f (х0) = —2 О « 8 с); х* = 4,73888; Л* = —0,00032; f (х*) = 0,0119!» (/ ~ 3 мин 15 с). Программа 90. Уточнение вещественного корня х* с по- грешностью е методом половинного деления в интервале (Хц, Хд Др) ИП6 ИП8 |Х| — х > 0 08 ИП7 С/П ИП9 ИП5 П9 х х^=0 06 х<0 19 ИП8 /—/ П8 ИП8 2 П8 ИП7 + П7 ... П5 БП 00 Инструкция: заменить многоточие фрагментом вычисления / (х) при х = Р7 с использованием регистров 0, 4, А, Е; До = Р8, 0 = РР, в = Р6, х0 = РЛ БП 2 5 С/П РХ = х0, Р9=7(х0) С/П РХ = х*, Р8 = Д*, Р9 = / (х*). Пример: для уравнения 2х — 5х — 3 = 0 при До =5; в = 0,001; х0 = —5 получим / (х0) = 22,03125 (t tv 10 с); х* —0,4534912; Д* = —0,00061; [ (х*) = —0,0050131 (Z 2 мин 40 с) и при До = 5; х0 = 0 получим / (хй) = = —2 (/ яи 10 с); х* = 4,7381593; Д* = 0,00061; f (х*) = = —0,010301 (/ « 2 мин 40 с). Программа 91. Уточнение вещественного корня х* ме- тодом половинного деления с заданным числом итераций « < 1g (До/е) / 1g 2 ИП9 ~ П9 х х<0 09 ИП8 /—/ П8 LO 13 ИП7 С/П ИП8 2 4- П8 ИП7 + П7 БП 00 Инструкция: ваменить многоточие фрагментом вычисления [ (х) при х = Р7 с использованием регистров 0..... 6, А, .... Е; 1 = РО, х0 =РХ БП 1 9 С/П РА' = х0, P9 = f (х0); Д = Р8, п — РО С/П РХ = Р7 = х*, Р^ = Д*, РР = /(х*). Пример: для уравнения 2х — 5х — 3 = 0 при п = Ь хв = —5 получим f (х0) = 22,03125 {t « 10 с), при Д = 5; п = 13 получим х* = —0,4534912; Д*--------0,00061; / (х*Н = —0,00227 (1® 2 мин 15 с); при хв = 0 получи*4 [ (х0) = —2 (/ « 10 с) и при Д = 5; п = 13 получим х* = 4,7381593; Д* = 0,00061; / (л*) = —0,00206 (/ « 2 мин). ко
Программа 92. Вычисление вещественного корня х* ме- половинного деления с максимальной точностью ИП8 2 < П8 ИП7 + П7 Вх - х=0 |3 ИП7 С/П ... ИП9 « П9 х х<0 00 ИП8 /-/ В/О И нструкция: заменить многоточие фрагментом вычисления f (х) при х = Р7 с использованием регистров 0 6, А, ..., Е; х0 = Р7, До = Р8, совпадающее по знаку число или / (х0) = Р9 В/О С/П РХ = Р7 = х*, Р8 = А*, = /(%*). Пример', для уравнения Iх — 5х— 3 = 0 при 1 = Р9; Хо = —5; Ао = 5 получим (/ 5 мин) х* = —0,45399633; Д’ = 2,328 • 10"®; / (х*) = —4 • ЮЛ Программа 93. Вычисление вещественного корня х* методом касательных Ньютона с q верными цифрами ... П8 ... П9 ИП8 4- ИП7 ~ | ВП з + Вх — ИП7 П7 — х=0 00 ИП7 С/П Инструкция: заменить в программе многоточия соответственно фрагментами вычисления производной /' (х) и функции / (х) при х. = Р7 с использованием регист- ров 0, ..., 6, А, .... Е; заменить символ s оператором на- бора числа s = 8 — q (при q = 7 фрагмент f ВП 1 ф- Вх — заменить более коротким фрагментом 1 + 1 —); = Р7 В/О С/П РХ — Р7 = х\ Р9 — [ (х*); метод при- меним, если в начальном интервале /'(х) и /" (х) не изменяются по знаку и / (х0) f" (х0) > 0. Пример-, для уравнения 2Л—5х — 3 = 0 с производ- ной /' (х) = 2’ 1g 2 — 5 при q = 7; х0 = —5 получим (/ « * I мин) х* = —0,4539964; f (х*) = —1 ЮЛ Программа 94. Вычисление с q верными цифрами веще- ственного корня х* методом Ньютона при малых измене- ниях производной fr (х) ... П9 ИП8 ч- ИП7 ~ — f ВП s + Вх — ИП7 <+ П7 — х=0 00 ИП7 С/П Инструкция: заменить многоточие фрагментом вычисления f (х) при х = Р7 с использованием регистров О’ > 6, А, Е; заменить символ s оператором набора числа s— 8 — q (при q = 7 заменить фрагмент f ВП 1 + Вх—фрагментом 1 ф- 1 —); х0~Р7, f (х) = Р8 В/О 141
С/П РХ = Р7 — х*, Р9=/(х*); метод применим, есл Г (х) и /" (х) не изменяются по знаку в интервале и f(x \ v xrw>o. Пример-, для уравнения 2х — 5х — 3 = 0 при х0= —5 Г Uo) = 2-5 In 2 — 5 = —4,9783391 получим (f « 100 cf х* = -0,4539964; f (х) = 1 10"’, } Программа 95. Вычисление вещественного корня х* с семью верными цифрами при численном дифференциро- вании методом Ньютона ИП7 ПП 32 П9 ИП7 | ИП8 х — ПП 32 ИП9 — ИП9 ~ 4- ИП8 х 1 0 + 9 — ИП7 х П7 Вх — х=0 00 ИП7 С/П ... В/О Инструкция: заменить многоточие в программе фрагментом вычисления f (х) при х = Р7 с использованием регистров 0, 6, А, £; х0 = Р7, 6 = Р8 (6 выбирать в пределах от 10"3 до IQ-") В/О С/П РХ = Р7 = х*, Р9 = f (х*); метод применим, если f (х) и /" (х) не изме- няются по знаку в начальном интервале, f (х0) f (х0) > 0. Пример: для уравнения 2* — 5х — 3 = 0 при х0 = = —5; 6=1- 10-5 получим (/ де 1 мин) х* = —0,4539964; / (х*) = „| . Ю-’. Программа 96. Вычисление с семью верными цифрами вещественного корня х* уравнения х — ср (х) методом про- стых итераций П7 ИП7 ... 1 + I - ИП7 ~ П7 - х=0 01 ИП7 С/П Инструкция: заменить многоточие фрагментом вычисления ср (х) при х = Р7 с использованием регистров 0, 6, 8, .... Е\ ха = РХ В/О С/П РХ = х*; метод при- меним при i<p'(х) i < 1. Пример: для уравнения 2х— 5х— 3=0, представ- ленного уравнением х — (2х — 3)/5 при хй = —5 получим (/ « 1 мин) х* = -0,4539964. Программа 97. Вычисление корней рх и р2 алгебраиче- ского уравнения а%р* + aj? + Oq = 0 с соизмеримыми ко- эффициентами П9 -> П8 П7 4- 2 4- /—/ П6 ха ИП9 ИП7 4- — х> 0 25 ф ИП6 — Вх ИП6 -ф С/П К | /-/ / ИП6 С/П Инструкция; а3 — PZ, ax = PY, а0 = РХ В/О СП РХ = хх, PY = ха (корни вещественные) или РХ = ЕГГОГ 142
. орНи комплексно-сопряженные) С/П РХ = х1я = Rep, 2, рУ = JTi.s = Im P1.S (Р7 = а2, = а1’ Р9 = я0); t ж 9 С. г Примеры: для уравнения Зра + 6р — 45 = 0 получим = 3; х2 = —5; для 2ра + 8р + 10 = 0 получим р} 3 = 2 ± /1; для р2 + ЮООООр + 9 = 0 получим = — ] 0000; ха = 0. Программа 98. Вычисление корней уравнения а2р2 + + Gjp + + = 0 с повышенной точностью вычисления иеньшего по модулю вещественного корня П9 -> П8 ~ П7 ~ 2 ч- /-/ П6 х2 П4 ИП9 ИП7 4- П5 — х > 0 32 / ИП4 К + Вх ИП6 4-Х f ИП5 «-> 4- С/П И f /-/ / ИП6 С/П Инструкция: a2=PZ,a1=PY, а0 = РХ В/О С/П РХ ~ xlt PY = х2 (корни вещественные) или РХ = ЕГГОГ (корни комплексно-сопряженные) С/П РХ =х2 2 = Гер},2, PY - </1<2 = Im plia (Р7 = а2, Р8 = 01> Р9 = а0}\ /«9с. Примеры-, дня уравнения Зр3 + 6р— 45 = 0 получим xt = 3; х2 = —5; для 2р2 + 8р + 10 = 0 получим р Ь2 = = —2 + /1; для р2 + 10000р + 9 = 0 получим х, = =— 9,0000009 • 10'4; ха = —9999,999 с невязками A (xj= = 0; А (ха) = —0,999999; для ра + ЮООООр + 9 = 0 по- лучим xt = —9 • 10“5; ха = —100000 с невязками А (хг) = = 0 и Л (хг) = 9. Программа 99. Вычисление корней уравнения р3 + + а2р2 + а^р + а0 = 0 е использованием формул Кардано ИП2 3 4- ПЗ ИПЗ хг X2 ИП1 3 ИПЗ X ИПО П7 2 ИП1 2 4- -4 - П8 X3 ИП7 t X3 X пд — 1 + 1 — С/П х> 0 81 К П9 ИП8 + ПП 71 П4 ИП8 ИП9 — ПП 71 П5 ИП4 + ПС ИПЗ — ИПС /-/ 2 ИПЗ - С/П ИП4 ИП5 — 2 3 к X С/п Пэ |Х! 3 1/х <-> X* ИП6 ЗН X В/О ИП8 ИПД у-" cos"1 ПС л 2 X С/П ИПС + х ИПЗ — 3 БП 87 СОЗ 2 X ИП7 Инструкция: установить переключатель Р-ГРД-Г в положение Р; (а0 = РО, = Pl, а2 = Р2) В/О С/П (/ а; Ю с) РХ = Q; если Q = 0 (корни вещественные, два кратных), то С/П (t а; 10 с) РХ = xli3, PY = х3; если Q> —1 0 (пара комплексно-сопряженных корней), то С/П (/as 18 с) РХ = Re р12, PY = х3 С/П R « 5 с) РХ = Im рга; если Q<0 (корни вещественные простые), то С/П(Z « 5 с) 143
PX = 6,2831852 С/П PX = 6,2831852; PY = jq «> (P\ = 6,2831852)/—/ C/П PX = 6,2831852; PY = x2 Cx C/n PX = 6,2831852; PY = x3. Примеры-, для уравнения p3 + 4P2 + 5p 4- 2 = 0 полу чим xJi2 = - —1,0000006 « —1; x3 —1,9999986 для уравнения p3 4- 5p3 + I7p — 13 = 0 получим Д = 1,9999999 = /2,9999999 as 2 = /3; x3 = 1; для урав. нения p3 — 6щ 4- Пр — 6 = 0 получим х2 = 0,99999999 % Ai 1; х3 = 2; х, = 3,0000001. Программа 100. Отделение и уточнение вещественных корней нормированного (ап = 1) многочлена степени п < 12 с погрешностью е t t ИПВ 4- X ИПА + X ИП9 4- X ИП8 4- X ИП7 + X ИП6 + X ИП5 + X ИП4 + X ИПЗ 4* X ИП2 4- X ИП1 4- X ИПС + ипд —- ПД X х < ИПЕ 4- :о 50 L0 00 ИПЕ 5 ИПД С/П БП /-/ 00 ПЕ И нет р у к Ц I 1 я: (а0 = PC, Qi = Р1, Р2, 'и = РВ\ при п < : 12 вместо отсутствующих коэффипиен тов ввести нули или (для сокращения затрат времени) ис- ключить соответствующие фрагменты вида ИГШ -И х, изменив адрес условного перехода, и использовать освобо- дившийся регистр для хранения текущего значения х) 0= РЕ. 1 = РО, х0 = РХ В/О С/П РХ = А(х0), число шагов k = РО, начальный шаг й0 = РЕ, хд = РХ С/П РХ = A (хД; если Az<e, то корень определен с требуе- мой точностью, в противном случае выполнить Сх k =. РО -±(PX = xh) С/П, продолжая вычисления до уточ- нения корни; для поиска следующего корня повторить вы- числения при х0 — xk 4- А; делитель шага 5 по адресу 45 можно заменить другим числом. Пример-. Для уравнения третьей степени целесообразно исключить начальную часть программы, обеспечить хра- нение текущих значений х в регистре 7 и х 4- h в регистре 8 и выбрав, например, делитель шага 2 (в этом случае при уточнении корня реализуется метод половинного деления), составить программу 4 t ИП2 4- X ИП1 + х ИПО 4- ИПД ~ ПД х х<0 22 ИПЕ /—/ 2 -г- ПЕ -> П 7 ИПЕ 4- П8 L3 00 ИПД С/П ИП8 БП 00 с инструкцией: (й0 = РО, а2 — Р1, а2 = Р2) 0 = РЕ, 1 == = РЗ, хд = РХ В/О С/П РХ = А (х0), h0 = РЕ, k=^ РЗ 144
£X =? А (*л)4 если A (xft) О и hk то P7 = x*, np==A(x*), для продолжения поиска корней принять, рдпример, йв «= РЕ, k — РЗ, хк 4- ft0 ** РХ В/О С/П и повторить вычисления. Для уравнения р3 + 1,58 • 10е/? 4- 83,25/? — 2,24 X у- [Qt3 = 0 получим А (0,001) = 1,66101 и так как невяз- ка А (0)<0, то корень находится в интервале (0; 0,001). При- няв h,f= 0,0001; х0 =- 0, k = 40, получим х* — 7,2299О16Х X 10~а с абсолютной погрешностью hk — 3,752529 • 10“13 я невязкой А (х*) = 6 • 10^°. Аналогично находим корни jt* = —7,2299015 • 10-Б с невязкой А (х*) = —I • Ю-10 и х* = —1,58 • 10а с погрешностью /г,- < 1 (значение шага ft < 1 попадает в область машинного нуля и не влияет на вычисление невязки). Программа 101. Вычисление корней алгебраического уравнения четвертой степени /?4 + а3р3 + яар2 + ахр + + Щ = о ИПЗ 1-1 2 -? П8 ИП8 4 t ИПЗ + П6 X ИП2 + П5 X ЙП1 х= 0 65 ИП1 ИПЗ -е- { X2 ИПО —- х > 0 65 V + П7 ИП8 2 * t X2 ИП7 — х < 0 50 /-/ / о — * — Сх БП 54 + Вх С/П ИПЗ /-/ ИП8 - П8 ИПОИП7 н- БП 31 ИП6 + х=/= 0 84 -4- П7 4 ИП5 — X ИПО х<0 84 ИП8 ИП9 - П8 ИП9 2 * П9 ИП8 + П8 Вх — х = 0 05 ИП7 БП 32 Инструкция: (ао — РО, a^PI, а2 = Р2, а3 = РЗ) начальный интервал Л0---Р9 (часто можно выбирать Да = — 2 (1 4- |ата4), где |атах1 — наибольший модуль коэффи- циентов, кроме ап) В/0 С/П РХ = хг, PY = х2 (пара вещественных корней) или РХ = ЕГГОГ (пара комплексно- сопряженных корней) С/П РХ = Re р1>2, PY = Im р1л (РЗ ~ —Ъ1г Р7 = Ьо —коэффициенты квадратичного множителя) С/П РХ — х3, PY'= х( (пара вещественных корней) или РХ = ЕГГОГ (пара комплексно-сопряженных корней) С/П РХ = Re р3.4, PY = Im р314. Пример', для уравнения /?4 + Эр3-)- 31р2 + 59/? 4- 60 =0 получим при До = 122 (1x7 мин) pLt — —1 i /2; х3 = =—3; х4 = —4. Программа 102. Разложение уравнения шестой степени Р" 4- а5р5 -|- а^4 + а3/?9 + а2р2 4- а2р + а0 = 0 на урав- нения низших степеней р2 -j-- bip + b0 = 0 и /?4 + с3рэ 4- + ^вР® + <\р + сй = 0 6 6-321 145
Сх ПД ИПД f t ИП5 — X ИП4 + X ИПЗ — П8 X ИП2 4- П7 ИП! П6 3 X ИП5 — ПВ ИП5 -— X ИП4 + П9 X ИП8 4- П8 ИП9 ИПВ X ПС ИП6 X ИПВ х2 ИПО х + ИПВ ИП7 X ИП6 — ИПВ х ИПС ИП8 X + х¥=093 -Ь ПС t ИПВ X ИП8 X ИП6 + X < 0 79 ИПД ИПЕ —- ПД ИПЕ 2 ПЕ ИПД + ПД Вх — х = 0 02 ИПС ИПДС/П ИПВ БП73 Инструкция: (аа = РО, а1 = Р1,,.., а5 = Р5) Дй = РЕ В/О С/П РХ = —PY = Ьо. Пример-, для уравнения р6 4- 5р& 4- 4р4 + Зр3 4- 2р2 4- 4- р 4- 0,5 = 0 npi До = 18 получим коэффициенты уравнений р2 — 0,48834684р + 0,42211151 = 0 (/ я» 16 мин) и (по программе 58) р4 + 5,4883468р3 ф 6,2581053р2 ф- + 3,7394315р + 1,1845213 = 0. Программа 103. Решение системы нелинейных урав- нений / (х, у) — 0 и <р (х, у) = 0 методом Ньютона ПП 68 П4 ИПД ПЗ С/П ИП1 ИПО 4- П1 ПП 68 П6 ИП4 — П4 ИПД П5 ИПЗ ПЗ ИП2 ИПО 4- П2 ПП 68 П7 ИПД ИП5 — П5 X ИП7 ИП6 —- П6 ИПД X — ИПЗ ИП6 X ИП4 ИП5 X ИПО — П5 — ИП1 .1. П1 ИПД ИП4 X ИПЗ ЙП7 X — ИП5 — ИП2 4- П2 БП 00 В/О Инструкция: заменить многоточие в программе фрагментом вычисления РД = f (>;, у) и РХ = <р (х, у) при х= Р1, у = Р2 с использованием регистров 7, С, Е', 6 = РО (8 следует выбирать в пределах от 10-3 до 10~е), начальные приближения х0 = Р1, у0~ Р2 В/О С/П РХ = f9 (х, у), PY = фа (х, у) С/П РХ = А (х, у), PY= = <Р1 (х, у) С/П РХ = f2 (х, у), PY = <р2 (х, у) С/П ; при достижении невязок достаточной малости вызвать значения корней Pl = х*, Р2 = у*; если невязки не уменьшаются, то условия сходимости метода [2] не выпол- няются и следует использовать другую программу. Пример; для системы уравнений У (х (у + 5) — 1) / 2— — х = 0 и Кх 4- 3 In х — у = 0 при х0 = 4; у0 = 2,5; 6 = = 1 • Ю-5 получим (/ а; 45 с) Д (х, у) = — 0,1921135; Фо(х, у) = 0,3563758; /\(х,у) = — 4,3813- 10"3; фДх, у) = = — 3,2787 • 10~3 (хх = 3,7697783; у2 = 2,7873095) /г (х, у) = — 9,45 - IO’5; у) = _ 3,8 Ю"5 (ха = 3,757093; Н6
й = 2,7799713) /8 (х, у) = - 7,1 • 1СГ; ф3 (х, у) => - 9 х X 1<Н(х3 = 3,756863; у3 = 2,7798511) ... Программа 104. Решение системы нелинейных уравне- ний Xt = <p((xlt ... , xrt); t = 1, 2, n методом Зейделя П1 ... П2 ... nN С/П БП 00 Инструкция: заменить многоточия фрагментами вы- числения функций <p,(xlt хп) при xt = Pi; начальные вначения xj0) = Pi В/О С/П Pi = xjn С/П РХ = хРс/П РХ х,-3> ... ; вычисления прекратить при сходимости ре- зультатов к искомым корням х' . ____________ Пример: для системы уравненийх = У\х(у + 5) — 1)/2; y = VA^-i-3 1nx при х0 = 4; у0 = 2,5 после 15 итераций (;«8с) подучим х* = 3,7568722 п у* = 2,7798619. 3.6. ЧИСЛЕННАЯ ОПТИМИЗАЦИЯ Программа 105. Вычисление наибольших хтах и наи- меньших Xmin элементов последовательности чисел х,. П8 П9 С/П П7 ИП9 МАХ П9 ИП7 1/х ИП8 1/х МАХ 1/х П8 ИП9 БП 02 Инструкция: Xj = РХ В/О С/П РХ = х,. х.2 — РХ С-ПРХ = хтах, PY = x^n ... хп = РХ С/П РХ=хП1ЯХ, Р\ -= Xmin. Пример: для х( = 11,5; 11,06; 11,61; 11,05; 11,6 по- лучим хтах = 11,61; хтт = 11,05. Программа 106. Отделение и уточнение оптимумов х* функции f (х) на интервале (х0, хтах) с погрешностью h ИП9 ИП7 ИП8 + П8 НПО «-> П5 — 00 ИП8 С/П БП 00 — х<0 10 ИП8 С/П ИП6 ** П6 х х < 0 Инструкция: заменить многоточие фрагментом вы- числения f (х) при х = Р8 с использованием регистров 0, , 4, А, .... Е; h.~P7, х0 = РЗ, xmax Р9, 0 = Р6; если /(х) возрастает при х0, то 0 = Р8, иначе 1 • 10йй = = Р8 БП 1 0 С/П РХ Р7 = х1( Р5 - fix,), Рб = ^f(x1) С/П PX = P7=x2, P5 = f(x2), P6 = &f(x9) С/П ... С/П РХ = х>хтах; х* = xi — h^h (максимум при A/(xz)> >0 и минимум в противном случае); для уточнения опти- мума принять 1 и h. = — h/a = Р7 С/П ... Пример: для функции /(х) —ел — х® в интервале (—5; 5) при h = 0,5; х0 = — 5; хтах = 5; 1 • 10й9 = Р5; 0 = РЗ 6* 147
получим Xj = 0; f (xx) 1; Д/ (хг) = — 0,2684694 или xf^-, = 0,5 ± 0,5 (t « 90 c); xa = 1,5; /(x2) = 1,106689; Af (x2) = 0,6115928 или x£ra„ = 1 ± 0,5 (/ tv 20 c); x3 = 4; f(xs) = — 9,401854; Д/(х.) = — 0,357705 или x^in = 3,5 i 0,5 (/«45 с); для уточнения x* выполнить x, = PS, /(x,) = P5, bf (xa) = P6; h=~ 0,05 = P7 БП 10 C/П (t * « 120 c) PX =0,85 ИП7 /—/10 — П7 (h = 0,005) С/П (t « 20 cj PX = x2 = 0,855 или x2max = 0,85 ± 0,005. Программа 107. Выполнение шага модифицированного жорданова исключения в симплекс-методе ИПЕ 4- КПД ИПД 1 + ПД о С/П ИПЕ КИПД х — БП 03 Инструкция: для заполнения р-й симплекс-таблицы по данным (р—1 )-й таблицы (см. табл. 14) разрешающий элемент = РЕ, 1 = РХ ЕЮ С/П РХ = а*?. осталь- ные элементы (/=И= г) s-ro столбца — = РХ В/О С/П РХ = ais\ остальные элементы (/ =£ s) разрешающей строки (0= РД) а(гр~1) = РХ В/О С/П PX^atf и остальные элементы неразрешающих строк (0 = РД, а(£~1) — РЕ) а™ = РХ С/П РХ = . Программа 108. Минимизация /(х) в интервале (хн, хь) методом золотого сечения fill при вычислении х* с погрешностью е П9 5 V 1 + 2 -5- П5 ИП9 ИП8 — П7 ИП4 — х<0 20 ИП7 ИП5 <- ИП8 + ПЗ ИП7 ИП5 ИП8 + П7 ПП 47 П6 ИПЗ ПП — х>0 08 ИПЗ П9 БП И ИП7 П8 ИП6 С/П X2 Н- 47 ИП6 В/О Инструкция: заменить многоточие фрагментом вычисления / (х) при х = РХ с использованием регистров 0, .1, 2, А....Е; в = Р4 (е > 2 • 10“7), хн = Р7, хе = = РХ В/О С/П РХ = Рб = f (х*), Р8 = х*, Р9 = х;. Пример-, для функции /(х) = ех — Зх при 8=10"^ х„ = 0; хЕ = 2 получим (/даб мин) /(хн) = —0,295837; хв = 1,0983511; хв = 1,0984729; при в = 2 • 10“? получив (/«15 млн) /(хй) = —0,2958371; хв= 1,098378; хв^ = 1,0983786. Программа 109. Минимизация / (х) в интервале (хй, методом скорейшего спуска 111] при вычислении х* с иО* грешностью s МД
Сх 1 вп 3 /-/ ПЗ ПП 37, П5 . ,ИП7 ИП8 + П8 ИП9 х < 0 35 : ПП 37 ИП5 П5 X х<0 09 ИП7 /-/ 5 -Дм. П7 |Х| ИП6 — х<0 09 ИП8 С/П ИП8 П4 ПП 53 ИПЗ П2 ИП4 В/О ИПЗ + В/О П4 пп 53 ИП2 — Инструкция: заменить многоточке фрагментом вычисления f (х) при х = РХ = Р4 с использованием ре- гистров 0, 1, А...... £; h = P7. е;Ь — Р6, хп~Р8, хв = Р9 В/О С./П РХ = Р8 = х*, P2 = f (х*), Р7 = /к*/5. Пример: для функции / (х) = ех — Зх в интервале (0; 2) при h = 0,5; е = 10~4 получим (t л; 6 мин) х* = 1,098144; ft*/5 = —6,4 10"’; f (х*) = —0,2958368. Программа ПО. Минимизация функции f (х) методом равномерного поиска оптимума х* с погрешностью в ИП7 ИП8 + П7 ... ИП9 <-> П9 — х<0 00 ИП8 /—/ 5 — П8 ]х| ИП6 — х<0 00 ИП9 С/П БП 00 Инструкция: заменить многоточие фрагментом вычисления f (х) при х = РХ = Р7 с использованием ре- гистров 0, 5, А, ..., Е: х0 = Р7, hg = Р8, 1 • 10” = = Р9, е/5 = Р6 (в > 5 • 10'7) В/О С/П РХ = Р9 = = f (х*) Р7 = х*. Р8 = h* /5. Пример: для функции f (х) ~ ег — Зх при в = 5 • 10-7; х0 = 0; h0 = 0,5 получим (i « 4 мин) /(х*) = —0,2958369; х* = 1.0984458; Ц /5 = 0,512 Ю’8. Программа 111. Минимизация функции двух перемен- ных ф (xlt х2) методом неполного [8] координатного спуска ИП7 ИП9 + П7 ПП 20 х<0 00 ИП6 С/П ИП8 ИП9 + П8 ПП 20 х<0 10 БП 08 ИП6 о П6 — В/О Инструкция: заменить многоточие фрагментом вычисления Ф (X) при Xj = Р7, х2 ~ Р8 о использованием регистров 0, .... 5, А, .... Е; 1 10вэ =Р6, х10 = Р7, х20 = Р8, h = P9 В/О С/П РХ = Рб = Ф (X), P7=xlt ...,С/П РХ ~ Рб = Ф(Х), Р8 = хг; для оптимизации xt нажимать клавиши В/О С/П, для ха после хг — только С/П; значения Л. Xj и х2 можно изменять перед каждым пуском про- граммы. Пример: для функции Розенброка Ф (хр х2) = 100 (xt — — X/)3 при х10 = —1,2; х20=1[11]; ft = 0,2 Можно выбрать вариант поиска: В'О С/П РХ = 16,2; Р7 = °>8 С/П РХ = 34,6; PS=1,2; — 0,2 = Р9 С/П РХ9; 149
Р8 = 0,4; 0,2 = Р9 В/О С/П РХ = 7,22; Д7 = —0,4- — 0,2 = Р9 С/П РХ = 4,52; Р8 = 0; 0,2 « Р9 В/О С/П РХ = 2,92; Р7-0.4 С/П РХ = б,12; Р8 = 0,4 В/О С/П РХ = 5,8... Программа 112. Минимизация функции Ф(х1,...,хп) с п<1! переменными методом неполного координатного спуска КИПД ИПЕ + КПД ... ИПО о ПО-х<0 00 ИПО С/П ИПС ИПД I + Е1Д — х<0 00 1 ПД БП 00 Инструкция: заменить многоточие фрагментом вычисления Ф (xL, ..., хп) = Ф (Л‘) при х, = Pi и записи коэффициентов в программу или в свободные регистры; 1 10"= РО, п= PC, 1 = РД, h = РЕ, х™ = Pi; для оптимизации i-й переменной (РД = г), изменив при необ- ходимости h или xf, нажимать клавиши В/О и С/П, для перехода к следующей переменной нажать клавишу С/П. Для проверки правильности ввода и выполнения про- граммы можно использовать данные примера к предыду- щей программе. Программа 113. Минимизация гладких функций Ф (Х) = = Ф (хр ..., хп) с числом п < 10 переменных методом ко- ординатного спуска КИПС ИПЕ + кпс ... ИПО ПО о х > 0 00 ИПЕ /-/ 3 ~ ПЕ х2 ИПД 8 х2 — х< 0 00 ИПД ПЕ п ИПС 1 Ч- ПС — х< 0 00 1 ПС ИПВ ИПД 9 Ч- ПД ПЕ х2 — х>0 00 ИПО С/П Инструкция: заменить в программе символ п опе- ратором набора числа п переменных, многоточие— фраг- ментом вычисления Ф (X) при х, = Pi; 1 • 10" = РО, (ь/9)г = РВ, 1 = PC, h = PD= РЕ, = Pi В/О С/П РХ^ РО = Ф(Х*), Д = . Пример: для функции з з Ф(Х) = Ф(хр х2, х3) = exp(S х(-)/ П i=l 1=1 при в = 1 10“4, х$0> = h = 0,5 получим (fA?21 мин) Ф(Х*) = 3,7354514; хГ =1,000254; 4 = 2,0002288; х* = 3,0000256. Программа 114, Минимизация выпуклых функций Ф(Х) = Ф(хп . . ., х2) с числом 11 переменных коор' динатным спиральным спуском 150
КИПД ИПЕ + кпд ИПО ~ по ~ — X > О ' 00 п ИПД 1 + ПД — х < 0 00 1 ПД ИПС ИПЕ /—/ 5 ПД ]х| — х> 0 00 ИПО С/П Инструкция: заменить в программе символ п опе- ратором набора числа п переменных, многоточие—фраг- ментом вычисления Ф(Х) при х, — Pi; 1 • 10" — РО, е/5 ~ ₽ PC, 1 = РД, h = РЕ, хГ - Pi В/О С/П РХ РО = Ф (X*), Pi = х*. Пример: для функции из примера к предыдущей про- грамме при п — 3; е = 1 • 10~4, X£0) = h--^ 0,5 получим к- 16 мин) л* = 1,000672; л* = 2,000672; х* = 3,000352. Программа 115. Поиск экстремальных областей функ- ции Ф (X) с числом п < 11 переменных ПП 12 х > 0 00 С/П ПП 12 х<0 05 С/П БП 00 ИПЕ ИПС — х > 0 09 ИПС ИПД + ПС ИПО ~ ПО — В/О И нструкция: заменить в программе многоточие фраг- ментом вычисления Ф (X) при х, ~ Pi; х!°} = Pi, перед каждым пуском программы х/н = PC, h = РД, х/в = РЕ (изменить при необходимости значения переменных в других регистрах), 1 • 10" = РО, если при х,>х|Н функция умень- шается или 0 = РО, если при л;> х1н функция возрастает В/О С/П РХ = ДФ < 0, РО = Фт1П, PC = Xi га!п С/П PX= = ДФ> 0, РО = Фтах, PC = Xi тах С/П ... С/П РХ = Пример: для функции Ф(хх, х2) = (х^ + ха — П)а -Е + (xj + х| — 7)2 при х|н = —5, Хи = 5, х2 = —5, h = 0,5 Получим Xi min “ —3,5; Фт'т ~ 224,3125; Ximax ~ If Фтах~ = 586; Ximin = 4; Фт!п = 484; .. . Программа 116, Вычисление ReA (/?) и 1т А (р) много- члена степени п <7 10 с изменением шага h по координатам Д = х 4- 1У ИПС ИПЕ + ПС ИПА X ИП9 + ИПД ИПА X ПВ ИП8 ПП 48 ИП7 пп 48 ИП6 ПП 48 ИП5 ПП 48 ИП4 ПП 48 ИПЗ пп 48 ИП2 ПП 48 ИП1 ПП 48 ИПО пп 48 с/п ИПД ИПЕ + ПД ИПС БП 04 t ИПС ** X + ИПВ ИПД X — Ипд X ипв ипс X + ПВ ** В/О 151
Инструкция: (а0 = РО, = Pl, ..а10 = РА) хй = PC, у0 = РД, h — РЕ- для xi = Xi—i 4- h нажимать кла- виши В/О С/П; для yi = + h нажимать только кла- вишу С/П (при первом пуске БП 4 1 С/П); РХ = ReA(p) PY = Im А (р); t та 55 с при л = 10. Пример иллюстрирован данными табл. 10. Программа 117. Вычисление РеЛ (р) и 1тЛ (р) много- члена (а12 = 1) степени п = 12 с изменением шага по ко- ординатам р = х 4- jy ипд ИПС ИПЕ 4- ПС ИПВ ПП 48 ИПА П11 48 ИП9 ПП 49 ИП8 ПП 48 ИП7 ПП 48 ИП6 ПП 48 ИП5 ПП 48 ИП4 ПП 48 ИПЗ ПП 48 ИП2 ПП 48 ИП1 ПП 48 ИПО 4- с/п ипд ИПЕ + ПД ИПС БП 05 + ИПД е=* t —> X ИПС X Вх —> 4- t -> ИПС X ИПД х — В/О Инструкция: (а„ — РО, at = Pl, ..., а^^РВ) х0 = — PC, у0 = РД, h = РЕ', для х£ = х/_! 4- h нажимать кла- виши В/О С/П; для yi " yi—iA- h нажимать только кла- вишу С/П (при первом пуске БП 4 1 С/П); РХ — ReA(p) PY =1тЛ(р); 1 та 100 с; методика поиска нулей много члена аналогична использованию программы 116. 3.7. ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ И ИНТЕГРИРОВАНИЕ Программа 118. Численное дифференцирование функ- ции f (х) П7 ПП 17 П9 ИП7 ИП8 4- П7 ПП 17 ИП9 — ИП8 ~ С/П БП 00 В/О Инструкция: заменить многоточие фрагментом вычисления f (л) при х = Р7 с использованием регистров 0, 6, А, ..., Е; Ах = Р8 (Ах = 10"3 ... 10“&), х = РХ В/О С/П РХ = /'(х). Пример-, для f (х) = 2Т—5х—3 при х = 0,5; Ах = = 10"1; 10“2; 10"3; 10-4; 10"а; 10“®; 10"’; 10'® соответствен- но получим f (х) — —3,984969; —4,01633; —4,194; —4,02; —4; —5; —10 (/«15 с) при точном значении /' (х) = 2* 1л 2 — 5 = —4,0197419. 152
Программа 119. Численное дифференцирование функ- ции / (х) яри Дх/х » 1 • 10-“ П7 ПП 19 П9 ИП7 1 ВП 3 /—/ П8 Н- П7 ПП 19 ИП9 — ИП8 4- С/П ••• В/О Инструкция: заменить многоточие фрагментом вычисления f (х) при х = РХ = Р7 с использованием ре- гистров 0, 6, А, .... Е\ х= РХ В/О С/П РХ = Г (х). Пример-, для / (х) = 2* — 5х — 3 при х = 0,5 получим f(x) = — 4,0194 (/л; 16с). Программа 120. Вычисление определенных интегралов / (х) по составной формуле Симпсона ПО ПП 40 П9 ИП8 ИП7 П8 — ИПО 4 П7 ПП 40 1 ПП 28 4 ПП 28 2 БП 14 ИП9 3 ч- ИП7 х С/П X ИП9 4- П9 ИП8 ИП7 4- П8 КИПО ИПО х^0 22 ... В/О Инструкция: заменить многоточие фрагментом вычисления подынтегральной функции при х = PS с ис- пользованием регистров 1, 6, А, .... Е‘, нижний предел х„ = Р7, верхний предел хв — Р8, четное число разбиений интервала интегрирования п = РХ В/О С/П РХ — I (х). Пример-, для интеграла 2 Ф = /2/л [ е~ it/2di = 0,95450 6 получим при п = 2 (/ » 25 с) Ф = 0,94721037; п — 4 [t « * 4 0 с) Ф = 0,9544021; п = 8 (/ « 80 с) Ф = 0,95449475; п = 16 (/ а; 2,5 мин) Ф - 0,95449937; п = 32 (t « 5 мин); Ф = 0,95449968. Программа 121. Вычисление определенного интеграла I (х) по составной формуле Симпсона с заданной предель- ной погрешностью е П8 ~ П7 W П6 ~ 1 5 X ха П9 Сх П4 П5 ИП7 ПП 54 ИП4 П1 Сх П4 ИП7 ИП6 2 *- + ПП 54 ИП9 ИП1 ИП4 2 X + П1 Вх + ИП6 2 ^4- Пб х 3 ИП5 н* П5 — X2 — 19 ИП5 С/П ПЗ • ИП4 + П4 ИП8 ИПЗ ИП6 + ПЗ — х<0 55 В/О 153
Инструкция: заменить многоточие фрагмент^ вычисления подынтегральной функции при х « РЗ с t1c< пользованием регистров О, Д, ..., Е; е = PZ, хн = Ру хв= РХ В/О С/П РХ = Цх). Пример', для интеграла из примера к программе 120 при е = 10-* получим Ф = 0,95449473 (I ж 2 мин). Программа 122. Вычисление определенного интеграла 1 (х) по составной формуле Гаусса нулевого порядка (ме. тод прямоугольников) П8 - П7 — ~ 4- П6 Сх П5 ИП7 ИП6 2 4- + П9 ••• ИП5 + П5 ИП9 ИП6 + П9 ИП8 — х>0 15 ИП5 ИП6 X С/П Инструкция: заменить многоточие фрагментом вычисления подынтегральной функции при х ~ Р9 с ис- пользованием регистров 0, 4, А, ..., Е; k= PZ, xs= PY xu = PX В/О С/П PX = I (x). Пример: для интеграла из примера к программе 120 при k = 5 (i а; 40 с) получим Ф = 0,95593248; при k — — 10 (i а? 90 с) Ф = 0,9548593, при k = 40 (i a# 6 мин) Ф = 0,95452223. Программа 123. Вычисление определенного интеграла / (х) по составной формуле Гаусса второго порядка ИП8 ИП7 — П6 Сх П5 ПП 28 4- 8 X П5 ПП 25 ПП 25 X ИП6 X 1 8 — С/П ИП4 /-/ П4 1 + ИП6 2 — X ИП7 + П9 ИП5 + П5 ИП9 ИП6 П9 ИП8 — х > 0 37 ИП5 5 В/О Инструкция: заменить многоточие фрагментом вычисления подынтегральной функции при х— Р9 с исполь- зованием регистров 0, . . ., 3, А, . . ., Е (хн = Р7, xB=P8)'t 0,7745967 = Р4‘, k = РХ В/О С/П РХ = /(*). Пример: для интеграла из примера к программе 120 при k = 2 (/ а: 65 с) Ф = 0,95449861; k= 5 (t ж 2 мин 15 с) Ф= 0,95449972; k= 10 (t а; 4 мин) Ф= 0,95449988. Программа 124. Интегрирование табулированной функ- ции Д- = f(Xi) с постоянным шагом аргумента h — х— Xi-i П7 Сх П8 С/П ИП7 ~ П7 -f- 2 4- ИП9 х ИП8 + БП 02 154
Инструкция: (h ~ Р9) /й = РХ В/О С/П PX — Q, (*РХ С/П PX=llt fa = РХ С/П РХ =/а . .. Л = РХ ЛП РХ = 1„. Дримерг для функции f (0) = 0,79789; f (1) = 0,48394; 0,10798; f (3) - 0,0088637; / (4) = 0,0002677 coot- Щтвенно получим Ц = 0; 0,640915; 0,936875; 0,99529685; 0,59986255; ' Программа 125. Интегрирование табулированной функ- ^2 ft = f (Xf) с неравноотстоящими узлами к, П8 П7 Сх П9 С/П ИП8 ~ П8 + ~ ИП7 ** П7 - — х 2 Ч- ИП9 + БП 04 И н с т ру к ц и я: х0 = РУ, /0 = РХ В/О С/П РХ =* 0, Х1 = РУ, /,=РХС/П РХ = /х, ха=РУ, f2 = PX С/П PX = f2 ... Для проверки использовать данные из примера к пре- дыдущей программе. Программа 126. Вычисление двойного интеграла /Up xj Сх П4 ПП 56 ИП9 ИП7 ИП6 + П7 — *<0 14 ИПО С/П ПП 56 Вх ИП4 + П4 ПП 52 ИП8 ИП6 2 X — ПП 55 ИП7 ИП6 + П7 ПП 52 Вх П5 ИП4 ИП6 X8 X 2 X 3 — ИПО + ПО ИП5 П4 5П 04 ИП8 ИП6 + П8 « » • ИП4 П4 В/О Инструкция: разбить область интегрирования п₽ямоугольной сеткой на элементарные квадраты со сто- гнами 2h, заменить в программе многоточие фрагментом вычисления подынтегральной функции при xt = Р7, х2= *= Р8 с использованием регистров 1, .... 3, 4, ..., £; О = Р(Р, h = Р6, координаты средины левой стороны пер- вого квадрата первого ряда х^ = Р7, х^ = Р8, координату Правой стороны последнего квадрата ряда x(irp = Р9 В/О ЧП РХ = /j, ... , координаты средины левой стороны Иервсго квадрата последнего ряда л//0 = Р7, х^' = РЗ, коор- ^*нату правой стороны последнего квадрата ряда х^ = Р9, В/О С/П РХ = 1.. =/(л, ха). 155
Пример: для вычисления интеграла 1 5 Ifa, Жа)= ffp : ' 11 г' J J fn(Xj +xs) ’ 0 2 представим область интегрирования квадратом со стороной 2Л = 1 и при хг =0, х2 — 0,5; х|гр = 1 получим I = 0,9332772 (/ « 45 с); разбив область интегрирования на 4 квадрата со сторонами 2Л=0,5 при х^ = 0, х3} -- = 2,25; XjiL = 1 получим 1г = 0,50501972 (/«90 с) и прн Xi2) = 0, хЛ =2,75; х(2,р = 1 получим /2 = /(хп х,) = = 0,93422185. Программа 127. Вычисление тройного интеграла f(ru ха, х3) Cx П5 ПП 73 ИПВ ИП7 ИП6 + П7 — x<0 14 ИПО С/П ПП 69 ИП9 ИП6 + П9 ИП8 ИП6 — ПП 72 ИП9 ИП6 — П9 ИП8 ИП6 — ПП 72 ИП9 ИП6 — П9 ПП 69 ИП9 ИП6 + П9 ИП7 ИП6 + П7 ПП 73 Bx ПА ИП5 ИП6 t X3 X X 4 X 3 — ИПО + ПО ИПА П5 БП 04 ИП8 ИП6 + П6 ИП5 + П5 В/О И и с т p у к ц и я: разбить область интегрирования прямоугольной сеткой на элементарные кубы со сторонами 2/1, заменить многоточие в программе фрагментом вычис- ления подынтегральной функции при Xj = Р7, ха = Р8, х3 = Р9 с использованием регистров 1, 3, В, ..., Е\ 0 — = РО, h = Р6, координаты средины левой грани левого квадрата первого ряда х1/' = Р7, х[2} = Р8, х31 = Р9, ко- ординату правой грани правого квадрата .первого ряда х^ = Р4 В/О С/П РХ — \ , координаты средины левой грани левого квадрата последнего ряда — Р7, х^’ = Р8, x3rt) = Р9, координату правой грани правого ква- драта последнего ряда xj?p = Р4 В/О С/П РХ = 1Л =* = /(xlt х2, х3). Пример: для интеграла /(хг, ха, i 1 а г \ — С С f 3 J J J In (*i + x3 + 0 1 2 156
представляя область интегрирования одним квадратом со бороной 2Л » 1, при хх = 0, х, «= 1,5; ха — 2,5; х[гр = 1 ролучим 7(хь х2, х3) = 0,6713412 (7д;1мин); разбивая область интегрирования на 8 кубов со сторонами 2й = 0,5, ррй ^1° = 0. Ха* = 1>25; Лз” =^2,25; х’гр = 1 получим Д = ев 0,18161187 (I & 4 мин), при х^ = 0, х(22) = 1,25, х32) = ₽ 2,25; xirp = 1 получим It = 0,34863694; при х^ = 0, ^Э) ₽ 1,75, х33> = 2,25, Xirp = 1 получим /3 = 0,51566201; ври x(t4) *=0, 1.75; х(э4) =2,75; xfjj, = 1 получим 74 = х2, х3) =0,67154489. Программа 128. Решение дифференциального уравне- ния у' = f (х, у) усовершенствованным методом Эйлера- Коши ПП 20 Пб + П9 ИП7 ИП8 4- П8 ПП 20 + ИП6 + 2 4- П9 С/П БП 00 ... ИП7 х ИП9 В/О Инструкция: заменить многоточие фрагментом вычисления f (х, у) при х = Р8, у = Р9 с использованием регистров 0, ..., 5, А, .... Е~, h ~ Р7, х0 = Р8, ya = Р9 В/О С/П РХ==уг С/П РХ = у2 ... С/П РХ ~Р9 = yt = у (xfl + ih). Пример-, для уравнения у' — у — 4х + 3 при началь- ных условиях х0 = 0, уа = 3 и h = 0,2 получим (/а 17с) yt = 4,24; 5,5768; 7,031696; 8,6306691; 10,405416; ... при точных значениях соответственно у( = 4,228056; 5,5836494; 7,0442176; 8,6510818; 10,436564; и погрешности Ду (1) = = 0,031148. Программа 129. Решение дифференциального уравне- ния у' = / (у, х) модифицированным методом Эйлера П6 ПП 09 ПП 09 4- С/П БП 00 П9 ... ИП7 х f ИП6 4- ИП7 ИП8 4- П8 В/О Инструкция: заменить многоточие фрагментом вычисления / (х, у) при х = Р8, у = Р9 с использованием регистров 0, . .., 5, 4, ...,£; Л/2 = Р7, х0 = Р8, у0 = РХ В/О С/П РХ = у! С/П РХ » у2 ... С/П РХ = yi = у (х0 4 ih). Для проверки можно воспользоваться данными при- мера к программе 128, совпадающими с результатами вы- полнения этой программы (7» 15 с). 1|>7
Программа 130. Решение дифференциального уравг1е “ ния I/' = f (х, у) модифицированным методом Эйлера д»’ заданного числа п шагов я П6 ПП 09 ПП 09 + LO 00 С/П П9 • ИП7 х | ИП6 + ИП7 ИП8 -ф Г18 -> В/О Инструкция: заменить многоточие фрагментов вычисления f (х, у) при х = Р8, у = Р9 с использованием регистров 1, 5, А, Е', h/2 = Р7, п =* РО, х0 = pg уа = РХ В/О С/П РХ = уп = у (х0 + nh), PY = х0 + nh. Пример: для уравнения из примера к программе 128 при й/2 — 0,2, п = 5 получим г/Б = 10,465416 (/ яг 75 с) с погрешностью Ay (1) — 0,031148. Программа 131. Решение дифференциального уравнения у' = f (х, у) методом Рунге-Кутта третьего порядка ПП 37 П4 ИП9 П5 4- П9 ПП 33 4 X П6 ИП4 2 X — ИП5 + П9 пп 33 ИП4 4- ИП6 + 3 -4- ИП5 + П9 с/п БП 00 ИП7 ИП8 + П8 * * * ИП7 X В/О Инструкция: заменить многоточие фрагментом вычисления f (х, у) при х = Р8, у = Р9 с использова- нием регистров 0, 3, А, Е', h.12 = Р7) х0 = Р8, ув « Р9 В/О С/П РХ = У1 С/П РХ = у* ... С/П РХ = = tji = y(xQ + iky, для вычисления уп через п шагов заме- нить фрагмент С/П БП 00 фрагментом LO 00 С/П с пред- варительным занесением числа п в регистр 0. Пример: для уравнения из примера к программе 128 при h = 0,2 получим (/ яг 25 с) соответственно у, = = 4,2466666; 5,5833101; 7,063616; 8,6500696; 10,435018 с погрешностью Ay (1) = 0,0015416. Программа 132. Решение дифференциального уравнения У' ~ f {х, у) методом Рунге-Кутта четвертого порядка Сх П4 ПП 31 ПП 27 4" П4 ПП 31 + П4 <-> ИП9 _ц ! П9 ПП 27 3 ИП6 + П6 П9 С/П БП 00 ИП7 ИП8 J- П8 ... ИП7 X t ИП6 + П9 о i t ИП4 + П4 В/О Инструкция: заменить многоточие фрагментом вычисления f (х, у) при х = Р8, у = Р9 с использованием J68
-йсгров 3, A, .... E; (h/2 = P7) x0 = P8, yft = %jP9=--PS в/о qn px=y1.,, qn px^=yt=y(x.+ uih); для вычисления yn через n шагов А заменить фраг- Iffr С/П БП 00 фрагментом LO 00 С/П с предваритель- занесением числа п в регистр 0. Пример'. для уравнения из примера к программе 124 подучим (/^37 с) у,. = 4,2428; 5,5836359; 7,0442121; #6510416; 10,436503 с погрешностью Ду (1,0) = 0,00006!. ^Программа 133. Решение дифференциального уравж. у' = / (х, у) методом прогноза и коррекции Адамса первого порядка пп 23 3 X ** — ИП9 П5 ч~ П9 ИП7 ИП8 4- П8 ПП 23 + ИП5 + П9 с/п БП 00 ... ИП7 X 2 * L “ ИП4 П4 В/О Инструкция: заменить многоточие фрагментом вычисления f (х, у) при х ~ Р8, у = Р9 с использование i регистров 0, А.......Е; (А = Р7), hf_t/2 = hf_, (x.n у_А^Р4, х0 = Р8, у9 = РЭ В/О С/П РХ = п С/П РХ ~ у2 ... С/П РХ = Уг ~ У (х0 A- ih)-, для вычисле- ния у,г через п шагов заменить фрагмент С/П Б/П 00 фраг- ментом LO 00 С/П с предварительным занесением числа гг в регистр 0. Пример', для уравнения из примера к программе 123 при hf_J2 ~ 0,56374614 получим (I а# 16 с) у, = 4,243625-’; 5,5812967; 7,0376641; 8,6385031; 10,437102 с погрешностью Ду (1,0) = —0,000538. Программа 134. Решение дифференциального уравнения ?' —- f (х, у) методом прогноза и коррекции второго поряд- ка Адамса пп 41 ИП5 5 X ИП4 П5 1 6 X — П4 2 3 X + ИП9 П6 + по ИП7 ИП8 + П8 ПП 41 5 X ИП4 8 X + ИП5 — ИП6 + П9 С/П БП 00 « « « ИП7 X 1 2 в/о и нструкция: заменить многоточие фрагментом Вычисления f (х, у) при х = Р8, у = РУ с использованием Игистров 0, .3, А, .Е; (h=P7) hfqi2=P4, *Ь/12 = Р5, х0 — Р8, у0~Р9 В/О С/П РХ == У1 С/П ?Х -=. уа ... с/П РХ = у/ = у (хв 4- (А); для вычисления у„ Через п шагов h заменить фрагмент С/П Б/П 00 фрагмен- там LO 00 С/П с предварительным занесением числа п в регистр Л 159
Пример', для уравнения из примера к программе 128 при Yif j/12 = 0,09395769; hf а/12 - 0,089010665 получим (Г« 22 с) у; = 4,2428532; 5,583767; 7,0444536; 8,6514341; 10,436459 с погрешностью Ду (1,0) ~ —0,000538. Программа 135. Решение неоднородного уравнения о,/ 4- аху = f (х) по разностной схеме при заданных зна- чениях fi — f (х0 + ih) ИПО ИП9 х — ИП7 X ИП1 4- ИП9 + П9 ИП8 ИП7 .+ П8 С/П БП 00 Инструкция: {h = P7, а0 = Р0, al^Pf)x(t = P8 У0 = Р9, fo=Hx0)=PX В/О С/П РХ = xlt РУ = уь fi = РХ С/П РХ = х2, РУ = у2 ... Л = РХ С/П РХ ~ = х;+ь РУ = Р9 — yi+I (/« 6 с). Пример', для уравнения у' = у — 4х 4- 3 при = — 1; — I; х0 = 0, у0 = 3, h = 0,2 и f (х) — 4х 4- 3 полу- чим у, = 4,2; 5,48; 6,856; 8,3472; 9, 976666; ... Программа 136. Решение дифференциального уравнения второго порядка у" = f (х, у, у') методом Рунге — Кутта четвертого порядка ПП 42 ПП 38 П6 — ИП5 4- П5 ПП 33 Г16 Вх ИП2 + П2 —> ИП1 4- П1 —> ИП5 4- П5 ПП 42 ИП6 3 — П2 П4 ИП5 3 — П1 пз С/П ИП9 НПО -ф ПО • . . ИП9 X ИП2 ИП1 X t ипз 4- П1 t ИП5 + П5 —>> t ИП4 + П2 ИП6 4- П6 Вх + В/О Инструкция: заменить многоточие фрагментом вычис- ления /(х, у, у') при х = РО, у = Р1, у' ~ Р2 с исполь- зованием регистров 7, 8, А, . . ., Е\ (h/2 = Р9) х0 = Р0, ув = Р1= РЗ, у‘д = Р2 — Р4, Зу0 = Р5, Зу0 = Р6 В/О С/П РХ = РЗ = yu PY = ух... В/О С/П РХ = РЗ - уь РУ = — y't, Р0 = Xi ... Пример: для уравнения у" = 1 — Зу' — 4у при х0 53 = у0 = 0, у'о — 3; h = 0,05 получим « 60 с) у( 13 = 0,1369513; 0,25041171; 0,34386863; 0,4203151; ... y't = 2,4916049; 2,0584397; 1,6898102; 1,3765221; ... Программа 137. Решение уравнения второго поряДка У* 4- oty' — аау = f (г) по разностной схеме ИП8 ИП9 ИПО х — ИП2 X ИП6 ИП1 X + ИП9 4- ИП9 П9 — П6 ИП9 ИП8 ИП7 + П8 С/П БП 00 160
Иа схрукц и я; заменить многоточие Фрагментом вычисления f (х) при х = РХ = Р8 с использованием ре- гистров Si ..., 5, A, Е; (h = Р7, а0 = РО, at =« PI, h2 = Р2) х0 ₽ Р8, у9 = Р9 В/О С/П РХ « хх, PY ~ У1 С/П РХ = ха, РГ - yt... С/П РХ = xit PY~yt ... Пример', для уравнения у” + 2yf Ч- 5у = cos х при h = 0,01; ха = уй — 0 получим (/ 10 с) у( = 1 X X 10-*; 2,0194501 . 10'4; 3,0386294 - IO’4; 4,0570437 X X 1О'4; 5,0745836 * 10~4; ... Программа 138. Решение дифференциального уравне- ния а2у" + ai/ + aQy = f (х) по разностной схеме с за- данными значениями ft (х) ~ f (х()' ИПО ИП9 х — ИП7 х ИП1 ИП6 X — ИП7 X ИП2 4- ИПб + ИП9 + П9 Вх — П6 ИП7 ИП8 + П8 ИП9 С/П БП 00 Инструкция: (ао—РО, ах = Р1, а2=Р2) h = P7, х0 = Р8, у0 = Р9, у0 — y_L = у'а h — Рб, f (х0) = РХ В/О С/П РХ = уъ f(xx) = РХ С/П РХ ~ у2 ... f (х<) = РХ С/П РХ = yi+x, PY = Р8 = xl+l, Р6 = у{+] . .. Пример: для уравнения у* = 1 — 3/ — 4у при / (xi) — = 1; а0 = 4; ах = 3; ц2 = 1; h = 0,05; xft — уп ~ 0; уа — у i — 0,15 получим (1 « 10 с) у< = 0,13; 0,2417; 0,336728; 0,41663452; ... Программа 139. Решение дифференциального уравне- ния третьего порядка у"' = f (х, у, у', уя) комбинирован- ным методом второго порядка ИП2 П9 ПП 32 ПП 14 ПП 32 + ПП 14 С/П БП 00 П2 ИП8 ИП7 + П8 ипо ИП7 X ИП1 + П1 Вх ИП7 X ИПО + ПО В/О •. . ИП7 X t ИП9 + В/О Инструкция: заменить многоточие фрагментом вы- числения f (х, у, у', у") при х = Р8, у ~ РО, у' = Р1, у" = Р2 с использованием регистров 3,..., 6, А, Е; h/2 = = Р7, х0 = Р8, у0 = РО, у0' = Р1, у; = Р2 В/О С/П РХ ~ = У1 С/П РХ = у,... С/П РХ = yit P8^Xi... Пример: для уравнения у'" = 1 — 24у — 50 у' — 35у* при х0 = у9 = 0, у'о = 2, у” ~ —4 получим (1 аз 30 с) ^=0,0199; 0,039408647; 0,058558323; 0,077373205; 0,095871529; ... Программа 140. Решение дифференциального уравнения четвертого порядка yiv = f (х, у, у', у", у") комбиниро- ванным методом второго порядка
ИПЗ П9 ПП 38 ПП 14 С/П БП 00 ПЗ ИП7 X ИП2 + П2 П1 Вх ИП7 х ИПО X j ИП9 + В/О 14 ПП 38 + ПП ИП7 ИП8 + П8 ИП9 Вх ИП7 х ИП1 + + ПО В/О ... ИП7 Инструкция; заменить многоточие фрагментом вычисле- ния f (х, у, у', у", if') при х ~ Р8, у = РО, у' = Р1, у" = = Р2, у'" = РЗ с использованием регистров 4, 5, 6, А.Е; h/2^P7, xQ = PS, у0~РО, у0 = Р1, у0=Р2, yD=P3 В/О С/П РХ = (В/О) С/П РХ = уг . .. (В/О) С/П РХ= - уь Р8 = х^ Pl = у-, Р2 = у”, РЗ ^y'i ... Пример: для уравнения y1V + Юу"' + 35 у” ф- 30/ Р + 24/= 1 при h = 0,01; х0 = уй = 0; / = 2; у0 = —4; /’ = = 2 получим (I да 40 с) yi = 0,0199; 0,039401; 0,058505103; 0,077214607; 0,095531997; ... Программа 141. Решение системы из четырех дифферен- циальных уравнений (/* = Д (х, ylt у2, у3, yj; k = 1, 2, 3, 4 модифицированным методом Эйлера ИП4 П8 ИПЗ П7 ИП2 ПП 39 ПО ИП9 2 X ПЭ ИП4 ИП8 П4 о П8 ИПЗ ИП7 ПЗ *4 П7 ИП2 ИПЗ П2 «-> ПП 39 2 П9 + ПО ИП5 П1 с/п БП 00 П6 ИП9 X ИП4 + П4 - , « ИП9 X ИПЗ + X ПЗ ИП1 Ч~ ИП9 П5 X ИПО ИП2 ИП9 4- В/О П2 * * * ИП9 Инструкция: заменить в программе многоточия фраг- ментами вычисления соответственно функций f4, f3, при х = Р0, у4 = Р5, у2~ Р6, у3 = Р7, у4~Р8 с исполь- зованием регистров 9, , .. , Е; h/2 = Р9, х0 = РО, y{J> = = Р1 = Р5, /0) = Р2, = РЗ, yl = Р4 В/О С/П РХ = = Р/=^, Р2=/", Р3 = у"\ Р4 = у^ С/П... С/П РХ = Р/ = у?, Р2 = РЗ = /Д Р4 = у<() . .. Пример: для системы уравнений / = у2, / = у3, у3 = / = 1 — 24yt — 50у2 ~ З5у3 — 10у4 при /г = 0,01, х0 = 0, /°1 = 0, /0> = 2, /30> = —4, /40> = 2 на отрезке (0; 0,1) получим // = 0,0198; 0,039202053; . . .; 0,18040512 (t да 45 с). Программа 142. Решение системы из -двух дифференци- альных уравнений у' ~ / (х, у, г) и г' = <р (х, у, г) методом Рунге-Кутта четвертого порядка 1К2
ЯП 52 ПП А ПП 48 Вх 4' П6 ПП /1 Вх + П5 ПП 52 Вх + П6 ПП ИПО + по ПП А Вх + П5 Вх ИП! 4^ П1 ПП 48 П6 3 ПО ПП А 115 3 «J- П1 ПЗ ИП2 П4 с/п ИП7 ИП8 + П8 ИП7 X t ИП4 4- ПО ИП6 + П6 В/О « • ИП7 X t ИПО П2 B/O ИПЗ + П1 о ИП5 + П5 Инструкция: заменить многоточия соответственно фрагментами вычисления функций <р и / (символ А — адре- сом начала второй подпрограммы) при х = Р8, у = Р1, z = Р2 с использованием регистров9, ...,Е; h/2 — Р7, х0 = = Р8, Уо — Pl = РЗ, z0 = Р2 = Р4, Зуп = Р5, 3z0 =Р6 В/О С/П РХ = Р2 = гр PY = Р1 = у1 С/П ... С/П РХ = Р2 = Zi, PY = Р1 = yi... Пример1, для системы уравнений у' ~ z, z' = 1 —Зу— — 4г при h = 0,05; х0 = у0 = 0, г0 = 3 получим (/ та 70 с) г( = 2,491605; 2,0584397; 1,6898102; 1,3765221; .... yi ~ = 0,1369511; 0,25041171; 0,3438663; 0,4203132; ... 3.8. ИНТЕРПОЛЯЦИЯ И АППРОКСИМАЦИЯ Программа 143. Линейная интерполяция многочле- ном А (х) — арс + а0 по отсчетам функции /н = / (хи) И /в = <Хв) П8 — П5 ИП8 - ИП5 — 4- П1 ИП5 х ИП8 ~ — ПО ИП! С/П ИП! X ИПО + БП 18 Инструкция: хи = РТ. fu = PZ, хк = PY, fs = РХ В/О С/П РХ = Р1 = а1, РУ = РО — ар, х = РХ С/П РХ=Л(х). Пример', для f (2) = 1,2; /(8) = 12 получим А (х) = = 1,8х — 2,4; А (2,5) = 3,9; А (5) = 6,6. Программа 144. Квадратичная интерполяция по трем отсчетам функции f (х,) с равноотстоящими узлами х, = ““ Xflj Xj, %2 П8 <> — П7 С/П П6 <> П5 2 х — П4 + П9 С/П ИП8 — ИП7 4~ t Xs ИП9 х ++ ИП6 ИП4 — х + 2 4- ИП5 + БП 15 Инструкция: х0 = PY, хЛ = РХ В/О С/П РХ — h, f^PZ, f^—PY, f^PX С/П (f«12c) PX=A(x), x^PX C/П PX =A(x) .. . 163
Пример'; для f (0,1) — 3; f (0,3)' = 13; / (0,5) = 31 по- лучим A (0,2) = 7; A (0,42) — 22,84. Программа 145. Вычисление коэффициентов и значений многочлена А (х) = а2х2 4- «1 х + с?0, интерполирующего функцию / (xj с тремя равноотстоящими узлами х0, X» х2 Л 8 о «. 1 П7 с/п П6 П5 2 X — П4 4- 2 — ИП7 ха -2— П2 ИП6 ИП4 — ИП7 — 2 ч—• ПЗ ЙП2 ИП8 X П9 2 X — П1 ЙП9 ИПЗ — ИП8 X ИП5 4- по С/П t X2 ИП2 X 4-4- ИП1 X + ИПО 4" БП 44 Инструкция: х0 = PY, хг = РХ В/О С/П РХ = h, f0~ PZ, ft = PY, f2 = PX С/П PX = P0 - a0, PY = — Pl '= alt P2 = as, для интерполяции x = PX C/П PX — = A (x). Пример', по данным примера к программе 144 получим А (х) = 100 xs + Юх -(- 1; А (0,2) = д (0,42) = 22,84 а «5с). Программа 146. Интерполяция по формуле Лагранжа табулированных функций Д- — f(x t) с произвольным числом т ~ п 4- 1 равноотстающих узлов X/ = х0, х2, . гом h = Xi — х(-_] Хп с та- ИЛ7 пд ИП8 ПО л X cos П9 X ПС 1 П2 П5 ИП5 С/П ИП7 ИП5 —— t ИПД X пд —> ИПО /-/ ИП9 X П9 X ИП5 ИП2 X П2 — ИПС 4- ПС КИП5 КИПО ИПО х=0 14 ИПС йпд X ИП2 — С/П Инструкция: z = (х — x0)/h = Р7, п — Р8, L = РХ В/О С/П РХ==1, f^PX С/П РХ = 2, .. . , fn = PX С/П РХ = А (х); переключатель Р-ГРД-Г установить в по- ложение Р. Пример', для отсчетов гамма-функции [41 Го= 1; 1\ = = 0,9182; Га = 0,8873; Г3 = 0,8935; Г4 = 0,9314; Гв = 1 при /i = 0,2 и х0 = 1 получим Г (1,115) = 0,9456; Г (1,326) = 0,8939; Г (1,488) = 0,8859; Г (1,723) = 0,9132; Г (1,907) = 0,9643. Программа 147. Вычисление коэффициентов а,- интерпо- лирующего многочлена Ньютона, коэффициентов а, и зна- чений А (х) интерполирующего степенного многочлена для табулированной функции Д ~ f (х;) с числом т = п 4- 1 < < 11 равноотстоящих узлов Xj с шагом h 164
ПВ 1 1 Сх + ПЕ ПЕ КИПЕ ПС ИПЕ 1 Ч- ПД ИПЕ ИПД 4- ИПС КИПЕ ПС КПЕ ИПЕ ИПВ к = 0 09 ИПДПЕ ИПВ — х = 0 03 ипв 1 . —- ПД ПС ИПС 1 + ПЕ кипеКИПЕипд X ™ 1 КПСИПС1 4- ПС ипв х =0 37 ИПД 1 — х =0 35 ПЕ С/П ПС КИПЕИПД -X. КПЕ С/П ИПД ИПС X ПД ИПЕ I + ПЕ БП 63 | 1 t Сх t —>• X КИПЕ 4- ИПЕ 1 — ПЕ х<0 83 —> С/П БП 78 Инструкция: f0 = РО, = Pl, ..., fn = Рп, п = = РХ В/О С/П РХ = О {Р0 = а„, Р1 = ах......Рп = а„) Л = РХ С/П РХ = РО = а0 С/П РХ = Р1 = ах, ... С/П РХ = Рп = а„, для вычисления интерполируемых значений А (х) выполнить и = РЕ, х' = х — | = РХ (£ — начало от- счета х = 0) БП 7 8 С/П РХ = А (х) ... Пример', для отсчетов гамма^функции из примера к программе 146 получим а0 = 1; cq = —0,11475; а2 — = 0,037866667; а.. = —0,0055666667; а4 = 0,0006833334; а- = —0,000033333334 (f « 2 мин); а0 = 1; а4 =—0,57375; а.г = 0,94666667; а, = —0,69583333; а4 = 0,42708333; а5= = —0,10416666; при п = 5; х'= х— 1 получим А (0,115) = - 0,9456 « Г (1,115); Л (0,326) = 0,8939 « Г (1,326); А (0,488) = 0,8839 ж Г (1,488); Г (1,723) = А (0,723) = = 0,9132. Программа 148, Интерполяция функции f (х) по четырем отсчетам в равноотстоящих узлах х, с шагом h тригонометрическим многочленом F (q} ~ a0/2+atcos q -j- -J- bj sin q + tza cos 2q, q = л (x — x0)/2 ИП4 л X ИП5 2 X -С_ ПЗ cos ИПА X ИПЗ sin ИПВ X + ИПЗ 2 X cos ИПС X + ИПО С/П БП 00 П9 П8 + П7 + <-> П6 + 4 ПО ИП7 ИП9 —- 2 -Д- ПВ ИП6 ИП7 -— ИП8 ИП9 —. + 4 —* I ПС ИП6 ИП8 — 2 — ПА ИПО БП 26 Инструкция: установить переключатель Р-ГРД-Г в положение Р; х0 = Р4, h = Р5, f0 = PT, h = PZ, /2 = == PY, /3 = РХ БП 2 9 С/П РХ = РО = а0/2, PY = РА = = аг, РВ =bv PC = оа (tx 12 с) х = РХ С/П (Z « 12 с) РХ = F (х) ... Пример', для гамма-функции о отсчетами Г (1) = 1; Г (1,2) = 0,9182; Г (1,4) = 0,8873; Г (1,6) = 0,8935; h = 0,2 получим п0/2 = 0,92475; ах = 0,05635; Ьг = 0,01235; а2 = 165
=> 0,0189; Г (1,115) = 0,9649; Г (1,326) = 0,8919; Г (1,488)= = 0,8770. Программа 149. Аппроксимация тригонометрическим многочленом F (q) = + аг cos q + bL sin q -|- cos 2*/+ 4- q = 2л (jc — x0)/mh функции, заданной m < 11 от- счетами ft в равноотстоящих (с шагом h) узлах х0, хп ПЕ л 4- 1 2 2 X ПО 2 ПД ПП С/П 28 л sin ИПД пп X 38 1 ПП 28 cos пп 38 БП 14 — х 0 50 2 ИПС ипд — X В/О х КИПО + ИПО 1‘ + ПО — КПО —> ИПО В/О —н 2 — ИП1 + П1 ИПС 1 ПС БП 06 ипд X 1/х ПД с/п ИП1 по 2 ПС —> —> ИПС ИПД 2 -Г- X X t cos ПП 93 —jM sin пп 93 ИПЕ — х> 0 72 БП 66 кипе X ИПО + ПО ИПС 1 ПС В/О Инструкция: установить переключатель Р-ГРД-Г в положение Р; очистить регистры 1, 2, .... С; т — РХ В/О С/П РХ = ш/2л, = РХ С/П (/«110 с) РХ=1, Л = РХ С/П РХ = 2 ... ftt = РХ С/П РХ = т = п +1 (Р/ = о0/2; Р1 = аъ Р2 = blt РЗ = а2, Р4 = Ьг ...) h = = РХ БП 6 2 С/П РХ = 2л//пй, ха — х0 = РХ С/П РХ = — Р (х0), хь — х0 = РХ С/П РХ = F (хь) ... (£ ж 5т с). Пример-, для функции с отсчетами Д = 60; 80; 100; 115; 105; 110; 120; 130 при х0 = h = 2 получим а0/2 = 102,5; Ci = — 13,901639; &! = — 12,954951; а2 = —13,749979; Ьг = —13,75; о3 = —8,541977; fr., = —2,954964; аА = = —12,5; F (2) = 66.306414; F (6) = 106,5; F (10) = = 111,19366; F (14) = 126,24997. Программа 150. Вычисление коэффициентов стх кубиче- ского сплайна для интерполяции функции по шести отсче- там h в равноотстоящих (с шагом й) узлах х0| , Хр ... 1 Хп П1 i П6 П7 5 по С/П КП6 LO 06 5 ПО ПП 86 П8 4 пп 78 — 1 ИП7 1/х -j- ПД ИПС + ИП7 по ч- ПС 4 t 7 + П7 —► КИП7 + 4 /-/ ИПО —. 1Д по *— КП7 ИП7 8 i=0 33 С/п ч-> КИПО КИПО 2 X — кипо + + ИПО 9 + по —> КПО 4 /-/ ИП7 1/х — П7 -i- ИПО 4 1—. по 8 — х =0 53 Ч-» КИПО +-> КИПО кипо кипо — 3 X — кипо 6 Н- В/О Инструкиия: /0= РХ В/О С/П = РХ С/П /а = 166
= РХ С/П ... f5 = РХ С/П РХ = О (Pl = f0, Р2 = ... ... Рв = Р8 = <т0, Р9 =0!.......РД=а5). Пример', для табличной модели гамма-функции из при- мера к программе 146 получим о0= —1,0852891 • 10~®, of = ==- 8,5513452 • 10'3; ог = — 5,8420549 • 10’3; о3 = = — 5,1801583 10'3; =—5,1373011 • КГ3; о, == .-=—4,9706318 • 10~3. Программа 151. Вычисление интерполирующего сплай- на 8 (х) ИП7 — ИПЕ -X 1 0 + по кипо ИПО — 1 — Вх X2 1 — X X 1 — х2 Вх X Вх кипо х _ ИПО 5 — ПО — кипо X ++ — 1 — кипо X —- С/П Инструкция: после выполнения программы 150 (не изменяя содержимого регистров 8, 9, Д) ввести про- грамму 151 и выполнить: (х0 = Р7, h = РЕ) х = РХ В/О С/П РХ = 8 (х) ... Пример-, после вычисления ст,- по примеру к программе 150 получим Г (1,115) = 0,9456; Г (1,326) = 0,8938; Г (1,488) = 0,8859. Программа 152. Интерполяция табличных моделей ft «= = f (лД с n -f- 1 < 11 неравноотстоящими узлами по фор- муле Лагранжа ПС Сх t f -> 1 - ПВ КИПД ИПС КИПВ — х t + ИПД 1 + t БП 04 ПД С/П ИПЕ КИПВ — х^0 25 -т- -> ИПЕ х=0 10 -->• ИПЕ — х = 0 04 Инструкция: (х0 = Р0, хг — Р1, • •., хп = Рп, п + -4- 1 - РЕ) х = РХ В/О С/П РХ = О, К = РХ С/П РХ = 1, Л = РХ С/П РХ = 2 ... РХ = п, fn = РХ С/П РХ = = f(x); 40 с. Пример', для отсчетов гамма-функции [31 Г (1) = Г, Г (1,3) = 0,8975; Г (1,4) = 0,8873; Г (1,6) = 0,8935; Г (1,8) = 0,9314; Г (2) = 1 получим Г (1,723) = 0,91317. Программа 153. Интерполирование табулированной Функции ft = f (xt) с п + 1 < 6 отсчетами в неравноот- стоящих узлах Х[, вычисление коэффициентов а, много- члена Ньютона, at и a't интерполирующих степенных *<ногочленов при исходном и смещенном на £ началах от- счета аргумента 167.
ПД П7 7 П1 Г 4 ПО С/П П8 —> ИП8 КИПО -— ИПО 5 по КИПО — ++• — ИПО 6 . .+ ПО 6 ИП1 — х = 0 10 —> КП1 ИП8КПОБП 05 ИП1 1 + П8 7 ПО 6 — П1 9 — х^0 79 КИПО f t КИП! «-> КИП1 X — ИП1 2 4- ш КП1 ИП1 ИП8 — х=0 56 ИПО 2 БП 45 C/I t ИП9 П1 Сх ИП8 ПО X кипо + ИПО 2 . + LI 85 —> БП 79 Инструкция: f0= PY, хв ~ PX B/O С/П Л — PY, Xl = PX С/П .. . fn = PY, xn = PX С/П P7 = a0, P6 = = «I.....P2 = cc5, РД = x0, PC = x1( ..., P8 = x5; для вычисления a(- БП 4 О С/П Р7 = а0, Р6 = alt ..., Р2 = аь; для вычисления f (х) (п -ф 1 = Р9) ха = РХ С/П РХ — = f(xa), Xh—РХ С/П РХ =/(х*) . . .; для вычисления коэффициентов интерполирующего многочлена при смещении начала отсчета аргумента в точку х' = х0 + | выполнить £ = РД^РС = ...=Р(14 — п), 7 — я = Р/БП 4 О С/П Р7 = Р6 = а{... Р2 = аг, х’а = РХ С/П РХ = Дх'а), хь = РХ С/П РХ=/(хб)... Пример', для табличной модели гамма-функции из при- мера к программе 146 получим осо = 1, = —0,34166666; а, = 0,5991666; а3 = —0,259722; а4 = 0,206944; ап = = —0,102182; а0 = 3,7314954; ах = — 6,729417; а2 = = 6,565789; о3 = = —3,3981216; а4 = 0,9324362; а. = = —0,102182; для х = 1,723 получим Г (х) = 0,9131714; для проверки влияния операционных погрешностей нахо- дим Г (1) = I; Г (1,3) = 0,8975; Г (1,4) = 0,8873001; Г (1,8)=0,9314001; Г (2) = 0,99999998: для £= 1 и 7 — л = 2 получим a‘ti = 21,459441; а[ = —34,296015; а2 = 23,376591; а'3 = —8,1496864; = 1,4433462; a’s =—0,102182; для х' = х -ф 1 получим Г (х') = 0,91317. Программа 154. Вычисление по методу наименьших квадратов коэффициентов многочлена А (х) = X + а0 и его значений, аппроксимирующих функцию / (х/) с про- извольным числом т произвольно расположенных узлов Х( — х0, х4 > - ’•» t Сх ПЗ П4 П5 П6 П7 •—> П8 П9 X ИП7 + П7 ИП8 ИП5 + П5 ИП8 ха ИПЗ + ПЗ ИП9 ИП6 + П6 КИП4 ИП4 С/П БП 08 ИП6 ИПЗ X ИП7 ИП5 X -—- ИП4 ИПЗ X ИП5 X2 — П2 ПО ИП4 ИП7 X ИП5 ИП6 X — ИП2 П1 С/П ИП1 X ИПО + БП 59 168
Инструкция: f0^= PY, x0 = PX B/O C/П PX — 1,' ft = PY, xv = PX С/П (/ «7 c) PX = 2 ... /„•=» PY, xn = ₽= PX С/П PX = m (P3 = S x*, P4 = tnt P5=*£ xt,P6^ = S fi, P7 = S ftXi) Б/П 3 3 С/П (/ & 12 c) PX = Pl = z=gp PY = P0=aQ\ для вычислений x =PX C/П PX=*A (x). Пример-, для отсчетов f (0,2) = 4; f (0,3) = 8; f (0,4) = = 20; f (0,5) = 40; f (0,6) = 64 подучим коэффициенты многочлена A (x) = 152x — 33,6 и значения/! (0,2) = —3,2; A (0,35) = 19,6; A (0,5) = 42,4. Программа 155. Вычисление по методу наименьших квадратов коэффициентов а( и значений многочлена А (?) = ₽ аа z2 + aYz + а0; z = х — х0 = х — (х0 + х„)/2, аппрокси- мирующего функцию f (х() с произвольным числом т > 2 рав- ноогстоящих с шагом h узлов X/ П9 ПВ ИП6 Сх + ПЗ П6 + П4 Вх П5 П6 2 П7 П8 ПД С/П ИП9 ИПВ X ИП7 + П7 ИПВ X2 ИП9 X ИП8 + П8 ИПВ X2 ИПЗ + ПЗ ИПВ X2 х£ ИП5 + П5 ИПВ ИПС + ПВ КИП4 ИП4 БП 15 ИП6 ИП5 X ИП8 ИПЗ X — ИП4 ИП5 X ИПЗ X2 -— ПА — по ИП7 ИПЗ П1 ИП4 ИП8 X ИП6 ИПЗ X — ИПА -4- П2 С/П ИПД — t X2 ИП2 X <-> ИП1 X + ИПО 4* БП 82 Инструкция: h = PC, хп = PY, х0 = РХ В/О С/П (i « 5 с) РХ = 0, f0 = РХ С/П РХ = I, - РХ С/П (/га 12 с) РХ=2... fn = РХ С/П РХ = т (Р3 = ^, Р4 = т, Р5 — Ezt Р6 = Е/г, Р7 = £flZi, Р8 = LfiZ-, РС = — Л, РД = хс = (х0 + хп)/2) БП 5 2 С/П (/ 10 с) РХ = = Р2 = а2, PY = Р1 -= cq, РО — а0; для вычислений х = РХ С/П РХ = А (х). Пример-, для f (0,1) = 1; f (0,2) = 4; f (0,3) = 8; f (0,4)= == 20; / (0,5) = 40; f (0,6) = 64 получим a2 = 301,78571; «i = 124,28571; «о = 14,03125; A (0,25) « 4,62; A (0,5) « я» 39,46; A (0,55) « 50,96; коэффициенты многочлена A (x) A {z 4- xc) можно вычислить с помощью програм- мы 50 или по формулам а2 — а2, at = — 2а3Хс, Оо = = «0 — «1*0 + СС2Хс. Программа 156. Вычисление по методу наименьших квадратов коэффициентов многочлена A (z) = aaz3 + a2za + + «iz + «о’> z = * — хс = х — (х0 + Хп)/2, аппроксими- 169
рующего функцию / (xf) с произвольным числом т > 3 равноотстоящих узлов х0, хг...хп ИПД .— П9 ПЗ ИП5 4- П5 ИП9 ИПЗ X ИП6 4- П6 ИП9 X2 t t ИПЗ у ИП7 4* П7 ИПА 4- ПА хг ИПВ + ПВ ИП9 t X2 X t 4 X ИПС 4- ПС —>- ИПЗ X ИП8 + П8 С/П ИП5 ИПВ X ИП7 ИПА X — * ИП4 ИПВ X ИПА х2 — ПЗ ПО ИП7 ИП4 X ИП5 ИПА X — ИПЗ — П2 ИП6 ИПС X ИПЗ ИПВ X — ИПА ИПС X ИПВ X2 — ПЗ -X П1 ИП8 ИПА х ИП6 ИПВ X —-U. ИПЗ-J- ПЗ С/П Инструкция: очистить регистры 5, 6, . . , , С (хс = = (х0 4- хп)/2 = PD- т=--п < 1 = Р4) - PY, xQ = РХ В/О С/П (/« 12 с) Л = PY, х\ = РХ В/О С/П ... Д -= = Р¥, хп = РХ В/О С/П (P5=Eff, PS^ ZfiXi, Р7 = = Zfizl PS = ЕД-z?, РА = Ez?, РВ = EzJ, PC = Ez?) С/П (/ ~ 18 с) РХ — РЗ ~ ос3, Р2 = а2, Pl = ах, РО — а0; для интерполяции f(x) при сохранении содержимого регистров О, ... , 3 в ручном или автоматическом режиме использовать программу (при х — РХ) ИПД — f + ИПЗ X ИП2 4- X ИП1 + х НПО +. Пример', для отсчетов f (0) = 0; f (0,1) = 1; f (0,2) = 4; f (0,3) - 8; f (0,4) = 20; / (0,5) = 40; f (0,6) = 64 c m = 7; xr_ — 0,3 получим коэффициенты интерполирующего много- члена А (г) = 250 г3 + 257,14285 z2 + 84,642857 z 4- 4- 9,2857142; А (0,5) = 38,5; А (0,25) « 5,7. Программа 157. Вычисление по методу наименьших квадратов коэффициентов многочлена А (2) = a4z* + “з-?3+ + a2z2 + «1^ 4* aol z ~ х — хс = х — (х0 + х„)/2, аппрок- симирующего функцию / (xj с т > > 4 равноотстоящими узлами х0, х1; .. * j 4- 2 ПО 1 4 П1 Сх КП1 ИП1 4 х=0 07 с/п ИПО П1 <-> П2 ИП9 4~ П9 ИП1 ИП2 X ИПА 4- ПА ИП1 X2 t ИП5 4- П5 ИП2 X ипв + ПВ ИП1 t X2 X t ИП2 X ИПС 4- ПС <-> t X ИП7 4~ П7 ИП1 X2 X2 t t ИП6 4- П6 ИП2 X ипд 4~ ПД t X ИП8 4- П8 КИП4 ИП4 БП 14 Инструкция: х0 = PY, хп = РХ В/О С/П (/ ~ 15 с) РХ =0, f0 = PY, хй = РХ С/П (/«20 с) РХ= 1, fi ~ 170
PY, xt = PX С/П PX = 2 ... fn = PY, xn = PX С/П PX = W«m«=n+1; P5 = £z?; P6 = £4. P7 « £4, P8 = ^zl PV-I.fi, PA^^fiZi, РВ-УМ, PC =* = £//4, РД = PQ = xc = (x0 + x„)/2; для вычис- ления коэффициентов многочлена по полученным данным решить системы уравнений 1г? £А 1 УМ J в Пример: для отсчетов функции, заданных в примере к программе 156, получим т~7\ У zf = 0,28; У 2? = = 1,96 10“2; У г? = 1,588 Ю*3; £ г,8 = 1,3636 • 10~4; -У А = 137; £/^ = 28,6; £/fz? = 7,64; £/,4 = 2,056; У /,4 — 0,5864 и (по программам 61 и 62) а0 = 12,716808; «.=84,64291; «„=—9,2515342; а3 = 249,99918; а. = = 2580,2434. Программа 158. Вычисление множителя k функции Л<р (х), аппроксимирующей со среднеквадратичным откло- пением о2 табулированную функцию / (xj с произвольным Числом т = п + 1 равноотстоящих узлов х( П7 - П8 по Сх ПЗ П4 П5 П6 ИП6 С/П П9 X2 ИПЗ + ПЗ t X2 ИП4 + П4 ИП9 X ИП5 4- П5 КИПО КИП6 ИП7 ИП8 + П7 ИПО х=0 10 ИП5 ИП4 С/П П7 ИПЗ ИП7 ха ИП4 X — ИП6 —7’ Инструкция: заменить многоточие фрагментом вы- числения функции (р (х) при х = Р7 с использованием Регистров 1, 2, Л, .,. Е\ т =PZ, xL= PY, х0 = РХ В/О = С/П (/ « 3 с) РХ = 0, /0 = РХ С/П РХ = 1, h = PX С/П (t & 8 с) РХ = 2 ... /„ = РХ С/П (/«11 с) РХ = о2, ру Р7 = k. Пример: для табулированной функции с отсчетами Ь = 60; 80; 100; 115; 105; ПО, 120; 130 н узлами х0 = 2, =» 4 при ф (х) = х + 16 получим k = 4,1041021; а3 = 75,249625. k 171
Программа 159. Вычисление слагаемого а функции а 4- ф (х), аппроксимирующей со среднеквадратичным От. клонением а* табулированную функцию /(хг),с произволу ним числом т равноотстоящих узлов х\ П7 П8 4-> ПО Сх П4 П5 П6 И116 С/П П9 ИП9 — f ИП4 4- П4 — X3 ИП5 4- П5 ИП7 ИП8 4- П7 КИП6 кипо ИПО х=0 09 ИП4 ИП6 4- П7 И115 И116 ИП7 № С/П Инструкци я: заменить многоточие фрагментом вычисления функции <р (х) при х =« Р7 с использованием регистров 1, ... 3, А.£; т = п 4- 1 = Р7, xt == PY, х, - РХ В/О С/П (/« 3 с) РХ = 0, /9 = РХ С/П РХ = 1, ft=PX С/П РХ~2 ... fn^PX С/П РХ = а*, PY = а. Пример-, для табулированной функции / (х<) из при- мера к программе 158 и <р (х) = 4х получим а = 66.5; о3 = 76. Программа 160. Вычисление абсолютных отклонений Д( — у (xj — f (xf) в равноотстоящих узлах х{ = х,. х(, ..., х„ и среднеквадратичного отклонения о3 аппроксими- рующей функции у (х) от аппроксимируемой функции / (.<) П7 — П9 Сх П4 П5 С/П 118 КИ114--- ИП8 — f х* И| 15 + П5 ИП4 4- П6 ~ ИП7 ИП9 4- П7 -> ИП4 БП Об Инструкция: заменить многоточие фрагментом вы- числения у(х) при х =. Р7 с использованием регистров 0.....3, А.......Е\ x^PY, ха = РХ ВО С/П РХ^ -0, = РХ С/П РХ = 1. PY = А„ Д = РХ С/П РХ----2, PY = Slt .../„ = РХ С/П РХ = п + 1, PY «= Д„. Р6 -о2. Пример’, для аппроксимирующей функции у (х) = 70 4* 4- 6х и аппроксимируемой функции / (xj из примера к программе 158 соответственно получим А,- = 22; 14; 6; 3; 25; 32; 34; 36 и о2 603,25. Программа 161. Вычисление абсолютных отклонений Д, “ У (xi) — f От) в неравноотстоящих узлах х{ •=* х0, х„ .... хп и среднеквадратичного отклонения о3 аппрокси- мирующей функции у (х) от аппроксимируемой функция / W f Сх П4 П9-> П7о П8 КИП4-- ИП8 - f х* ИП9 4- П9 ИП4-*- П6 И114С/Г1 БПО5 172
Инструкция: заменить многоточие фрагментом вы- числения у(х) при х = Р7 с использованием регистров Р,.... 3, 6, А.......£; fQ~PY, х0 = РХ В/О С/П рХ = 1, PY = Дв. А = PY, х, = РХ С/П РХ = 2, PY = ₽ Д1, ... fn~PY, хп = РХ С/П РХ = п Ч- 1, PY = Д„. Р6 - о2. Для проверки использовать пример к программе 160. 3.9. ВЫЧИСЛЕНИЕ СПЕЦИАЛЬНЫХ ФУНКЦИЯ Программа 162. Вычисление гиперболических и об- ратных гиперболических функций sh х, ch х, th х, arsh х, arch х, arth х П9 1 С/П 10х 0 ♦ 8 Д. 2 X 1 2 + П8 КБП8 ИП9 X1 1' БП 38 ИП9 e* ИП9 БП 46 БП 54 ИП9 ex ИП9 /-/ ex — 2 -X- С/П БП 00 1 У ИП9 + In С/П БП 80 /-/ e* + 2 — С/П БП 00 1 ИП9 + 1 ИП9 — — In 2 —H С/П БП 00 ИП9 ex ИП9 /-/ e* — ИП9 e* ИП9 /-/ e« 4- — * 1 С/П БП 00 00 00 ИП9 БП 67 ИП9 X® 1 + ИП9 -f- In БП 80 Инструкция: установить переключатель Р-ГРДТ в положение Р; х = РХ В/О СП (РХ = 1); ввести команду вычисления тригонометрической или обратной тригонометрической функции, соответствующей требуемой | гиперболической или обратной гиперболической функции; посте выполнения команды С/П РХ = f (х); t ж 15 с. Примеры'. sh 0,5 = 0,52109535; arsh 0,52109535 =* = 0,500000007; ch 0,5 = 1,1276259; arch 1,1276259 = «= 0,49999983; th 0,5 = 0,46211722; arth 0,46211722 = = 0,50000005. Программа 163. Вычистение функций sin p, cos p, sh p, ch p, e₽ или In p комплексного аргумента p = x + /у П9 КБП9 ПП 69 ИПА cos X ППА sin ПП 77 X С/П ПП 69 /—/ ИПА sin X ИПА cos БП 09 ИПА ПП 78 ИПВ sin X ИПА ПП 70 ИПВ cos X С/П ИПА ПП 70 ИПВ sin X ИПА ПП 78 БП 32 ИПА e* ИПВ sin X ИПА e" БП 32 ИПА f X® ИПВ xa + П9 cos-1 ИП9 In С/П ИПВ 173
e’ f Ь'х — 2 4- ВЮ HUB е* f 1/х 4- БП 74 2 П7 1 3 П8 2 3 П4 3 6 П5 4 7 П1 5 6 ПЗ С/П Инструкция: установить переключатель Р-ГРД-г в положение Р; БП 8 4 С/П (РХ = 56); у = РД, х = рд ИП II В/О С П (Н—клавиша, над которой обозначен символ вычисляемой функции In, ех, sin, cos или, для sh р и chp соответственно sin"1 и cos-1) PX*^Re/(.U; PY — Im f (x); 16 c. Примеры: sin (2 4- /I) = 1,4031193 — /0,48905631; cos (2 4- /П = —0.64214817 — /1,0686075; sh (2 -J- /1) « = 1,9596009 4- /3,1657785; ch (2 4- /1) = 2,0327229 4- 4- /3,0518878; exp (2 4- /1) - 3,9923239 4- /6,2176763; In (2 4- /1) = 0,80471895 4- /0,46364761; In (—2) = In (—2 t /0) - 0,6931472 / 3,1415926. Программа 164. Вычисление интегрального синуса Si (х) = л/2 — si (х) с шестью верными цифрами П8 П6 /-/ П7 кип X X* 6 ИП7 П7 П9 11116 ИП6 ИП8 8 КИП6 ИП8 4- Х<0 35 1 ИПЗ ИП6 118 Вх х—0 11 ИП8 БП 92 ИП9 1/х t t t 3 8 X 1 — X 3 0 X 1 4- X 2 4 X 2 — X 1 4- ИП8 — ИП8 cos X 119 2 1 X 1 — X 1 2 0 X 6 4- X 1 4- 1 X С/П ИП8 sin X ИП9 — л 2 Инструкция: установить переключатель Р-ГРД-Г в положение Р; х = РХ В/О С/П РХ = Si (х); I » « (22 4' 12х) с при х< 8 i « 25 с при х > 8. Примеры: Si (0,1) = 0,099944467 (/ « 26 с); Si (1) = = 0,94608314; (/ « 44 с); Si (7,9) = I,.5616715 (/ « 2 мин). Si (20) = 1,5482416 (/ « 25 с). Программа 165. Вычисление интегрального косинуса Ci (х) = ci (х) и функции S] (х) = 1п х 4- С — Ci (х) с ше<- тью верными цифрами в интервале 0• < х < : ю 117 х* /—/ П4 П8 2 ПЗ П9 1 П5 2 П6 КИП5 КИП6 ИП8 ИП4 X П4 ИП5 — ИП6 КИП6 —н ИП6 X ИПЗ X ПЗ — ЙП9 4- 1 0 4- Вх — ИП9 П9 — х = 0 13 ИП9 2 —- П9 ИП7 In 4" 0 5 7 7 2 1 6 4“ С/П 174
Инструкция! х «= РХ В/О С/П РХ — Ci (х), d9 = —(х), Р7 = х; /» (15х + 30) с. •- Примеры Ci (0,5) « —0,1777837; S, (0,5) = 0,0618525 (/« 35 с); Ci (i) = 0,337404; St (1) = 0,239812 (/ « 45 с); Ci (Ю) = -0,0454574; «! (10) = 2,9252585 (/ « 2 .мин 45 с). Программа 166. Вычисление с шестью верными цифра- ми интегральной показательной функции Ei (х) при х< 0, функции Ei (х) = ReEi (х) при х> 0 и интегрального ло- гарифма li (х) « Ei (In х) при 0 < х < 1 П7 I П8 П9 Сх 114 115 К.ИП4 ИП7 ИП4 Ч- ИП8 X П8 ИП4 ч- ИП5 4- П5 Вх — х=0 07 0 , 5 7 7 2 1 5 7 ИП7 х !п 4- ИП5 4- С/П Инструкция: х = РХ В/О С/П РХ = Ei (ж) при х<0 или РХ = F.i (х) при х>0 (/«(12 х-}-50) с); In х = РХ В/О С/П РХ = li х при 0 < х < 1. Примеры'. Ei (0,5) =• 0.45421991 (/« 55 с); Ei (—0,5)-= = —0,55977357 (/« 55 с); li 0,5 = —0,378671 (/ « 60 с); Ei(2) = 4,9542344 (/« 80 с); Ei (5) = 40,185273 (/« 120 с); Ei (10) =2492,2289 (/ « 170 с). Программа 167. Вычисление интеграла вероятности Ф (х) = 2Фб (х) и функций 1—Ф(х), erf х = Ф (х У 2) и erfc х= I —crfx с шестью верными цифрами П7 П8 Ха П9 9 — х<0 37 Сх П4 КИП4 ИП7 ИП8 /-/ ИП9 X ИП4 2 X П8 Вх 1 — *1' П7 — х — 0 10 ИП7 2 л • к X С/П ИГ19 1/х t t t 3 9 7 X 1 — X 1 5 X 3 4- X 1 • X 1 4- 4-> 1/х е’ - 2 X л • X t 1 4-> — с/п Инструкция! х = РХ В/О С/П РХ = Ф(х); PY -- = 1 — Ф(х); / < 2,5 мин при х<3 и около 18 с при *>3; для xV'2 = РХ В/О С/П РХ = erfx, PY =erfc х. Примеры: Ф (0,1) = 0,079655672 (/« 25 с); Ф (2,9) = =0,99626842 (/«140 с); Ф;5,5) =1; 1—Ф(5,5) = 3,7977891 х X 1О'в(/« 18 с); ег!4 =Ф(4/2) = 1; erfc 4 = 1,5416359 х X 1О’*(/« 18 с). >75
Программа 168. Вычисление интегралов Френеля C(z) - /2/л f cos Р dt, S (z) = /2/д f sin /« dt, ”, C* (z), S* (2)( Q(z), SJz) П9 ЗН П8 ИП9 x* x’ Bx 6 4- ПО ИПО f 4- 4- ИП8 Bx — 4- X ИГ10 4X2 — ИП8 — 1/x 4- LO 10 «• У in 2 ИП8 — x ’ e« 2 x л 4- V X С/П Инструкция: при г = РХ, —z=PX, z^ntl^ = РХ, —z V л/2 =РХ. V~z = РХ, — ]/ г х= РХ В/О С/П соответственно получим РХ-С(х), PX—S{z), РХ « »С*(х), РХ = S»(z), РХ = Ct (г), РХ = Sj (z); /«(27 4- 4- 23х) с. Примеры-. С (2) = 0,3682001; S (2) = 0,64212021 (/ « ж 72 с); С* (2) = 0,75330096; S* (2) ~ 0,56284859 (/ « « 65 с); Сх (2) = 0,77989335; (2) = 0,43825903 (/ « 55 с). Программа 169. Вычисление с пятью верными цифрами гамма-функции Г (х) вещественного аргумента П9 9 ПО ИП9 ИП9 1 4- х Вх 1.0 05 1 4- 119 t In 1 — X ИН9 1 2 X 1/х + е“ о 4“ 2 л X ИП9 4- Y X t ВП 3 4- Вх — С/П Инструкции: х == РХ В/О С/П РХ = Г (х); /« 25 с. Примеры: Г (1,3) = 0,89747; Г (1,5) =0,88623; Г (1,8)^ = 0,93139. Программа 170. Вычисление логарифмической произ- водной гамма-функции ф (х) — Г' (х) / Г (х) с заданным числом п итераций ПО «-► П9 I — ИПО ИП9 2 -L- 4- 1/х ИПО 4- ИПО X 1/х 4- LO 11 X 0 9 5 7 7 2 2 1 6 — С/П Инструкция: х = РУ, п = РХ В/О С/П РХ — ф (х); / « (6,5 4- 2,5л) с; при л = 10 и 1 < х< 2 результат содержит не менее трех верных цифр. Примеры: при л = 10 получим ф (1,5) = 0,03651475 (/ я? 35 с); при л — 100 получим ф (1,5) 0,03648997 (/ я# w 4 мин 20 с) со всеми верными цифрами. 176
Программа 171. Вычисление бета-функции В (а, Ь) = ₽=Г (а) Г (b) I Г (а -г Ь) с пятью верными цифрами 117 4-* 118 4- ПП 19 П6 ИП7 ПП 19 115 ИП8 ПП 19 ИП5 X ИП6 »* С/П П9 9 ИЗ ИПЗ ИП9 ! 4- X Вх L-3 24 1 -4- П9 t Ill 1 — X ИП9 1 2 X 1/х т е’ < > — 2 л X ЦП9 ч- 1 X ВО Инструкция: а = PY, Ь — РХ ВО СП РХ = В (а, 6); t ъ 80 с. Примеры-. В (0,5; 3) = 1,0666683; В (0,5; 3,5) = ₽ 0,98174718. Программа 172. Вычисление эллиптических интегралов Лежандра первого F (k, ф) и второго Е (k, ф) рода с шестью верными цифрами П8 ИПО ~ П7 4- П5 1 ПП 0 ПО 41 1 1 ПП П6 30 ИП8 Г19 4 пп 30 2 БП 16 ИП6 3 — И115 X с/п X ИП6 + 116 КИНО ИПО х’у=0 24 И115 X П9 1/х ИП9 sin В/О ИП7 X X1 1 4-* —— г И в с т р у к ц и я: установить переключатель Р-ГРД-Г в положение Р; k *=* PY, ф = РХ (для полных интегралов <р = л/2) В/О С/П РХ = F (k, <р); для вычисления Е (k, ф) изъять оператор 1/х по адресу 50; t < 2 мин. Пример-. F (0,5; л/2) = 1,6857501; Е (0,5; л/2) = ₽ 0.73713653. Программа 173. Вычисление неполной гамма-функции у (а, х) при х > 0, а > 0 ПЗ П9 -> ИПЗ ИП9 ИПЗ 4- 4- х 1 4- L3 05 -> -> In ИП9 х — е* 4- ИП9 4- С/П Инструкция: х — PZ, а = PY, k = РХ В/Ол С/П РХ = у (а, х); / « (2/г 4- 10) с; при k > 2х 4- 8 и а > 0,5 результат содержит не менее пяти верных цифр Пример-, при k = 10 (/ » 30 с) у (2; 8) = 1,3663217; k = 20 (/ « 50 с) у (2; 8) = 0,99738765; k = 30 (/ « 80 с) у (2; 8) = 0.9969807 со всеми верными цифрами. Программа 174. Вычисление функции Лобачевского L (х) 7 <г321 177
П9 — П6 0 7 7 4 5 9 6 7 П5 Сх П8 ПП 37 8 X 118 ПП 34 ПП 34 X ИП6 X 1 8 V* /-/ С/П ИП5 /-/ По 1 + ИП6 2 — X 117 ИП7 cos In ИП8 4- Г П8 ИП7 ЙП6 + П7 ИП9 — х>0 44 ИП8 5 В/О Инструкция: установить переключатель Р-ГРД Г в положение Р; х = PY, число разбиений интервала интегрирования k РХ В/О СП (/ « (20Л 4- 20) с) РХ = L (х). Примеры: при k — I (/ « 40 с) L (л/4) = 0,086408811; k = 2 (/ « 60 с) /. (л/4) = 0,086413655; k = 3 (/ « 80 с) L (п/4) = 0,086413722 при точном значении L (л/4) = = 0,0864135. Программа 175. Вычисление температуры 0 = I/(ex*/v х X 1^(п|/у) на расстоянии х от начала координат в одно- родном л-мерном пространстве с теплопроводностью а3 для момента у = bert нормированного времени 118 » Г19 ИП7 ИП9 л х X» f И118 х2 ИГ19 ех х 1/х С/П БП 00 11 и с т р у к и и я: (п = Р7) у = PY, х = РХ (В/О) СП РХ = 0 (л, у, х); /«5с. Примеры: 0(1; 1; 0,5) « 0.43939134; 0(2; 1; 0,5) = = 0,24790002; 0 (3; 1; 0,5) = 0,139862561. Программа 176. Вычисление функций Бесселя Jn (х) и /п (х) вещественного аргумента х и целочисленного по- рядка л П5 ~ П9 Сх 114 1 П6 ИП5 х¥=0 19 П8 ИП6 х П6 ИП8 1 — х=0 10 ИП9 2 4- х- П9 ИП5 Вх X» ИП6-г- 117 П8 КПП4 ИП4 f >1115 4- X ИП9 4- ИП7 «-> 4- /—/ 117 ИП8 + П8 Вх — х=0 81 ИП8 С/П ♦ И н с т р у к а и я: х = PY, п « РХ В/О СП! РХ= — J,, (х); для вычисления модифицированных функций Бесселя 1, (х) заменить оператор /—/ по адресу 42 в про- грамме оператором НОП; при х > 10 и п > х результат содержит не менее шести верных цифр; время счета зависит от х и п. ч Примеры: Jrt (2) = 0,22389078 (/ « 50 с); J, (2) = = 0,033995718 (/ « 55 с); J5 (I) ~ 0,0002497577 (/ « 50 с); 178
JM(20) = 0,000124016 02 (/« 3 мин); Jn(7) 0,00077022187 (/ « 1 мин 45 с); I,. (2) = 0,0098256791 (/ « 55 с). Программа 177. Вычисление функций Струве Нл (х) и L„ (х) вещественного аргумента при целом и полуцелом порядке п П7 ~ ЗН П4 Вх 1х[ П6 ИП7 1 + П2 2 1 /х П8 + ~ f f 4 3 + ПЗ х* 4 4- П9 у' In ИП2 X е’ 2 X 1 — 4- Вх L2 35 2 х 1/х л In X ех 4- 1 ИП9 х ИПЗ ЙП8 + 4- Вх ИП7 4- 4- ИП6 X 1 4- 1-3 50 х С/П Инструкция: п — PY для Ln(x) или —rt *= PY для Я, (к); х — РХ В/О С/П РХ = Ln (х) или Н„ (х); I ъ «(12x4-30) с; при х< 10 результат содержит не менее пяти верных цифр. Примеры'. Hj/a (л) = 0,90031635 (/«60 с) при таблич- ном значении 0,90031629; L,/, (л) — 4,7680531 (/ « 60 с) при табличном значении 4,7680539, Программа 178. Вычисление функций Эйри Ai (к) и Bi (х) f f х1 х П7 |xl V 5 + П8 1 ПП 50 0 , 2 5 8 8 1 9 4 х X П9 ИП8 1 /—! ПП 50 0,3 5 5 0 2 8 х П6 + 3 / X П8 ИП6 ИП9 — П7 С/П П6 -*► ПЗ Сх ИПЗ 3 X -г Вх ИП6 + 4- НП7 х I + L3 54 В О И н с т р у к и и я: х = РХ В/О С/ П РХ — Р7~ = Ai (х), PY = Bi (х); при —6,5 < х -С 4,6 погрешность Д С 1 • 10‘4; t < 3 мии. Пример: Ai (—3) = —0,3788145 (табличное значение — 0,37881429); Bi (—3) = —0,1982895 (табличное значение — 0,19828963); t ж 1 мин 45 с. Программа 179. Вычисление гипергеометрпческого ряда F (а, Ь, с, х) при 0, —1, —2, ...; |х{ < 1 П9 -> П8 -> П7 ~ П6 ИП9 ИПО 1g ИПО 1 — П9 ИП6 4- X ИП9 ИП7 + X ИП9 ИП8 4- 4- ИПО 4- X 1 + L0 10 С/П Инструкция: fe = РО, а = PT, b — PZ. с = PY, х = РХ В/О С/П РХ = F (а, b, с, х); / « (6fr 4- 5) е; 7* 17^
точность определяется совпадающими цифрами для близ* ких значений k. Примеры' при k = 10 (/ а 65 с) F (1; 1; 1; 0,8) = = 4,5705034; k = 20 (/ а? 2 м 15 с)’ F (1; 1; 1; 0,8) = = 4,9573538; k = 30 (f а 3 мин 10 с) F (1; 1; 1; 0,8) = = 4,9956386; табличное значение F (I; 1; 1; 0,8) = 5. Программа 180. Вычисление вырожденной гипергео- метрической функции Ф (а, с, х) ПЭ -> П8 ~ П7 ИП9 ИПО 1g ИПО 1 — П6 ИП7 + X X ИП6 ИП8 + ч- ИП0 4-1 + L0 08 С/П Инструкция: число членов аппроксимирующего ряда k = РО, а = PZ, с = PY, х — РХ В/О С/П РХ = Ф (а, с, х), Р7 — а, Р8 = с, Р9 = х; t a 5k g; точ- ность результата (до семи верных цифр) определяется сов- падающими цифрами для двух близких значений k. Примеры.} при k = 10 (t ж 50 с) Ф (1; 1; 5) — 146,38059; k = 20 (f а 100 с) Ф(1; 1; 5) = 148,41315; k = 21 (t ж а 105 с) Ф (1; 1; 5) = 148,41315; табличное значение Ф (1; 1; 5) = 148.41316. Программа 181. Вычисление функции параболического цилиндра <рч (х) по П1 <-> П7 1 <-> ИП! ИПО — X о ИП7 X + 2 X L1 05 л ИПО X 2 X L0 20 ИП7 х3 ех X V С/П Инструкция: х = РУ, п = РХ В/О С/П РХ= = (х); t а (5 4- 5п) с. Примеры-. cpj (1) = 0,64428838 (/ а 10 с), гр2 (1) = = 0,32214419 (/ а 15 с), <р3 (1) = —0,26302963 (I а 20 с). Программа 182. Вычисление коэффициентов ортого- нальных многочленов Лежандра Рп W 112 1 П6 П8 + ПЗ 2 П7 X 3 — П5 П4 ИП8 X ИП6 П8 КИП6 ИП4 2 — х<0 12 ИП8 С/П кипз ИПЗ кипз ИПЗ X ИП8 X ИП7 — ИП5 /~/ П8 ИП7 2 + П7 ИП5 2 — П5 БП 24 Инструкция: п = РХ В/О С/П РХ = ап С/П РХ — = ая^ С/П РХ = ап~4 ... С/П РХ = 0; t < 30 с. Пример} Р7 (х) = 26,8125 х7 — 43,3125л5 + 19,6875л3— — 2,1875 х. 180
Программа 183. Вычисление многочленов Лежандра РДх) ПО ~ П9 Сх ПЗ 1 ИП8 ИП5 х ~ П8 ИП5 КИП5 ИП5 + ИП9 х X - /—/ ИП5 4- L0 06 С/П Инструкция: х = PY, п = РХ В/О С/П РХ = Р„(х); t» 6п с. Примеры'. Р5 (0,5) ~ —0,4375 (t ж 20 с), Р7 (1) = 1 (/ л? « 50 с). Программа 184. Вычисление коэффициентов ортогональ- ных многочленов Эрмита Н,г (х) П7 1 П8 + ПО 2 П9 ИП8 С/П КИПО ИПО КИПО -> ИПО X ИП8 х ИП9 /— / ~ П8 ИП9 2 + П9 БП 07 Инструкция: п = РХ В/О С/П РХ — ап С/П РХ = = ап_2 С/П РХ = ап-4 С/П РХ =0; 1x7 с Пример-. Н19 (х) = х10 — 45х3 + 630хГ1 — 3150г1 + + 4725х2 — 945. Программа 185. Вычисление многочленов Эрмита Н„ (х) П8 ПО П9 I ~ ИПО ИП8 - х <> ИП9 х + 2 х L0 05 С/П Инструкция: х — PY, п =РХ В/О С/П РХ — Н„(х); ~ Пример: Н3 (I) = 4((« 14 с); Н4 (3) = 876 (t ж 16 с). Программа 186. Вычисление коэффициентов ортогональ- ных многочленов Лагерра Ln (х) П8 Сх П4 ИП8 л х cos П9 С/П ИП4 ИП8 — х2 ИП9 х КИП4 -> ИП4 ч- /—/ БП 07 Инструкция: установить переключатель Р-ГРД-Г в положение Р; п = РХ В'С) С/П РХ = ап С/П РХ = = ... С/П РХ =0; / ^5 с. Пример'. Ь7 (х) = —х7 4- 49хй — 882г5 + 7350г4 — — 29400х3 + 52920ха — 35280х -Ь 5040. Программа 187. Вычисление ортогональных многочле- нов Лагерра Ln (v) ПО 1 П6 ИП6 КИП6 ИПО X3 + X X /—/ 1 + L0 04 С/П Инструкция: х = PY, п — РХ В/О С/П РХ — “ Ln (х). Пример: Ls (0,5) = —0,1458334 (t « 13 с). 181
Программа 188. Вычисление коэффициентов ортогональ- ных многочленов Чебышева Тп (х) при и « С 2 П9 2 П7 П5 — ПЗ ИП7 2 X П7 1 П8 КИПЗ ИПЗ х=0 06 ИП7 С/П /-/ ИП9 X 4 4- П6 ИП8 X t 1 вп 7 —р Вх — С/П ИП6 ИП5 П7 1 П8 КИП5 ИП5 П4 2 — ПО ЙП4 ИП9 — ИП8 X Г18 КИП4 КИПО ИПО х=0 45 ИП7 БП 21 Инструкция: РХ В/О С/П РХ = ап С/П РХ = = Он—? С/П РХ = й.п—4 . . . С/П РХ = 0‘, /X Зи. Пример: Tt(i (х) = 512х10 — 1280х8 + 1 120а;6 — 400х4 + + 50ла — 1. Программа 189. Вычисление корней х0(- и абсцисс x'maxi и Xmini экстремумов Kmas=l; Tmin =—I многочленов Чебышева Тп (л) при п > 2 П7 Сх П4 П5 л ИП7 П8 2 X ИП4 X cos 1 С/П ПП 33 ИП4 2 X 1 + БП ИП8 X СОЗ 1 /-/ С/П КИП4 ПП 33 04 ИП5 2 х 1 + ИП8 X 2 cos КИП5 - > 0 С/П В/О Инструкция: установить переключатель Р-ГРД-Г в положение Р; п = РХ В/О С/П РХ — 1, PY = 1 С/П РХ — = 0, PY -= х01 С/П РХ = — 1, PY = xmilu С/П РХ = 0, РК=х02 С/П РХ = 1, PY = х„^ ... С/П ЛХ = ±1, PY ” Хтах ИЛИ 6 С). Пример: для п = 7 получим xm?xi = 11 х01 ~ 0,97492792; Xmjnt = 0,90096889; ха2 = 0,78183149; х|1К1х2 = 0,6234881; л03 = 0,4338838; zml,T9 = 0,22252095; л04 = 0; = = —0,22520 95; ... ; х07 =—0,97492792; xmin. =—1. зло. математическая статистика Программа 190. Линейное сглаживание последователь- ности чисел 7| по трем очередным членам последовательно- сти Х( П7 1—4- П8 2 X <4 П9 5 X + ИП7 6 —— ИП7 ИП8 + ИП9 + 3 С/П П6 ЙП8 П7 ИП9 П8 ИП6 П9 БП 14 ИП9 5 х ИП8 2 X ИП7 -L 6 4- С/П Инструкция: хг = PZ, х2 = PY, х3 = РХ В/О С/П PzY = x2, PY = ху, xt — РХ С/П РХ = х3 ... Xi = PX 182
С/П РХ = Xi-i ... хп = РХ С/П РХ = хп-1 БП 3 1 С/П РХ = хп. Пример' для xi = 12,1; 12,3; 11,9; 12; 12,2; 11,8; 12,1; 11,7; 12; 12,4 получим хс = 12,2; 12,1; 12,333333; 12,1; 12; 12,033333; 11,866666; 11,933333: 12,033333, 12,383333 Программа 191. Линейное сглаживание последователь- ности чисел х, по пяти очередным членам последователь- ности Xi П6 Сх С/П П7 Сх С/П П8 Сх С/П П9 ПП 38 ПП 55 С/П ИП6 П5 ИП7 П6 + ИП8 П7 + ИП9 П8 + *+ П9 + 5 4- БП 14 ПП 55 ПП 38 С/П ИП9 4 X ИП8 3 X + ИП7 2 X + ИП6 4-10 4- В/0 ИП9 3 х ИП8 2 X -I- ИП7 4- ЙП6 — 5 4- В/о Инструкция: хх — РХ В О С/П РХ = 0, х2 = РХ С/П РХ= 0, х3= РХ С/П РХ = О, Xj = РХ С/П РХ = = Xj, PY = хг, х5 = РХ С/П РХ = х3 ... Xi = РХ С/П РХ = ... хп = РХ С/П РХ = РХ = БП 3 3 С П РХ = хп-ь РУ — Хп. Пример: для последовательности х( из примера к про- грамме 171 =12; 12,04; 12,1; 12,04; 11,92; 11,94; 12,02; 12.08; 12,22. Программа 192. Вычисление текущих оценок среднего ши и дисперсии сту последовательности случайных чисел П7 х2 П8 1 П4 ИП7 С/П ИП7 — П9 КИП4 -ч- ИП4 4- ИП7 4- П7 ИП9 х2 ИП4 -4 ИП4 2 — ИП8 х ИП4 1 — 4- 4- П8 ИП7 БП 06 Инструкция: — РХ В/О С/П х2 — РХ С/П . , , .. . х, - РХ С/П РХ = m,ir PY = ст2, Р4 = i (t ж 8 с) ...; текущая оценка дисперсии отличается от оценки второго центрального момента множителем i/(i— 1) и может ока- заться смещенной при распределениях, отличающихся от нормального. Пример: для хс = 1,01; 1,02; 1,03; 1,04; 1,05 соответ- ственно получим ти — 1,01; 1,015; 1,02; 1,025; 1,03 и 6^ = = 1: 0,00005; 0,0001; 0,00016666667; 0,00025. Программа 193. Вычисление оценок среднего mL и дис- персии ст2 выборки п случайных чисел х Сх П8 П9 П6 С/П х2 Вх ИП8 4- П8 о ИП9 4- П9 КИП6 ИП6 БП 04 ИП8 Г1П6 4- П7 ИП9 ИП6 4- ИП7 х2 — БП 04 183
Инструкци я: В/О С/П РХ = 0, х2 = РХ С/П РХ=з = 1, х2—РХ С/П РЛ=2... хп=РХ С/П РХ = п БП 1 8 С/П РХ = о2, PY = тг; для продолжения вычис- лений х„+1 = РХ С/П РХ = п + 1 .. . Пример: для выборки х^= 1,01; 1,02; 1,03; 1,04; 1,05 получим о2 = 0,0002; = 1,03. Программа 194. Вычисление оценок первых начальных nil, т2, т3, mis центральных М2 = Л43, ЛД моментов, коэффициентов у3 асимметрии и у4 эксцесса Сх + ИПЗ по ш П2 ПЗ П4 С/П f + П1 X ИП2 + t X2 П2 ИПО X3 КИП4 по X2 ИП1 X2 + ПЗ ИП4 БП 06 ИПО ИП4 П5 ИП1 ИП4 П6 ИП5 X2 — П9 ЙП2 ИП4 —L- П7 ЙП9 3 X ИП5 X2 — ИП5 X ПА ИП9 t X2 X у" — ПС ИПЗ ИП4 П8 ИП9 6 X ИП5 Xs Ч- ИП5 X ЙПА 4 X + ПД ИП5 ИП5 X БП 06 ПВ ИП9 X2 — 3 Инструкция: В/О С/П РХ = 0, хг = РХ С/П РХ = = 1, х2=РХ С/П РХ =2 ... хп=РХ С/П РХ—п (/^7 с) БП 3 3 С/П (t да 20 с) РХ = Р5 = Р6 = тг, Р7 = т3, Р8 = fhlt Р9 = Л42 = б2, РА = М3, РВ = PC = ^3> рв = у4; для продолжения вычислений xn^i = РХ С/П РХ = п + 1 . .. Пример: для выборки х,= 1,01; 1,02; 1,03; 1,04; 1,05 получим ml = l,03; /7za= 1,0611; /7?3 = 1,093345; = = 1,1267819; = б3 = 0,0002; ЛД = 2,185454; Af = = —9,00407; у3 = 772674,67; у4= —2,2510175- 10s Программа 195. Оценка коэффициента корреляции гху, корреляционного момента Rxy, средних mix, дисперсий о2, ст2 совместной выборки случайных чисел yit х, Сх ПО П1 П2 ПЗ П4 П5 с/п ПС ПД X ИПО + по ИПС ИП1 + П1 ИПС X2 ИП2 + П2 ипд ИПЗ + ПЗ ипд X2 ИП4 + П4 КИП5 ИП5 БП 07 ИПО ИП5 ИП1 ИП5 — П7 ИПЗ ИП5 -* П8 — П9 ИП2 ЙП5 — ИП7 X2 ПА ИП4 ИП5 ИП8 X3 ПВ X У' БП 07 Инструкция: В/О С/П РХ = 0, у. = PY, х, = РХ С/П РХ = 1, у2 = РУ, х2=РХ С/П РХ = 2 ... ип = =- РУ, хп = РХ СП РХ = п (/да 10 с) БП 3 7 С/П "(/« 184
№ 10 с) РХ = rxy, РТ ---- th\x, Р8 = т,у, Р9 = Rxy, РА = ст2, РВ = ст2; для продолжения вычислений уп+х — PY, xn+i = = РХ С/П РХ = п + 1 ... Пример: для совместной выборки у,-, х1 = (1; 1,01), (2; 1,02), (3; 1,03), (4; 1,04), (5; 1,05) получим гху — —46; Rxy = —0,92; тХх = 1,03; тХу = 3; ст2 = 0,0002; о2 = 2. Программа 196. Вычисление оценок тХх, т1у, ст2, ст2, коэффициентов гху корреляции и $х/у, ру/х, тх(0), ту (0) линейной регрессии Сх по П1 П2 ПЗ П4 П5 С/П ПС ПД X ИПО ПО ИПС иш + П1 ИПС № ИП2 4- П2 ИПД ИПЗ + ПЗ ипд X2 ИП4 + П4 КИП5 ИП5 БП 07 ИПО ИП5 ИП1 ИП5 -Д- П7 — ИПЗ ИП5 — П8 — ИП2 ИП5 — ИП7 X2 — ПА ЙП4 ИП5 —L- ИП8 Xs . ПВ X и — П9 ИПА йпв -— ПЕ X ПС ИП9 ИПЕ -i— ПД ИП8 йпд ИП7 X — ИП7 ИПС ИП8 X — С/П Инструкция: В/О С/П РХ = 0, ул = PY, х, = РХ С/П (Г«10с) РХ = 1, у2 = PY, х.2 = РХ С/П РХ = 2... . .. уп = PY, хп = РХ С/П РХ = п БП 3 7 С/П (t 20с) PX = mx(0), PY — my(0), Р7 = тХх, РЗ = тХу, Р9~гху, РА = ст2; РВ = ст2, PC = $х/у, PD = pWjt. Пример: для совмещенной выборки из примера к про- грамме 195 получим тЛ(0) = 2,41; тД0) = 4741; тХх = = 1,03; тХу — 3; гху — —46; ст2 = 0,0002; ст2 = 2; $х/у — = —0,46; IV = —4600. Программа 197. Вычисление оценок тх и о2 выборки случайной величины х для заданного доверительного ин- тервала среднего П4 П5 П6 «-> П8 с/п П7 X3 П9 I ПЗ С/П ИП7 —1—' t ИПЗ П2 1 + ПЗ Вх ИПЗ 2 — ИП2 ИП9 X П9 о ИП7 + П7 <-> ЙП5 ИП2 ИП8 — ИП2 + — х>0 13 ИП5 X П1 КП8 — х<0 13 ]/ БП Инсгпрукция: для выбранной доверительной вероятности V по данным табл. 16 ввести а = РТ, Р = PZ, t = PY, предельная погрешность 6m = | l/mj = РХ В. О С/П у РХ = 6,„, xt = РХ С/П РХ = 1, хг= РХ С/П РХ = 2... j - хп = РХ С/П РХ = ЕГГОГ, РТ = «j, Pi = 6Д0В. 18о
Iв. Аппроксимирующие коэффициенты для квантилей распределения Стьюдента при заданной доверительной вероятности Р р о,8 0,9 0,95 0,98 0,99 0,999 1 1,282 1,645 1,960 2,326 2,576 3,291 а 1,282 1,851 2,387 3,212 3,779 5,93S 6 0,134 0,928 1,260 2,935 3,867 10,81 Пример', для Р = 0,95; t == 1,96; а = 2,387; £ = 1,261 6т = 0,01 при вводе массива 1,05; 1,08; 1,03; 1,06; 0,98; 1,01; 1,03; 0,99; 1,03; 1,02; 1,05; 1,02; 1,04; 1,03; 1,06; 1,02; 1,02; 1,01; 1,04; 1,03; 1,04; 1,02; 1,05 получим тх = = 1,0308696; о2 = 5,0830028 • Ю"4; 6Д0В = 0,00968 < 6т. Программа 198. Вычисление квантиля нормального рас- пределения / (р) с погрешностью не более 10 % 1 1 — 2^-4- № in К 4 In V — П8 0 , 4 8 7 X 1 , 4 7 + ИП8 X 0 , 4 8 2 ип; 8x1 + - С/П И н с т р РХ = t (р). у к ц и я: р (х) = РХ В/О С/П (t* а 12 с) Пример! t (0,5) = = 0,67425355. Программа 199. Вычисление вероятности Р (п, т, р) по- явления т раз события в серии из п испытаний при вероят- ности р появления события в одном испытании и вероятно- сти Q (п, т, р) появления этого события не более т рав в п испытаниях (биномиальное распределение) П7 П8 « П9 ИП7 1/х 1 — П5 1/х 1 + 1/х In ИП9 х е* П6 П4 ИПЗ 1 + ПО 1 БП 44 ИП9 1 + ИПО — ИПО -4- ИП5 4- X Вх ИП4 х П4 -> I + L0 27 ИП6 х ИП4 С/П Инструкция: п = PZ, т — РУ, р = РХ В'О С/П РХ = Р4 —Р (л, m, р), PY = Q (п, т, р) = Р5\ i 7 (т 4- I) с. Пример! Р (12; 2; 1/6) = 0,29609336; Q (12; 2; 1/6) = = 0,6774258 (/ « 25 с). Программа 200. Вычисление вероятности Р (tn, 1) ра- венства целому неотрицательному т случайной величины с распределением Пуассона и вероятности Q (т, А) неравен- ства х < т П8 ~ I + ПО ИП8 /—/ еi * * * * * * * * х П9 + БП 22 ИП8 ИПО - х Вх ИП9 х П9 + L0 12 ИП9 С/П 186
г : Инструкция: т = PY, к — РХ В/О С/П РХ = Р (тп, X), PY = Q (in, X,); t та (Ьт 4- 5) с. Пример-. Р(2\ 0,5) =0,07581633; <?(2; 0,5)=0,98561229. Программа 201. Вычисление частот попадания слу- чайной величины в k = 10 классовых интервалов отрезка [Лпгп» ^тах] ИПС — ИПД х 1 4- ПЕ КИПЕ 1 + КПЕ С/П БП 00 ПС — 1 0 4- ПД 1 1 ПО Сх КПО ИПО х=0 25 БП И Инструкция: xmin = PY, х1ГГ1Х = РХ БП 1 4 С/П РХ =0 (Z tv 15 с), Л| = РХ С/П х.-, — РХ С/П ... х„ = --= РХ С/П (/да 4 с) Р1 = 41, Р2 = 421 .... Р9 = 1|’9, Пример-, для Хт = 2; 1,4; 1,8; 1,65; 1,96; 2,1; 1,35; 1.72; 2,2; 2,53; 1,3; 2,5 при xmin = 1,3; хтэгс = 2,6 полу- чим ipi = 3; 42 = 0; ч|эа = 1; -ф4 = 2; -ф5 = 0; 4а = 2; 4- = — 2; ф.ч = 0; ifa 0’ Фю = 2. Программа 202. Вычисление частот ip, попадания слу- чайной величины в k < 12 классовых интервалов отрезка [Xniln. Хтрх] ИПС — X I |- ПЕ КИПЕ I + КПЕ С/П БП 00 ПЕ о ПС — ИПЕ ~ 4- ПД ИПЕ I -J- ПО Сх КПО ИПО х = 0 28 ИПД f t БП 12 И н г т р у к п и я: xmin = PZ, = PY, k = PX БП 1 5 C/П PX = fe/(rmax - xmin) (t да 16 c), Xi = PX C/П PX = = 6/(Xmix — Xmin) (1 да5с)..л = М C/П PX = fe/(xmax— - *min). Pi = 4’1, P2 = Ф2, P3 = Фз.= Ф*1 ДЛЯ исправления ошибок при вводе х; использовать оператор Сх, чтобы не изменить содержимого остальных регистров операционного стека. Для проверки программы можно использовать данные примера к программе 201. Программа 203. Вычисление частот ipf попадания слу- чайной величины х в k = 20 классовых интервалов отрезка l-tnjn, Xmaxl ИПС - ИПД 4- 1 + ПВ (х) 2 1/х — х<0 19 КИПВ 1 ВП 4 БП 21 КИПВ I 4 КПВ С/П БП 00 « ПС — 1 0 ПД 1 1 ПО Сх КПО ИПО х=0 36 БП 23 137
Инструкция: хты=РК, xmax = PX БП 2 6 С/П PX = 0 (t « 16 с), хг = РХ С/П (I = 6 с), х2 = РХ С/П ... ... хп = РХ С/П Р1 = 104 + 4г. Р2 = 43 Ю4 + . ... Р9 =4П 1О4 + 41S, РА =41Э 101+42о (Pi =42,-1Ю4+ + 4zt)< Пример-, для выборки из примера к программе 183 по- лучим 4l = 2; 42 = 1; 4з = 0; 44 = 0, 4Д = 0; фв = 1; 4? = 1; 48 = 1; 49 = 0; 41() = 0; 4П = 2; ф12 = 0; 413 = 1; 411 = 1,41?. = 0; ф1в = 0; 417 ~ О’, 4ib= О’, 41э ~ 2; ф2о = 0. Программа 204. Проверка гипотезы о нормальном рас- пределении случайной величины по выборке объема п, ко- эффициентам уа асиметрии и у4 эксцесса ;х. П7 |х[ П8 -> П9 9 П2 ИП9 1 — 1 ИП9 ~F 6 х ИП9 3 ПЗ + -4- У КИП2 4- С/П ИП9 4 X ИП9 ИПЗ — L3 29 х2 — 5 БП 13 Инструкция: у3 = PZ, у^ = РУ, п=РХ В/О С/П РХ = cfVs/| у31 С/П РХ = oVj/j yj (/ я? 12 с); гипотеза непро- тиворечива, если результаты больше единицы. Пример', для у3 = 0,34; у4 =0,18; л =9 получим uvJ\ Уз I = 1,8601633; trV1/| у,; = 5,1031036 (пример приведен для проверки программы, так как объем выборки мал для обоснованных выводов). Программа 205. Вычисление статистики у для провер- ки по критерию X2 закона распределения р (х) по частотам 4,- попадания случайной величины х с выборкой объема п в отрезок [jCmin, xmaxl, разбитый па k классовых интерва- лов с нижними границами хн(- П7 П6 Сх П5 ИП6 ИПЗ — 4 П4 ИП8 ПП 57 ПП 53 4 пп 50 2 ПП 50 4 ПП 50 ИПЗ 4- ИП4 X 3 ИП9 X t ИП7 — X2 <-> —— ИП5 ! П5 ИП6 П8 С/П П7 П6 БП 06 X ИПЗ + ПЗ ИПЗ ИП4 + ПЗ *.. в/о И н с т р у кии я: многоточие в программе заменить фрагментом вычисления р (х) при х = Р8 с использованием регистров 0, ... , 3, А, ... , £; xmitl = Р8, п= Р9, 0 = = РЗ, хН9 = PY, 41 = РХ В/О С/П xll3 - РУ, 42 = РХ С/П . .. хп1ах = РУ, ф* = РХ С/П РХ = у (время интегри- рования зависит от числа и ширины классовых интервалов). Пример: для р(х) =]/Л2ло xmin = —2; и = = 100; хЕ]2=2; 4t=3; х„з = 3; ф3 = 9; х„4 = 3,5; ф8=30; х1(5 = 4; ф4 = 45; х||5 = 5; 45 = 9; хтах = 9; 4в = 4 получим у = 91,28259 (/» 1 мин). 188
Программа 206. Генерирование символов £ (0; 1) двух исходов случайного события с вероятностью р (I) = = 1 - р (0)< 1 П9 СЧ — ИП9 х<0 09 1 БП 10 Сх С/П В/О Инструкция: р(1)=РХ В/О С/П РХ = хг С/П РХ = х2 С/П РХ ~ х3 ... Пример! для р (0,5) можно получить xt = 1; 0; 1; 0; 0; ... Программа 207. Генерирование номеров й£(1,2, .... k — 1) равновероятных k < 1000 исходов случайного со- бытия П8 ИП7 л + е’ (х) П7 ИП8 х [х] 1 + С/П В/0 Инструкция: х0=Р7, k — РХ В/О С/П РХ = хг С/П (/ к 4 с) РХ = х2 С/П РХ = х3 ... Пример', для Xf, = 0,5; k = 6 получим Xi = I; 6; 1; 2; 4; 6; 3; 3; 6; 5; ...; для ха — 0,5; k= 100 получим х{= 16; 90; 9; 18; 55; 88; 46; 45; 95; 81; ... Программа 208. Генерирование совместной выборки квазислучайных чисел с равномерным распределением в интервале (0; о) ПП 09 П9 ПП 09 ИП9 С/П БП 00 ИП7 л 4- ех (х) П7 ИП8 х [х] В/0 Инструкция: х0=Р7, а=Р8 В/О С/П (/«12 с) РХ = ^х1г РУ =81 С'П РХ=х2, РУ = у2 С/П РХ = х3, РУ = у3 • • • Пример', для х0 = 1; а = 100 получим xt, ty = (90; 8), (15; 93), (13; 44), (95; 90), (42; 47), (5; 32), (9; 57), (1; 39)... Программа 209. Генерирование неповторяющихся целых чисел х£ с равномерным распределением в интервале (0; Ь) П7 ИП7 ИПА х П8 f ИПВ ~ [х] ИПВ X — С/П БП 00 Инструкция: а = РА, b = РВ, хй = РХ В/О С/П (/«5 с) РХ = Х1 С/П РХ = х3 С/П РХ= = х3 для выборок из 10, 30 и 100 квазислучайных чи- сел принять соответственно а ~ 7, Ь~ 11; а = 17, Ь= 31; а = 31, b = 61; для больших массивов выбрать из простых чисел b = 2027, 5087,10079, ... и а = b — 3* « Ь/2, где с — положительное целое число Пример', для а = 1298; b = 2027; х0 = 1013 получим Xi= 1378; 830; 1003; 560; 1214; 793; 1025; 1170; 437; ... 189
Программа 210. Генерирование квазислучайных чисел xt с нормальным распределением, дисперсией ст2 и математи- ческим ожиданием т П7 ++ П8 1/х П6 ИП6 П9 СЧ П6 1/х In ИП8 х X х V ИП9 2 х л х sin х ИП7 + С/П БП 05 Инструкция: установить переключатель Р-ГРД-Г в положение Р; ст2 = PY, т — РХ В/О С/П РХ = хг С/П (/ ж 10 с) РХ = х2 ... Пример: при о3 = 1; т = 2 можем получить xt = 2; 1,1491561; 2,526954; 1,8178377; 1,8951292; 2,1445571;... Программа 211. Генерирование квазислучайных чисел л, с распределением Релея СЧ In 2 х /—/ V С/П БП 00 Инструкция: В/О С/П РХ = С/П (/ « 4 с) РХ~ = л-3 С/П ... Пример: можем получить хг = 1,3462351; 1,1107344; 1,3688063; 1,2366428; ... 3.11. АНАЛИТИЧЕСКАЯ ГЕОМЕТРИЯ Программа 212. Вычисление сторон а, &, с и проти- волежащих углов а, Р, у треугольника (рис. 15) по трем известным величинам ИПС ИПВ ПП 15 ПЗ ИПВ ИПС пп 15 П2 ИПЗ ПП 32 П1 С/П П7 х2 ИПА X3 + х3 — 2 — ИПА 4- ИП7 cos'1 В/0 ИП1 + cos /-/ cos'1 В/0 ИПА X2 ИПВ х2 + ИПА ИПВ X 2 х ИПЗ cos X - V ПС БП 05 ИПВ ИП1 sin X ИПА 4- sin'1 П2 ПП 31 ПЗ ИПЗ sin ИПА х ИП1 sin -г ПС С/П Сх ИП2 ПП 32 БП 62 ИП2 ПП 31 ПЗ ИПА ИП1 sin — ИП2 sin х ПВ БП 66 ИП2 ИПЗ ПП 32 П1 БП 85 Инструкп и я! установить переключатель Р-ГРД-Г в нужное положение; известные значения а, Ь, с, а, |3 или у ввести соответственно в регистры А, В, С, 1,2 или 3; нажать клавиши: В/О С/П для заданных а, Ь,с (/ 20 с), БП 3 7 СП для заданных а, Ь, у (iss 20 с), БП 5 5 С/П для заданных а, Ь, а (/«15 с; первое решение) С/П (/ « 15 с; второе решение), БП 8 1 С/П для заданных а, а, р (/« « 15 с), БП 9 5 С/П для заданных а, р, у (/ « 15 с); вы- 190
численные значения а, Ь, с, а, 0 или у хранятся соответ- ственно в регистрах А, В, С, 1,2 или 3. Примеры1, для известных значений а = b = с — 10 получим а = 59,999998°; р = у = 59,999999°; для а = = Ь — 10 и у — 60° получим с = 10; а = 59,999998°; Р — = 59,999999°; для а = b = 10 и а — 60° получим с = = 9,9999989; Р = 60,000005°; у = 59,999989° (первое ре- шение) и с = 0; р = 120°; у = 0 (второе решение); для а — 10; а = р = 60° получим b = 9,9999992; с = 9,9999998; © у = 59,999998°; для а = 10; Z\ Р = у = 60° получим b = с = * / \г = 10; а = 59,999998°. У X Программа 213. Вычисление /у сторон а, Ь, с и противолежа- „ /<______________ щпх углов а, р, у треугольника ©а © (рис. 15) по координатам х; и у, его вершин Рнс‘ 15_ ПО П1 С/П П2 ИПО - П7 <> ПЗ ИП1 — П4 С/П ! ИПО П8 ИП2 — П9 <-> t ИП1 — П5 ипз -— 116 ИП8 ИП9 пп 52 С/П ИП4 ИП5 ИП7 ИП8 пп 52 С/П ИП4 /-/ ИП6 ИП7 /-/ ИП9 ПП 52 С/П по П1 X П2 ПЗ ПА X ИП2 + ИПО № ИП1 X3 + У — ИПЗ X2 ИПА X2 + У ПЕ cos 1 ИПЕ В/0 Инструкция: установить переключатель Р-ГРД-Г в нужное положение; у, = PY, х, = РХ В/О С/П у2 = PY, х, = РХ С/П у., = PY, Хз - РХ С/П (/«17 с) РХ = с, PY = а С/П (/'« 15 с) РХ = a, PY = Р С/П РХ = Ь, PY = у. Пример: дтя = 1; хг = 1; у2 = 3; ха = 1; = 1; х.{ — 3 получим а - 2, р = 45°, с = 2, а — 90°, b = - 2,8284271; у = 45°. Программа 214, Перенос на расстояния у0 и х0 и поворот на угол а осей прямоугольных координат х и у (рис. 16). П8 П9 П7 С/П ИП8 — П5 ИП9 — П6 ИП7 cos х ИП5 ИП7 sin X — ИП5 ИП7 cos х ИП6 ИП7 sin X + БП 05 Инструкция: установить переключатель Р-ГРД-Г в нужное положение; а = PZ, у0 = PY, х0 = РХ В/О С/П и, - PY, х, = РХ С/П РХ = х), РУ = у1( = РУ, х2 = = РХ С/П РХ = х', РУ - у/ ... (/ « 9 с). J91
Пример: при а = 20°, ха — 1, у0 = 2 для xz = 4, уг — 5 получим х, — 3,8451383; р; = 1,7930175. Программа 215. Преобразование прямоугольных коор- динат х, у в полярные координаты р, <р (рис. 17). П8 ~ П7 | Х2 ИП8 х2 4- V П9 4- cos ИП8 х<0 18 -> /—/ t -> ИП9 С/П БП 00 Инструкция: установить переключатель Р-ГРД-Г в нужное положение; yY = PY, xt = РХ В/О С/П PX=plt РУ = «р, {t « 5 с), у, = РУ, х2 - РХ С/П РХ = ра, РУ^ = Фа -. Пример', для у — —3; х = 2,5 получим р = 3,9051248; Ф = 140,19442° = 2,4468542 рад. Программа 216. Преобразование полярных координат р, Ф в прямоугольные х, у (рис. 17) П7 о | ИП7 cos х <-> ИП7 sin х С/П БП 00 Инструкция: установить переключатель Р-ГРД-Г в нужное положение; р, = РУ, ф£ = РХ В/О С/П РХ = х2, РУ = У1, рг = РУ, <р3 - РХ С/П РХ - х2, PY = у2 {1^ 4 с) ... Пример', для pj— 3,9; tpt = 2,45 рад получим х — 2,487282; у = —3,003902; для р2 = 3,9051248; ф2 = 2,4468542 рад получим х = 2,5000005; у — —2,9999997. Программа 217. Вычисление коэффициентов уравнений А.х 4- By + С — 0 и у= ах -Р Ь, угла а наклона к оси х, точек х (0), у (0) пересечения координатных осей прямой, заданной координатами (х1( уг) и (х3, у2) двух точек П8 П5 П7 о П4 ИП7 ИПЗ — ПЛ /—/ х ИП5 ИП4 — ПВ ИП7 х — ПС /—/ j ИПА ч- ПЗ о ИПВ ~ П2 ИПА /—/ ИПВ ч- П1 tg'1 С/П 192
Инструкция: установить переключатель Р-ГРД-Г в нужное положение; xt = РТ, yr — PZ, х2 = PY, у, — ^РХ В/О С/П (I 12 с) РХ = а, РА = А, РВ = В, PC = С, Pl - а, Р2 ~ Ь — у (0), РЗ = к (0). Пример', для прямой, проходящей через точки (2; 3) и (4; 5) получим: а = 45,000002°; А = —2; В — 2; С = —2; а - 1; b = у (0) = 1; х (0) = —1. Программа 218. Приведение к нормальному виду х cosp + у sin р — р = 0 и вычисление полярных расстояния р и угла (3 для уравнения прямой Ах + By -J- С = 0 ПС ПВ х2 <-> ПА х2 + у ИПС /—/ ЗН х П4 ИПВ ИП4 4- П8 ИПА ИП4 4- П7 cos-1 П9 ИПС ИП4 -4- | х! С/П Инструкция: установить переключатель Р-ГРД-Г в нужное положение; А = PZ, В = PY, С = РХ В/О С/П (t w 10 с) РХ = р, PY = Р9= 0, Р7 = cos 0, Р8 = = sin 0. Пример: для уравнения прямой Зх— 4у + 10 = 0 по- ЛуЧИ; п м р = 2; 0 = 126,8698°; cos р = —0,6; sin р = = 0,8. рограмма 219. Вычисление к оординат Х1 (0), У! (0) и Х2 (0), у2 (0) пересечения осей и координат х0, у0 пере- сечения между собой прямых А2х 4* В2 у + Cj = 0,Д -Г В2у + С2 = 0 и угла 0 между ними 2 х + П9 /__/ П8 4- П7 С/П П6 /-/ П5 4- П4 ИП7 — ПЗ ИП9 ИП8 4- ПВ ИП6 ИП5 -4 ПД — ИПЗ 4- П1 ИП7 X ИПВ + П2 ИПВ /—/ ИП7 -4 ПА ИПД /-/ ИП4 tg'1 4- ПС ИПЗ ИП4 ИП7 С/П X 1 + И н с т р у к ц и я: At = PZ, Вг = PY, Сг = РХ В/О СП (I « 3 с) Аг = PZ, В2 = PY, С2 = РХ С/П (/ « 12 с) РХ = = 0, Р1 = х0, Р2 = у0, РА = Х1 (0), РВ = У1 (0), PC = = хД0), РД= у2(0). Пример: для 4х — 2у — 6 = 0 и —Зх — у + 2 = О получим 0 = 45°; xn — 1; у0 = —1; xt (0) = 1,5; уг (0) = = —3; х2 (0) = 0,66666666; у2 (0) = 2. Программа 220. Вычисление координат центра л'о, уаи ра- диуса R окружности (х — л'о)2 + (у — = R2, задан* ной уравнением Пл2 Д- Вх + А у1 + Су -f- D = 0 ПД ПС -*• ПВ О ПА 2 X 1 /X П9 /—/ t ИПС х П8 ИПВ X П7 ИПВ ха ИПС х2 -Ь ИПА ипд х 4 X "—' х<0 34 у ИП9 х2 X у С/П 193
Инструкция: А = РТ, В = PZ, С = PY, D = = РХ В/0 С/П (I 10 с) РХ= /?, Р7 = х0> Р8 = ;/ч (если уравнение не описывает окружность, то высвечива- ется символ ЕГГОГ). Пример', для уравнения 5х3 — 10х 4- 5у2 + 20у — — 20 -= 0 получим R = 3; х0 = 1; уа = 2. Программа 221. Определение типа линии второго по- рядка с уравнением + 2Вху + Су2 + 2Dx 4- 2Еу + + F — 0, вычисление инвариантов 6 = АС — В2, А = = б/7 4- 2BDE — АЕ2 — CD2, координат х0, уа центра для центральных линий и коэффициентов уравнения у — ах -\~ + b ± (сх + d) для распадающихся прямых [I] ИПА ИПС X ИПВ X2 — П8 ИПО X ИПВ ИПД х ИПА ИПЕ X — П1 ИПЕ х + ипд ипс X ИПВ ИПЕ х — П2 ипд X — ИПЗ С/П ИП1 ИПЗ 4- ИП2 ИП8 С/П ИПЕ X2 ИПС ИПО X - Г ИПС — П4 ИПВ X2 ИПА ИПС х - V ПЗ ЙПЕ /-/ ИПС 4- П2 ИПВ /-/ ИПС 4- П1 С/П Инструкция: (А = РА, В = РВ, С = PC, D = РД, Е = РЕ, F — РО) В/О С/П (I да 12 с) РХ - Р8 = 6, PY = = Д (если Д = 0, то линия распадается на две прямые; если Д Ф 0, то линия является эллипсом при 6 > 0, ги- перболой при 6 < 0 и параболой при 6 = 0) С/П (/ да 3 с) РХ = х$, PY = у3 С/П (I 12 с) РХ = Pt = a, PY = = Р2 — Ь, РЗ = с, Р4 = d (для нецентральных линий вмес- то координат центра высвечивается ЕГГОГ). Пример', для уравнения х2 4- 2ху + 2х у2, + у =0 получим 6=0; Д = —0.25 < 0 (парабола); для уравне- ния 8х2 + 24ху + у2 — 56х 4- 18у — 55 = 0 получим 6 = = —136 <0; Д = 0 (гипербола), выродившаяся в пару пересекающихся прямых с уравнением у = —(12х + 9) + ± 11,661903 (х 4- 1); для уравнения 2х2— 4ху 4- Бу2— — х А- Бу — 4 = 0 получим 6 = 6 > 0; Д^0 (эллипс) с центром х0 = 0,41666666; щ = —0,66666666. Программа 222. Вычисление смешанного произведения векторов щ, а2 и а3, заданных координатами [х,, г/,, г,), объема параллелепипеда, построенного на этих векторах, векторного произведения х = [/t2, m12) и оценка компланарности векторов аг, а, и а3 ИПЗ ИП6 х ИП9 ИП5 X — ПА ИП1 X ИП9 ИП4 х ИП7 ИП6 х — ПВ ИП2 X + ИП7 ИП5 х ИП8 ИП4 х — ПС ИПЗ X 4- С/П
Инструкция: (х} = Р7, у} = Р8, z} — Р9, хй = — Р4, у2 = Р5, z2 = Рб, х3 = PJ, у3 = Р2, г3 ' РЗ) В/0 С/П (/ « 15 с) РХ = aia2a3 (модуль смешанного произведения равен объему параллелепипеда); если а1а2а3 = = 0, то векторы компланарны, если а}а2а3 > 0, то они образуют правую, а при fijO2a3 <0 — левую систему; РА = = /12! РВ = //212, ВС — /212- Пример'; для векторов а3 = [1, 2, 3], а2 = [—I, 3, 4], й3 “(2, 5, 2J получим смешанное (векторно-скалярное) про- изведение О1а2ан == —27, объем параллелепипеда и = 27; векторы образуют левую системы, некомпланарны, а век- торное произведение Oj X о2 = [6, 15, —91. Программа 223. Цепные операции сложения, вычитания, умножения на скаляр, векторного и скалярного произве- дения векторов, заданных координатами концов [х,-, у,, 2,1 ПЕ КБПЕ ИП4 /-/ П4 ИП5 /-/ П5 ИП6 1—1 П6 ИП9 ИП6 + П9 ИП8 ИП5 Ц П8 ИП7 ИП4 П7 С/П БП 00 ИП7 ИП4 х ИП8 ИП5 X + ИП9 ИП6 х БП 23 ИП8 ИП6 X ИП9 ИП5 X — ПА ИП9 ИП4 х ИП7 ИП6 X — ИП7 ИП5 X ИП8 ИП4 х . П9 П8 ИПА П7 БП [ 22 1 ИПД ИП9 П9 ИПД ИП8 X П8 ИПД ИП7 х П7 БП 23 1 1 ПО 2 П1 6 8 П2 2 6 ПС 3 9 ПВ БП : 23 Инструкция: БП 8 2 С/П (/«5 с) РХ = 39: х, = == Р7, t/L = PS, гг — Р9‘, xs =Р4, у2 = Р5, г2 — Р6\ нажать клавиши: ИП + С/П (/«5 с) для сложения, ИП — С/П (/«7 с) для вычитания, ИП X С/П (/ « 6 с) для умно- жения на скаляр d = PD первого вектора, ИП В С/П (/ « « 12 с) для векторного умножения, ИП С С/П (/«6 с) для скалярного умножения {РХ — исходные коор- динаты векторов сохраняются в регистрах 4, ... ,9); после остальных операций координаты результирующего вектора заносятся в регистры 7,8,9 (при вычитании изменяется знак координат второго вектора, хранящихся в регистрах 4,5,6) и для цепных операций координаты следующего вектора следует ввести в регистры 4, 5, 6. Пример’, для векторов А = [1, 2, 3], В = [2, 3, 41, С = = 13, 2, 1], D = (4, 3, 21, Е = [3, 4, —21 получим А 4- В = = [3, 5, 71; (4 + В) 2 = [6, 10, 14]; ((4 + В) 2 X С) = = (—18, 36, —181; ((4 + В) 2xC-D)= [—22, 33, 201; (((4 + В) 2 X С - D) Е) = 106. 195
Программа 224. Вычисление длины | А | вектора и углов а, р, у между вектором А = [х, у, г] и осями координат П7 П8 х2 <-> П9 хЕ + ИП7 № ф V П4 С/П ИП9 ИП4 ч- cos"1 С/П ИП8 ИП4 ~ cos"1 С/П ИП7 ИП4 — cos"1 С/П Инструкция: установить переключатель Р-ГРД-Г в нужное положение; x = PZ, у — PY, z = PX В/О С/П (i » 6 с) РХ. = | А | С/П РХ = а С/П РХ = ₽ С/П РХ=у. Пример', для А = [2, —2, —1] получим а=48,189683°= = 0,8410686 рад; р = 131,81032° = 2,3005239 рад; у = = 109,47122° = 1,9106722 рад; |Л [ = 3. Программа 225. Вычисление коэффициентов направляю- щего вектора г= [/, т, nl и углов а, 0, у между осями ко- ординат и прямой, заданной уравнениями х ф Вгу Ф Ф CjZ ф Di = 0 и А 2х ф Вуу ф C2z ~{- О2 = 0 ПЗ П2 П1 с/п пв ПА по ипз X ИП1 ИПВ X ~ П8 ИП2 ИПВ X ипз ИПА X П7 ИП1 ИПА X ИП2 ИПО X — П9 X2 ИП8 х2 ф ИП7 X2 ф Y ПС ИП9 ИПС — cos"1 П6 ИП8 ИПС cos"1 П5 ИП7 ИПС cos"1 П4 С/П И нструкция: установить переключатель Р-ГРД-Г в нужное положение; А1~ PZ, PY, С\ = РХ В/О С/П (t^2c)Az=PZ, BZ~PY, С2=РХ С/П 20 с) РХ = Р4=а, PY = P5 = $, Р6=у, Р7 = I, Р8=т, Р9=п. Пример: для прямой, заданной уравнениями 2х — — 2у — г ф 8 = 0 и х ф 2у — 2z ф 1 = О получим а = = 48,189683°; р = 70,52878°; у = 48,189683°; г = [6, 3, 61. Программа 226. Вычисление угла 0 между направляю- щими векторами Ux, mlt nJ и [/2, т2, п2] или между направ- ляющим вектором lip mlf nJ и плоскостью Ах -\-Ву ф Сзф ф£> = 0 П9 П8 П7 С/П П6 П5 х2 ** П4 х2 ф ИП6 х2 Ф / ИП7 № ИП8 х2 ф ИП9 х2 ф / х ПЗ ИП4 ИП7 х ИП5 ИП8 х ф ИП6 ИП9 х ф ИПЗ ~ cos"1 ПО С/П Инструкция: установить переключатель Р-ГРД-Г в нужное положение; /х = PZ, т1 = PY, пг = РХ В/О С/П 13 = PZ, т2 — PY, п2 — РХ (или А = PZ, В = = PY, С = РХ) С/П (t 13 с) РХ = РО = 6. Пример: для 14, 1, 3] и [2, 2,—3] получим 9 = 87,27369°. I9S
Программа 227. Вычисление расстояния d менаду парал- лельными плоскостями Ах ф By ф Cz ф Dy = 0 и Ах ф Ф By Ф Cz ф D3= О ПС ПВ ++ ПА С/П — 1х[ ИПА х2 ИПВ х2 + ИПС х2 ф / 4- С/П Инструкция: А = PZ, В = PY, С = РХ В/О С/П Dt = PY, D2 = РХ С/П (Г да 4 с) РХ = d. Пример: для плоскостей х 4- 2у ф 3z ф 4 = 0 и х ф ф 2// ф 32 ф 6 = О получим d = 0,53452249. Программа 228. Вычисление расстояния d от точки Л4 (xIt yit Zj) до плоскости Ах ф By ф Cz -J- D — 0 ПД ПС ПВ ПА С/П ИПС х П6. -> ИПВ х ~ ИПА х ф ИП6 ф ИПД ф ИПА х2 ИПВ х2 ф ИПС х2 ф Г 4- [х; с/п Инструкция: А = РТ, В = PZ, С = PY, D — РХ В/О С/П Хл = PZ, У1 = PY, zx = РХ С/П РХ =d (t да 7 с). Пример: для точки М (3, 9, 1) и плоскости х — 2у ф Ф 2z — 3 = 0 получим d = 5,3333333. Программа 229. Вычисление расстояния d от точки М (хг, ух, ф) до прямой с направляющим вектором [/, т, п], проходящим через точку М (х0, у0, z0) П9 -> П8 о П7 С/П ПЗ П2 о П1 С/П П6 -> П5 ~ П4 ИП7 -- ПА ИП2 X ИП5 ИП8 — ПВ ИП1 х — хг ИП6 ИП9 — ПС ИП1 X ИПА ИПЗ х - х2 + ИПВ ИПЗ х ИПС ИП2 X — х2 + V ИПЗ х2 ИП2 ха ф ИП1 х2 ф V + С/П Инструкция: xL = PZ, ух = PY, zr = РХ В/О С/П l = PZ, m = PY, п = РХ С/П х0= PZ, ya = PY, z0 = = РХ С/П РХ =d (/да 18 с). Пример: от точки М (1, 0, 1) до прямой с направляющим вектором г = [3, 2, И, проходящим через точку Л1о (2, 0, 0), расстояние d = 1,3093073 Программа 230. Вычисление коэффициентов проекций ахух + Ьхуу + dxy = 0, ахгх + сххг -В dxx = 0, byXy + c!jzz -ф -ф dyz = 0 t|a координатные плоскости прямой, заданной уравнениями ALx ф BYy + CLz ф DY = 0 и А2х ф В2у ф ф C,z ф D2 = 0 197
ИП1 ИП7 X ИП5 ИПЗ X 4" ПА ИП2 ИП7 X ИП6 ИПЗ X ПВ Сх ПС ИП4 ИП7 X ИП8 ИПЗ X ПА ПД С/П ИП1 ИП6 X ИП5 ИП2 + Сх ПВ ИПЗ ИП6 X ИП7 ИП2 X ПС ИП4 ИП6 X ИП8 ИП2 X + ПД С/П Сх ПА ИП2 ИП5 X ИП5 ИП1 X ЙП4 ПВ ИПЗ ИП5 X ИП7 ИП1 X 4 ПС ИП5 X ИП8 ИП1 х + ПД С/П и нструкцня: (А вг = Р2, С1 = : РЗ, = Р4, А2 = Р5, Вг = Р6, С2 = Р7, Г),, = Р8) В/О С/П РХ = РД = dxy, РВ = bxv, РС = 0 (z = 0), РА = аху С/П РХ = РД = dx2, РВ = 0 (у = 0) PC = схг, РА = ахг С/П РХ = РД = dxy (х = 0), РВ = Ьуг, PC = суг, РА =- 0. Пример: для 2,с 4- Зу 4- 4z 4- 5 = 0, х — бу 4- Зг — — 7 = 0 получим 10х - 1 Зу — 13 = 0 (г = 0), —9х — — 15г — 5 = 0 (у = 0), —9(/ + Юг — 9 : 0 (х = 0). Программа 231. Приведение уравнения плоскости Ах 4- 4- By + Cz + D = 0 к нормальному виду к cos а 4- 4 у cos [3 4 z cos у — р = 0 с вычислением углов а, [3, у ПД ПС -> ПВ ха ~ ПА № 4 ИПС хй + / ПЕ ИПД xi ~ ПО ИПД х > 0 26 ИПЕ /—/ ПЕ ИПС ИПЕ 4- П9 cos’1 П6 ИПВ ИПЕ ч- П8 cos’1 П5 ИПА ИПЕ Ч- П7 cos’1 П4 ИПО С/П Инструкция: установить переключатель Р-ГРД-Г в нужное положение: А — РТ, В — PZ, С = PY, D = = РХ В'О С/П (t ж 10 с) РХ = РО = р, Р7 = cos а, Р8 = cos fi, Р9 — cos у, Р4 = а, Р5 — [3, Р6 = у. Приме р: для уравнения у—2y+2z=0 получим р = 0; cosа=—0,33333333; cos [3=0,66666666; cosy= —0,66666666; а = 109,47122°; £ = 48,189653°; у= 131,81032°. Программа 232. Вычисление коэффициентов уравнений Ах 4 By 4- Cz + D = 0 и х/а 4 У'Ь + Дс = 1 плоскости, проходящей через точки ЛД (хн ух, 4) и Л4г (х2, у2, 2.J перпендикулярно плоскости AjX 4 Bvy 4 C,z 4 = = 0 или через точку ЛД (xlf уи 4) перпендикулярно плоскостям А^А-В^А-С^ + Dl = 0 и Арс 4 В2у 4- Csz 4 4Яа = о ИП5 ИП8 — ИПЗ X ИП6 ИП9 — ИП2 X — ПА ИП6 ИП9 — ИП1 X ИП4 ИП7 ИПЗ х — ПВ ИП4 ИП7 — ИП2 X ИП5 ИП8 — ИП1 X — ПС ИП7 х ИП8 ИПВ X + ИП9 ИПА X + ПО /~/ ПД ИПС НПО -ч- ПЕ ИПВ ИПО — ИПА ИПО Ч- С/П 198
Инструкция! (*i = Р7, z/i — Р8, zt = Р9, А2 = = Pf, В2 = Р2, Сх = РЗ', для плоскости, проходящей че- рез две точки, х2 = Р4, у2 = Р5, z2 = Р6, для плоскости, проходящей через одну точку, А2 — Р4, В2 = Р5, С2 = = Р6) В/О С/П РХ = a, PY = Ь, РЕ = с, РА = А, РВ = В, РС= с. Пример; для плоскости, проходящей через точки (1, 2, 3) и (2, 1, 1) перпендикулярно плоскости Зх 4- 4у 4- г—6= = 0, получим уравнения 7х — 7у 7z — 14 = 0 (или х — у + z — 2 = 0) и х/0,5 — у/0,5 + z/0,5 = 1. Программа 233. Вычисление коэффициентов уравнений Ах 4- By 4- Cz + D = 0 и х/а ~ y/b -i - z /с = 1 плоско- сти, проходящей через три точки (хх, уг, гх), (х2, у2, zj и (х3, ys, z3) П9 П8 <-> П7 2 ПО 7 П1 С/П ИП9 КП1 —> ИП8 КП1 —¥ ИП7 — КП1 LO 09 ИП6 X ИП4 ИПЗ X — ПВ ИП5 ИПЗ X ИП6 ИП2 X — ПА ИП4 ИП2 X ИП5 ИП1 X — ПС ИП9 X ИПВ ИП8 X 4~ ИПА ИП7 X + ПО /-/ ПД ИПО — ПЕ ИПВ ИПО -4- ИПА ИПО С/П И н с т р у к ц и я: хх = PZ, yr = PY, zA = РХ В/О С/П x^PZ, y2-=PY, z2 = PX С/П x3~PZ, ys = PY, z3 = = PX C/П (t & 20 c) PX = a, PY = b, PE=c, PA - Д, РВ = B, PC = С, РД = D. Пример; для точек (1; 2; 3), (2; 1; 2) и (3; 3; I) получим а = 0,25; b = 0; с =—1; А = 3; В = 0; С = 3; D = —12. Программа 234. Вычисление координат (х0, y0,za) точки, делящей в отношении т : п отрезок прямой между точ- ками (х1( ylt zA и (х2, у2, г2) П9 -+ П8 П7 С/П П6 П5 П4 С/П ПВ ПА 4- ПС ИП6 ИП9 ПП 34 ПЗ ИП5 ИП8 ПП 34 П2 ИП4 ИП7 ПП 34 П1 БП 11 ИПА X ИПА х 4- ИПС В/О Инструкция: хх = PZ, yt = PY, zt = РХ В/О С/П х2 = PZ, у2 = PY, г2 = РХ С/П tnl = PY, nt = РХ С/П (/«15 с) РХ - Pl = х„, PY = Р2 = у0, РЗ = z0; т2 = = PY, п2 = РХ С/П ... Пример; для отрезка между точками (—3; —1; 6) и (2; 4; —1) при т = п. = 1 получим точку деления (—0,5; 1,5; 2,5). 199
3.12. СПРАВОЧНЫЕ ПРОГРАММЫ Программа 235. Перевод системных (кгссм7с, Вт) и вне- системных (л. с., HP) мер измерения мощности ИП7 х^ 0 27 П7 7 5 П8 ИП7 1 0 1 3 8 7 —— П4 ИП7 7 3 5 5 X П9 с/п ИП8 х^Ц) 35 7 5 БП 03 ИП9 х=/=0 46 7 3 5 » 5 X БП 00 ИП4 1 * 0 1 3 8 7 X БП 00 Инструкци я: р, л, с.= Р7 или Р, кгс см/с Р8, 0=Р7 или Р, Вт= Р9, 0 = Р7 = Р8 или Р, HP = Р4, О = Р7 = Р8= Р9 в/О С/П РХ = Р9 - Р, Вт, PY = Р4 = Р, HP, Р7 = Р, л. с., Р8 = Р, кгс см/с. Примеры: 70 л. с. = 51485 Вт = 69,042382 HP = = 5250 кгс см/с; 750 кгс см/с=10 л.с.=7355 Вт = 9,8631974 HP; 100 Вт = 0,13410 HP = 0,13459618 л.с. = 10,197145 кгс см/с; 1 HP ~ 745,7 Вт = 1,03387л.с. = 76,04025 кгссм/с. Программа 236. Перевод температурных шкал t °C (Цельсия), f°R (Реомюра), /°F (Фаренгейта), Т К (Кель- вина) П7 0 , 8 х П8 ИП7 9x5 4- 3 2 + П9 ИП7 2 7 3, 1 5 + П4 С/П П8 0 , 8 4- БП 00 П9 3 2 — 5 х 9 4- БП 00 П4 2 7 3 , 15 — БП 00 Инструкция: /°C = РХ В/О С/П; FR = РХ БП 2 5 С/П; /°F = РХ БП 3 2 С/П; tX = РХ БП 4 2 С/П; PX=P4 = tK-, Р7 = t°C', P8 = l°R, P9 = FF. Примеры: 20 °C = 293,15 К = 16 °R = 68 °F; 85 °R = = 379,4 К = 106,25 °C = 223,25 °F; 112 °F = 317,59414 X-= = 44,4444 °C = 35,55 °R; Программа 237. Перевод метрических (м, см, км) и старых русских (верста, сажень, аршин, вершок) мер длины П7 1 0 0 х П8 I ВП 5 4- П9 ИП7 1 0 6 7 4- ПО 5 0 0 х ПС 3 X ПА 1 6 X ПВ С/П ПВ 1 6 4 ПА 3 4 ПС 5 0 0 4- ПО 10 67 — БП 00 Инструкция: I, м = РХ В/О С/П; I, вершков = РХ БП 3 1 С/П; I, аршин = РХ БП 3 5 С/П; I, сажень = 200
= РХ БП 3 8 С/П; I, верст = РХ БП 4 3 С,П; РХ = = РВ = I, вершков; РА = I, аршин; РВ = I, верст; PC = = /, саженей; Р7 = I, м; Р8 = I, см; Р9 = I, км. Примеры'. 100 и = 2249,2971 вершков = 140,58107 ар- шин = 46,860366 саженей = 0,093720712 верст; 3 верш- ка = 13,3375 см; 2 сажени = 96 вершков = 6 аршин = =4,268 м; 1 верста = 1,067 км. Программа 238. Перевод метрических (м2, см2, дм2, а, га, км2) и старых русских (кв. верста, кв. сажень, десятина) мер поверхности П7 1 0 0 ПО X П8 ипо х П9 ИП7 ИПО -Л- П4 ИПО — П5 ИПО 4- П6 1 1’ 3 8 —— ПВ 2 5 ВП 4 X ПС 2 4 0 0 4- ПД С/П ПС 2 4 0 0 X пд 2 5 0 X 2 4 * — ПВ 1 , 1 Q 8 ВП 6 X БП со Инструкция: 3, м2 = РХ В/О С/П; 3, кв. сажень = = РХ БП 4 0 С/П; S, десятин = РХ БП 4 6 С/П; S. кв. верст = РХ БП 5 5 С/П; РХ — РД ~ 8, десятин; PC = S, кв. саженей; РВ = 3, кв. верст, Р7 — S, м8, P8 = S, дм2, Р9 = S, см2, P4=S, а, Р5 = 3, га, Рб = - 3, км2. Примеры'. 106 м2 = 91,534858 десятин = 0,87873462 кв. верст; 100 десятин = 0,96 кв. верст. = 1,09248 км2 = = 109,248 га. Программа 239. Перевод метрических и англо-амери- канских мер длины ПО 1 8 5 3 — П1 1 8 5 3 X 4 8 2 7 — П2 3 X ПЗ 1 7 6 0 X П4 3 X П5 1 2 X П6 2 5 3 9 4 5 7 X П7 1 0 0 -2- ПО С/П ИПО БП 00 Инструкция: длина в исходных единицах I = РХ; нажать клавиши: В/О С/П для исходной длины в метрах, БП 0 6 С/П для морских миль, БП 1 7 С/П для ам. миль, БП 2 0 С/П для англ, миль, БП 2 6 С/П для яр- дов, БП 2 9 С/П для футов, БП 3 3 С/П для дюймов; результаты: РХ ~ РО ~ I м; Pl = I морск. миль, Р2 = = I ам. миль, РЗ = I англ, миль, Р4 — I ярдов, Р5 = I футов, Рб = I дюймов; если искомая величина должна храниться в предыдущем ио порядку регистре, дополни- тельно нажать клавишу С/П (^15 с). 201
Примеры. 1000 м= 0.5396654 морск. миль = 0,207168 ам. миль = 0,621504 англ, миль = 1093,847 ярдов = 3281,541 футов ~ 39378,492 дюйма; 1 англ, миля = 1609 м = 1760 ярдов = 5280 футов = 63360 дюймов ~ 0,86832164 морск, миль = 0,33333333 ам. миль; 3 дюйма = 0,07618371 м = - 7,618371 см. Программа 240. Перевод метрических и англо-амери- капских мер емкости сыпучих и жидких тел ПО 2 9 0 , 9 4 4- П1 8 X 112 8 х П5 4 х П4 2 X П54, 8429709 ВП 3 1—/ х П6 3 1 х П7 4 X П8 2 х П9 3 2 0 -? ПА 3 4, 373155 х ПВ 4 , 4 0 4 6 X ПО С/П ИПО БП 00 Инструкция: емкость в исходных единицах 1~РХ; нажать клавиши: В/О С/П для заданной емкости в лит- рах. БП 0 8 С/П для англ, квартеров, БП 1 I С/П для бушелей, БП 1 4 С/П для англ, галлонов, БП 1 7 С/П для англ, кварт, БП 2 0 СП для англ, пинт, БП 3 4 С/П для ам. винных баррелей, БП 3 8 С/П для ам. гал- лонов, БП 4 1 С/П для ам. кварт, БП 4 4 С/П для ам. пинт, БП 4 9 С/П для ам. баррелей нефти, БП 6 0 С/П для ам. сухих галлонов; результаты: РХ — РО = /вл, Pi — I в англ, квартерах, Р2 = I в бушелях, РЗ — I в англ, галлонах, Р4 — I в англ, квартах, Р5 — I в англ, пинтах, Р6 = I в ам. винных баррелях, Р7 ~ / в ам. галлонах, Р8 = I в ам. квартах, Р9 = I в ам. пинтах, РА ~ I в ам. баррелях нефти, РВ — I в ам. сухих галлонах; если иско- мая величина должна находиться в предыдущем по поряд- ку регистре, то дополнительно нажать на клавишу С/П (/«20 с); результаты содержат не менее четырех верных цифр. Примеры\ 100 л = 0,3437 англ, квартеров = 2,750 бу- шелей = 22 англ, галлона — 88 англ, кварт= 176 англ, пинт ~ 0,8523 ам, винных барреля = 26,42 ам. галлона = ~ 105,7 ам. кварт =211,4 ам. пинт = 0,6605 ам. барреля нефти = 22,7 ам. сухих галлонов: 1 баррель нефти = = 151,4л = 34,37 ам. сухих галлонов = (после дополни тельного нажатия клавиши С/П) 0,5204 англ, квартеров ’= = 4,163 бушеля = 33,30 англ. галлонов — 133,2 англ, кварт. = 266,4 англ, пинт = 1,29034 винных баррелей = = 40 ам. галлонов. 202
ПРИЛОЖЕНИЕ Обращение к накопителям информации ПМК «Электроника МК-52» ПМК «Электроника МК-52» содержит встроенное электри- чески стираемое перепрограммируемое запоминающее устройство (ППЗУ) для записи, длительного хранения и многократного счи- тывания информации, первоначально вводимой в программную иля числовую память. Кроме того, конструкторами ПМК этого типа предусмотрены два разъема для присоединения внешних (перифе- рийных) устройств, включая сменные блоки расширения памяти (БРП), предназначенные для постоянного храпения и считывания информации, введенной при изготовлении БРП. Память ППЗУ емкостью 512 байтов (0,5 килобайта) содержит 1024 четырехбитовых ячеек с адресами от 0000 до 1023. Так как емкость ячейки программной памяти и регистра числовой памяти составляет соответственно 8 и 56 битов, то для хранении одного шага программы и содержимого одного регистра числовой памяти требуется соответственно 2 и 14 ячеек ППЗУ. Адресное поле памя- ти ППЗУ разбито на 64 строки по 16 ячеек с адресом начальной ячейки в т-й строке А,-Пп = 16 (т — 1) и адресом последней ячейки Ат/. = 16т — 1 (табл. 17). Режим обращения к ППЗУ определяется положением переклю- чателей С-З-СЧ (стирание запись-считывание) и Д-П (данные- программа). В режиме стирания очищается выбранный участок памяти ППЗУ, в режиме записи и положении П переключателя Д-П содержимое заданного числа ячеек программной памяти пере- писывается (при стирании в программной памяти) на выбранный участок памяти ППЗУ. При положении Д переключателя Д-П в режиме записи на выбранный участок памяти ППЗУ переписы- вается содержимое регистров памяти, начиная с регистра 0 (при этом содержимое соответствующих регистров стирается). В режиме считывания и положении П переключателя Д-П содержимое выбран- ного участка памяти ППЗУ переписывается (с сохранением ин- формации в ППЗУ) в программную память, а при установке пере- ключателя Д-П в положение Д — в регистры памяти, начиная с ре- гистра О. Выбор участка памяти ППЗУ определяется адресом обращения в виде семизначного целого десятичного числа А = цаааадд с любой значащей (отличающейся от нуля) первой цифрой ц. Следующие четыре разряда (аааа) адреса предназначены для записи адреса Л Начальной ячейки выбранного участка памяти ППЗУ, а последние дее цифры (дд) адреса — для записи числа X' восьмпбитовых про- граммных шагов, соответствующих длине выбранного участка. Со- держимое остальных разрядов адреса не считывается и может быть произвольным. Следовательно. адрес обращения А определяет и адрес А& = = Ар ч- 2N — I последней ячейки выбранного участка памяти ППЗУ, что упрощает распределение информации. Например, адрес обраще- ния А = 1011621 определяет адрес Ао =0116 начальной ячейки и адрес А^=01164-2 -21 — 1=0157 последней ячейки выбранного уча- стка. Следует учитывать, что информация вводится в ППЗУ «пачка- ми» по 7 байтов (14 ячеек ППЗУ) и в адресе обращения число И должно быть кратным числу 7 (если принять другое число N, то оно автоматически дополняется до кратного семи). Так как в адресе обращения А для указания длины участка памяти ППЗУ выделено 203
два десятичных разряда, то максимальное число Л/^98. Следова- тельно, в ППЗУ можно хранить программы, содержащие до 98 ша- гов и содержимое первых 14 регистров числовой памяти с адреса- ми О, Д. После набора адреса А и выбора режима обращения к ППЗУ нажимают клавишу А + для запоминания адреса обращения и кла- вишу для выполнения обращения в выбранном режиме. Во время обращения к ППЗУ во всех знакоместах индикатора выснечиваются черточки (коды шестнадцатеричного числа А), что указывает на недопустимость нажатия любых клавиш. До и после обращения к ППЗУ переключатель С-З-СЧ должен находиться в положении СЧ, чтобы случайное нажатие клавиши fj не привело к стиранию или искажению содержимого ППЗУ и программной или числовой памяти. В режиме стирания одновременно с очисткой участка памяти ППЗУ очищается соответствующее число ячеек программной па- мяти (начиная с адреса 00) пли содержимого регистров числовой па- ] мяти в зависимости от положения переключателя Д-П. Поэтому ( при переходе в режим стирания следует установить этот переклю- ) чатель в такое положение, при котором не будет стерта нужная ии- ‘ формация. I Стирание памяти ППЗУ выполняется по строкам, начиная со { строки, в которой находится начальная ячейка и кончая строкой, I в которой находится последняя ячейка выбранного участка памяти. I При максимальном числе N == 98 в адрес обращения будет полно- 1 стью стерто содержимое 13 или 14 строк памяти ППЗУ. Так, при адресе обращения /1 = 7000098, определяющем адреса Ла«0000 на- чальной и/Ц = 0000 + 2 • 98—1=0195 последней ячейки выбранного участка, будет стерто содержимое 13 строк с ячейками по адресам от 0000 до 0207. При адресе /1 = 700(598 с адресом 4 = 0015 начала и Ak =0211 конца участка будет стерто 14 строк с адресами ячеек от 0000 до 0223 (см. табл. 17). , Стирание участка памяти ППЗУ необходимо для устранения наложения вводимой информации на неочищенное содержимое вы- ; бранного участка памяти. Если требуется очистить участок памяти, I содержащий больше 13 или 14 строк, то стирание повторяют при [ изменении адреса обращения. i Для записи на выбранный участок памяти ППЗУ информации 1 из программной или числовой памяти переключатель Д-П устапав- 1 ливают в нужное положение (при положении 3 переключателя । С-З-СЧ), набирают адрес обращения и нажимают клавиши А | и । f|. Одновременно с записью информации в ППЗУ она стирается в программной памяти (начиная с ячейки с адресом 00) и числовой ’ памяти (начиная с регистра 0). В простейшем случае для контроля записи достаточно проверить очистку соответствующего числа ячеек программной памяти (в режиме программирования) и регистров числовой памяти (в рабочем режиме). 1 Прн записи в ППЗУ информации, которую в дальнейшем не предполагается изменять, целесообразно очередное сообщение запи- сывать на участок памяти, непосредственно следующий за преды- 1 душим, что обеспечит полное использование емкости ППЗУ. Однако 1 в тех случаях, когда записываемая информация может изменяться, каждое новое сообщение следует записывать с новой строки, чтобы I при стирании этого сообщения не стереть другую нужную инфор- । мацню. Если стирание, запись и считывание выполняется при об- ращении к одному и тому же участку памяти ППЗУ, то при изме- I пении режима обращения достаточно изменить положение переклю- ) чателей и, не вводя повторно адрес обращения, нажать клавишу f). 204 205
Для считывания ранее записанной информации следует уста- новить переключатель С-З-СЧ в положение СЧ, переключатель Д-П — для считывания в программную или числовую память, ввести адрес обращения А и нажать клавиши A f и Ц. После считывания сле- дует вызвать для контроля считанную в программную или число- вую память информацию. При храпении информации в ППЗУ пользователь должен от- мечать ее в таблице адресов ячеек ППЗУ или в записи адресом обращения с указанием содержания хранящейся информации. В про- тивном случае ему будет весьма трудно разобраться в хранимой и считываемой информации, что неизбежно приведет к ошибкам. В ППЗУ целесообразно хранить лишь достаточно длинные и часто используемые программы, а также пакеты из нескольких про- грамм для решения сложных задач. Программы пакета следует со- ставлять по возможности таким образом, чтобы результаты выпол- нения предыдущей программы могли быть непосредственно исполь- зованы при выполнении следующей программы без излишней пере- сылки данных. В качестве примера рассмотрим использование ППЗУ для хранения пакета из программ 150 и 151 интерполяции сплайном при условии, что первые 10 строк памяти ППЗУ заняты другой ин- формацией. Так как программы 150 и 151 содержат соответственно 98 и 61 шаг, то очистку требуемого участка памяти следует выполнить в два приема с использованием адреса Aiso= 7016098 и адреса А1ы = = 7025663, соответствующего записи программы 151 непосредствен- но после программы 150. В адресе число У=63 выбрано крат- ным семи. Установив переключатель С-3-С4 в положение 3, переключатель Д-П в положение П, следует ввести в программную память про- грамму 150, перейти в рабочий режим, набрать адрес Л1Ю = 7016098 и нажать клавиши А | и fl, после чего следует ввести в программ ную память программу 151, набрать адрес 4^1 = 7025663, нажать клавиши A f и f| и, после окончания записи, перевести переключа- тель С-З-СЧ в положение СЧ. При необходимости использования введенного в ППЗУ пакета программ 150 и 151 следует установить переключатель Д-П в поло- жение П и (при положении СЧ переключателя С-З-СЧ) набрать адрес 4,60 =7016098 с последующим нажатием клавиши А f и f|. После выполнения программы 150 следует (не изменяя содержимого регистров числовой памяти) набрать адрес Aы =7025663 и нажать клавиши А | и 14, после чего можно выполнять интерполирование функции для заданного аргумента. Обращение к ППЗУ удобно использовать также для программ, выполнение которых связано с вводом в качестве исходных данных многозначных коэффициентов. В частности, такие программы могут использоваться для аппроксимации функций с малой погрешностью, но громоздкость ввода многочисленных коэффициентов является не- достатком подобных программ. Однако при предварительном вводе исходных коэффициентов в регистры числовой памяти и их пере- записи в ППЗУ пользование подобными программами [3} существен- но упрощается. При использовании БРП емкостью 1 килобайт (память этого ПЗУ разбита на две страницы по 0,5 килобайт) установкой пере- ключателя на БРП выбирают нужную страницу, а считывание ин- формации выполняют- с помощью адреса обращения аналогично обращению к ППЗУ. Более подробная информация об использова- нии БРП различной емкости и других периферийных устройств со- держится в руководствах по их эксплуатации.
СПИСОК ЛИТЕРАТУРЫ 1. Выгодский М. Я. Справочник по высшей математике.М.: Наука, 1962.— 870 с. 2. Демидович Б. П., Марон И. А. Основы вычислительной ма- тематики.— М Наука, 1966.— 664 с, 3. Дьяконов В. П. Справочник по расчетам на микрокальку- ляторах.— М.: Наука, 1985.— 224 с. 4. Корн Г,, Корн Т. Справочник по математике.— М.: Наука, 1977,— 832 с. 5. Трохименко Я. К- Игры с микро-ЭВМ.— Киев: Техшкя, 1986.— 120 с. 6. Трохименко Я. К. Метод обобщенных чисел и анализ лилей- ных цепей.— М.: Сов. радио, 1972.— 312 с. 7. Трохименко Я. К., Любич Ф, Д. Инженерные расчеты на микрокалькуляторах.— К.: Техн1ка, 1980.— 394 с. 8. Трохименко Я. К., Любич Ф. Д. Инженерные расчеты на программируемых микрокалькуляторах.— К.: Техн!ка, 1985.— 328 с. 9. Трохименко Я. К., Любич Ф. Д. Микрокалькулятор, Ваш ход!.— М.: Радио и связь, 1985.— 224 с. 10. Трохименко Я. К., Любич Ф. Д. Радиотехнические расчеты на микрокалькуляторах.— М.: Радио и связь, 1983.— 258 с. II. Хнммельблау Д. Прикладное нелинейное программирова- ние.— М.: .Мир, 1975,— 534 с. 12. Цветков А. Н., Епанечников В. А. Прикладные программы для микроЭВМ «Электроника БЗ-34», «Электроника МК-54», «Элек- троника MK-56s.— М.: Финансы и статистика, 1984.— 176 с.
ОГЛАВЛЕНИЕ __ Стр Предисловие ......................................... з Глава 1. Особенности пользования ПМК......................4 1.1. Алгоритмы и программы................................4 1.2. Входной язык........................................14 1.3. Вычисления в непрограммируемом режиме...............26 1.4. Режим программирования..............................33 1.5. Программируемый режим...............................4‘ Г лава 2. Составление оптимальных программ...............50 2.1. Критерии оптимальности программ ................... 50 2.2. Погрешности вычислений..............................56 2.3. Оптимизация методов и алгоритмов....................66 2.4. Использование особенностей входного языка ...... 75 2.5. Формирование составных операторов...................81 2.6. Минимизация дополнительных затрат времени .... 87 2.7. Решение структурных задач...........................97 Г лава 3. Библиотека прикладных программ................106 3.1. Пользование библиотекой............................106 3.2. Теория чисел и комбинаторика.......................107 3.3. Операции иад степенными многочленами...............114 3.4. Решение систем линейных уравнений (16) и матричная алгебра ..... ......................................... 127 3.5. Решение нелинейных уравнений / (г) = 0.............138 3.6. Численная оптимизация..............................147 3.7. Численное дифференцирование и интегрирование . . . 1Б2 3.8. Интерполяция и аппроксимаЕГИЯ......................163 3.9. Вычисление специальных функций ........ 173 3.10. Математическая статистика ....................... 182 3.11. Аналитическая геометрия ..... ................... 190 3.12. Справочные программы..............................2G0 Приложение. Обращение к накопителям информации ПМК «Электроника МК-52».....................................203 Список литературы ..................................... 207