книги из ГПНТБ / Михельсон В.С. Элементы вычислительной математики учебное пособие для электроприборостроительных техникумов
.pdfшесть старших разрядов первого кода, и полученный результат за
писывается в ячейку С. |
|
|
|
|
находятся команды |
||||||
Пр и м е р . |
Пусть в ячейках 0116 и 1*371 |
||||||||||
|
|
|
03 |
|
3701 |
|
2711 |
|
3100 |
|
|
И |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
0012 |
|
2211 |
|
3000 |
|
|
После выполнения команды |
|
|
|
|
|
|
|
||||
|
|
|
22 |
|
0116 |
|
1371 |
|
1111 |
|
|
образуется код 03 3714 1123 2100, |
|
|
|
|
|
|
|||||
так как |
|
|
|
|
|
|
|
|
|
|
|
11 |
111 000 |
001 |
10 |
111 |
001 |
001 |
11 |
001 |
000 |
000 |
|
00 |
000 |
001 |
010 |
10 |
010 |
001 |
001 |
11 |
000 |
000 |
000 |
11 |
111 |
001 |
100 |
01 |
001 |
010 |
011 |
10 |
001 |
ооо |
ооо’ |
Из этого примера видно, что при сложении может происходить |
|||||||||||
перенос единицы в следующий старшей разряд. |
|
|
|||||||||
Перенос единицы в 34-й разряд не производится. |
|
сложения |
|||||||||
Аналогично выполняется команда 62, только вместо |
|||||||||||
33 младших разрядов происходит вычитание. |
|
|
|
|
|||||||
П е ч а т ь |
чисел на бумажной ленте выполняется командой |
||||||||||
|
|
|
32 |
|
А |
|
В |
|
С |
|
|
При выполнении этой команды число из ячейки А передается в ячейку С и печатается. Для этого число должно храниться в двоично десятичном виде, поэтому предварительно необходимо при помощи специальной программы перевести число из двоичной системы в дво ично-десятичную форму.
2 2 0
Команды |
б е з у с л о в н о г о |
и у с л о в н о г о перехода мы рас |
|
смотрим в следующих параграфах. |
|||
|
§ 2. |
Программирование формул |
|
Алгоритм |
решения |
задачи. |
Подготовка задачи к решению на |
машине заключается в составлении математического алгоритма. Под алгоритмом понимают точное предписание о характере и порядке вы полнения конечного числа математических операций, которые позво
ляют получить по исходным данным решение задачи. |
требованиям: |
|
Такое предписание |
должно удовлетворять двум |
|
а) д е т е р м и н и р |
о в а н н о с т и ; это значит, |
что, пользуясь |
таким предписанием и выполнив очередную операцию, мы смогли бы однозначно определить следующую и определить, над какими числа ми эта следующая операция должна выполняться;
б) м а с с о в о с т и ; это значит, что таким предписанием можно пользоваться для решения целой группы однотипных задач.
Алгоритм может быть задан в словесной форме или в виде ма-
—Ь ~VЬ2—4ас тематической формулы. Например, формула х = ----------- —-----------
является алгоритмом для решения квадратного уравнения ах2 +Ьх+ + с= 0, так как, во-первых, по этой формуле мы видим, какие опера ции и в каком порядке нужно выполнить, чтобы вычислить значе ния х, во-вторых, эту формулу можно применить при любых значе ниях а, Ь и с (а ф 0), т. е. решить любое квадратное уравнение.
Таким образом, решение задачи на электронной вычислительной машине начинается с составления математического алгоритма. Для решения одной и той же задачи может существовать несколько раз личных алгоритмов. Например, корни квадратного уравнения можно найти не только при помощи вышеприведенной формулы, но и при помощи метода хорд, или метода касательных, или метода итерации. Значит, для решения этой задачи существуют, по крайней мере, че тыре алгоритма. Выбор того пли иного алгоритма для решения зада чи на конкретной электронной машине зависит от ее конструкции, от количества и характера запоминающих устройств этой машины, от скорости выполнения различных операций.
Для решения задачи на какой-либо машине все операции, входя щие в составленный алгоритм, должны быть заменены соответствую щими командами этой машины. Все эти команды вместе образуют программу. Составление программ начнем с программирования но формулам.
221
Анализ формул и их расчленение на машинные операции. Как указывалось выше, алгоритм решения задачи может быть задан в виде математической формулы.
П р и м е р ы . 1) Составим программу для вычисления
а + Ьс |
|
У = d - f |
( 1) |
Для исходных данных a, b, с, d и / отведем пять ячеек, напри мер, ячейки 0232, 0233, 0234, 0235 и 0236. Чтобы определить у , не
обходимо |
вычислить: 1) произведение 1= Ь с , |
2) сумму |
т = а + Ь с — |
= а + 1, 3) |
т |
а - \ - Ь с |
Таким обра |
разность n = d — f и 4) частное |
= —-----• |
зом, потребуется еще три ячейки для хранения промежуточных ре зультатов /, т и п и одна ячейка для значения у. Для этих чисел используем ячейки 1102, 1103, 1104 и 1105.
Чтобы перемножить два числа из ячеек 0233 и 0234 и задать ре зультат в ячейку 1102, ЭВМ должна выполнить команду
03 |
0233 |
0234 |
1102 |
Теперь число / уже |
вычислено и задано в ячейку 1102. Чтобы |
||
образовать сумму т=а+1, выполняем команду |
|
||
01 |
0232 |
1102 |
1103 |
Эта команда складывает числа ячеек 0232 и ПО2, т. е. а и 1.
Сумма т задается в ячейку 1103.
Для вычисления разности n= d—f и записи ее в Я1 ейку 1104, мы
должны включить в программу команду |
|
||
02 |
0235 |
0236 |
1104 |
т. е. число из ячейки 0236 вычитается из числа |
ячейки 0235 и раз |
||
ность n= d—{ задается в ячейку 1104. |
|
|
|
222
Остается выполнить деление суммы т на разность п. Так как эти числа хранятся в ячейках 1103 и 1104, то необходимо выполнить команду
04 1103 1104 1105
Таким образом, программа вычисления у имеет вид
Код |
I адрес |
II адрес |
III адрес |
0 3 |
0 2 3 3 |
02 34 |
1102 |
01 |
0 2 3 2 |
1102 |
1103 |
02 |
0235 |
0 2 3 6 |
1104 |
04 |
1103 |
1104 |
1105 |
Зададим эту программу в виде четырех команд в оперативное запоминающее устройство в последовательно расположенные ячей ки, например, в ячейки ЗОЮ, ЗОН, 3012 и 3013.
Заставим теперь электронную вычислительную машину выпол нять команды, хранящиеся в ячейках, начиная с ЗОЮ. Мы видим, что в программе записаны адреса 0232, 0233, 0234, 0235, 0236.
Это значит, что, какие бы числа a, b, с, d и f ни задать, в ячей ках с этими адресами после выполнения всех четырех команд и в ячейке 1105 будет задан результат подстановки этих чисел в фор мулу (1). Поэтому одну и ту же программу можно использовать для нахождения значения у при любых допустимых значениях коэффи циентов.
2) Составить программу |
для нахождения значения |
|
(■а + Ь)3 |
* |
c — d ‘ |
223
Чтобы найти значение х, нужно |
вычислить а + Ь, (а+Ь )2 и |
с—d, а затем разделить (а+Ь)* на с—d. |
Поэтому программа должна |
содержать команды сложения 01, умножения 03, вычитания 02 и де ления 04.
Зададим исходные данные а, Ь, с и d в ячейки 3000, 3001, 3002, 3003, а в ячейки 3004, 3005, 3006 и 3007 будем задавать промежуточ
ные результаты а+ Ь, |
(а+ Ь )2, |
с—d и вычисленное значение х. |
|
|||||
Таким образом |
|
|
|
|
|
|
|
|
Ячейка |
3000 |
3001 3002 |
3003 |
3004 |
3005 |
3006 |
3007 |
|
с адресом |
||||||||
Используется |
|
|
|
|
|
|
|
|
для хране |
а |
|
С |
d |
а+Ь |
(а+Ь)2 |
с—d |
X |
ния |
ь |
|||||||
Программа имеет вид |
|
|
|
|
|
|
||
Код |
|
1 адрес |
|
II |
адрес |
III адрес |
|
|
операции |
|
|
|
|||||
01 |
|
3000 |
|
|
3001 |
3004 |
|
|
03 |
|
3004 |
|
|
3004 |
3005 |
|
|
02 |
|
3002 |
|
|
3003 |
3006 |
|
|
04 |
|
3005 |
|
|
3006 |
3007 |
|
|
Она работает следующим образом.
1. Число из ячейки 3000 складывается с числом из ячейки 3001 и результат а+Ь задается в ячейку 3004.
2.Число из ячейки 3004 умножается само на себя, и результат посылается в ячейку 3005.
3.Следующая команда задает в ячейку 3006 число с—d.
—224 -
4. |
Число из ячейки 3005, т. |
е. (я+ й )2, делится на число из ячей |
ки 3006, т. е. на с—d, и результат х |
задается в ячейку 3007. |
|
Таким образом, после выполнения четырех команд в ячейке ад ресом 3007 образуется искомое значение х.
3) |
Составить программу для решения системы |
|
|
а п Х Х + # 1 2 * 2 = b i , |
|
|
а 2Х Х 1 + а 22 х 2 — Ь2, |
|
где Яц, |
я12, b1, a2i, я22 и й2 — заданные числа. |
|
Решением такой системы являются числа |
||
|
b i 0-22 — Й2 а Х2 |
Й2 а 11 — Ьх Я 21 |
|
Xi = ----------------- , |
Х2= ----------------- . |
|
а 11 а 22 — а 12 а 21 |
а ХХ а 22 — ^ 1 2 а 21 |
Для вычисления значений Х\ |
и х 2 по этим формулам для исход |
|
ных данных отведем шесть ячеек с адресами от 1000 до 1005, в кото рых зададим числа Яц, fli2, йь я2ь «22 и й2.
Для хранения промежуточных результатов используются следу ющие по порядку одиннадцать ячеек с адресами от 1006 до 1020.
Начнем с вычисления определителя системы
Д — Яц Я22 — а Х2 ^21 •
Для этого машина должна выполнить три команды:
1. |
03 |
1000 |
1004 |
1006 |
2. |
03 |
1001 |
1003 |
1007 |
3. |
02 |
1006 |
1007 |
1010 |
после выполнения которых число Д будет |
задано в ячейку 1010. |
|||
Переходим к вычислению определителя |
|
|||
Д1 = bi я22 — й2 ai2-
Он вычисляется при помощи следующих трех команд:
15—440 |
225 |
4. |
03 |
1002 |
1004 |
1011 |
|
5. |
03 |
1005 |
1001 |
1012 |
|
6. |
02 |
1011 |
1012 |
1013 |
|
и задается в ячейку 1013. |
|
|
|
|
|
Теперь остается вычислить определитель |
|
||||
|
Д2 = Ь2 вц — &i а2ь |
|
|||
машина должна |
выполнить команды |
|
|
||
7. |
03 |
1005 |
1000 |
1014 |
|
8. |
03 |
1002 |
1003 |
1015 |
|
9. |
02 |
1014 |
1015 |
1016 |
|
после чего число Д2 будет задано в ячейку 1016. |
|||||
Чтобы вычислить х, = |
— |
|
Аг |
нужно числа, хранящи |
|
и * 2 = — |
|||||
|
|
Д |
|
д |
|
еся в ячейках 1013 и 1016, т.е. числа Д[ и Д2, разделить на число, хранящееся в ячейке 1010, т. е. на число Д, поэтому в программу должны быть включены команды
10. |
04 |
1013 |
1010 |
1017 |
11. |
04 |
1016 |
1010 |
1020 |
Теперь объединим все команды в программу и укажем в отдель ной таблице, в каких ячейках запоминающего устройства задаются исходные данные:
226
В ячейке |
Задается |
с адресом |
число |
1000 |
ап |
1001 |
ап |
1002 |
bi |
1003 |
й21 |
1004 |
й 22 |
1005 |
^2 |
|
Код |
I адрес |
II адрес |
III адрес |
|
операции |
|||
). |
03 |
1000 |
1004 |
1006 |
2. |
03 |
1001 |
1003 |
1007 |
3. |
02 |
1006 |
1007 |
1010 |
4. |
03 |
1002 |
1004 |
1011 |
5. |
03 |
1005 |
1001 |
1012 |
6. |
02 |
1011 |
1012 |
1013 |
7. |
03 |
1005 |
1000 |
1014 |
8. |
03 |
1002 |
1003 |
1015 |
9. |
02 |
1014 |
1015 |
1016 |
10. |
04 |
1013 |
1010 |
1017 |
11. |
04 |
1016 |
1010 |
1020 |
227
Таким образом, составленная программа содержит 11 команд. Все промежуточные результаты приведены в следующей таблице:
После выполнения |
В ячейке с адресом |
задается число |
команды |
||
к |
1006 |
#11022 |
2. |
1007 |
й х г й ч х |
3. |
1010 |
#11^22 — #12#21 |
4. |
1011 |
6l#22 |
5. |
1012 |
&2Й12 |
6. |
1013 |
&j#22 — ^2^12 |
7. |
1014 |
h a u |
8. |
1015 |
b i a 2i |
9. |
1016 |
йгЯц — ^1^21 |
10. |
1017 |
X l |
11. |
1020 |
X z |
Чтобы воспользоваться составленной программой, нужно исход ные данные и программу ввести в машину в заранее отведенные для них ячейки. Теперь остается с пульта управления включить машину и передать управление первой команде программы. Команды долж ны быть расположены в последовательных ячейках, в порядке возра стания адресов ячеек, тогда после выполнения первой команды будет выполняться вторая и т. д.
— 228
4) Составить программу для вычисления значения многочлена
Р (х) = а0 х3 + at х2 + а2х + а3
при х = с ,'
Зададим числа а0, аи а2 и а3 в ячейки 0030, 0031, 0032 и 0033, а число с — в ячейку 0034. Для вычисления Р(с) будем последователь но вычислять
с2, са, а2 с, ciic2, а0 с3, o2c + as, ахс2 + а2с + а3
и Р(с) = а 0 с3 + ахс2 + агс + а3.
Это можно сделать при помощи следующей программы:
|
Код |
I адрес |
II адрес |
III адрес |
|
операции |
|||
1. |
03 |
0034 |
00 34 |
00 35 |
2. |
03 |
0034 |
0 0 3 5 |
0 0 3 6 |
3. |
03 |
00 34 |
0032 |
00 3 7 |
4. |
03 |
00 35 |
0031 |
0 0 4 0 |
5. |
0 3 |
0 0 3 6 |
00 30 |
0041 |
6. |
01 |
0 0 3 3 |
0037 |
0 0 4 2 |
7. |
01 |
0042 |
0 0 4 0 |
0 0 4 2 |
8. |
01 |
00 42 |
0041 |
00 42 |
229
