книги из ГПНТБ / Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие
.pdf- 210 -
дификации и две ячейки ОЗУ. Одна из этих ячеек служит для запоминания изменяющегося содержимого регистра модификации в случае использования его для модификации команд внешнего цикла, а другая для запоминания изменяющегося содержимого регистра модификации при использовании его для модификации команд внутреннего цикла.
Тогда в программе перед командой, модифицируемой с ис пользованием регистра модификации, необходимо ставить коман ду, которая бы восстанавливала в регистре модификации инфор мацию, необходимую для модификации команды и Хранимую в со ответствующей ячейке.
При решении задач определения корней алгебраических уравнений, приближенного вычисления значений функций и др. очень часто пользуются методом итераций, который также на зывают методом последовательных приближений. При решении таких задач предел, к которому стремится определяемая вели чина неизвестен, и, следовательно, количество повторений цикла заранее не может быть известно, а определяется требуе мой точностью выполняемых вычислений.
Циклические программы решения таких задач часто называют итерационными циклами.
Итерационный цикл организуется таким образом, чтобы цикли
ческий процесс |
продолжался до тех |
пор, |
пока |
не выполнится ус |
|||||
ловие |
|
|
|
|
|
|
|
|
|
|
|
|
|
|yuu |
- |
Ус | < £ , |
|
|
|
где |
y L |
. j |
и |
У и - |
соседние значения |
определяемой вели- |
|||
чины У, |
£. |
- |
требуемая |
точность |
вычислений |
/положитель- |
|||
ное |
число/. |
|
|
|
|
|
|
|
|
|
- 211 |
|
|
|
|
Для проверки этого |
условия |
в конце |
цикла |
достаточно |
за- |
|
нисать следующие команды: |
|
|
|
|
||
К + П) 03 |
0 |
14000 |
|У1*1 - |
У И |
|
|
К + r i + l)02 0 |
в + 0 |
| y w - y i - j |
|
|
||
К +Г1+2)22 |
0 |
к+1 . |
|
|
|
|
Причём в ячейке |
в+0 должно |
быть записано |
£ , а на |
ре |
гистре сумматора до выполнения этой группы команд должна находиться разность двух последовательных приближений.
Итерационные циклы обычно являются составными частями более сложных программ. В частности, такие циклы могут на ходиться и внутри других циклов, организация которых рас смотрена в данном параграфе.
Программирование циклических вычислительных процессов на быстродействующих ЭЦВМ делает возможным решение задач, требующих выполнения многих миллионов операций.
§ 7.7. ПОНЯТИЕ 0 МАСШТАБИРОВАНИИ
Все ЭЦВМ с фиксированной запятой оперируют с числами, по модулю меньшими единицы. Однако при выполнении арифмети ческих операций может получиться результат, равный единице
или превышающий её /переполнение/. Поскольку машина не при способлена к работе,с такими числами, необходимо исходные и промежуточные результаты умножить на некоторые масштаб ные множители с тем, чтобы все числа, полученные в машине, по модулю не превосходили единицу.
-212 -
Процесс подбора множителей, заключающийся в том что все величины, ^мгурирующие в задаче" /исходные данные, промежу точные и окончательные результаты ь ;числ ени й/, представляют ся в виде правильных дробей, называется масштабированием.
При масштабировании следует стремиться к сохранению максимально возможного количества значащих цифр, так как чем больше атих ци'!р содержит число, тем с меньшей относи тельной погрешностью оно представлено и тем точнее резуль таты арифметических операций, произведенных над этим и Дру гими числами, а, следовательно, и конечные результаты.
Лодбор масштабных мнс»ит?елей требует определения преде-, лов изменения исходных данных, промежуточных и окончатель ных результатов, /^ля определения этих величин часто исполь зуют аппарат математического анализа: определение интерва лов монотонности 'уккцьи, области её возрастания или убы вания, нахождение экстремумов л т.д.
Масштабирование заключается в том, что исходные данные, промежуточные и окончательные результаты представляются в виде:
|
|
|
Х = W |
' |
где |
пт.х |
- |
масштабный |
коэффициент, |
|
X |
- |
масштабированное лечение числа I , у-^эрвлетворяю- |
|
щее |
требованию |
|
||
|
|
|
0 < | Х | < 1 . |
На практике применяют следующие методы масштабирования: метод постоянных масштабов, метод переменных масштабов и ме тод плавающих масштабов.
Наиболее простым в реализации считается метод постоян ных масштабов, так как при, его использовании масштабные коэ!^- фициенты не меняют своей величины. Обычно это целые степени десяти /десятичные масштабы/ или двойки /двоичные масштабы/. При этом переход от л к А и обратно сводится к переносу за пятой в десятичной или двоичной записи чисел на число раз рядов, равное показателю степени масштабного коэффициента.
|
Пример |
1. |
Требуется |
подобрать |
масштабные |
коэффициенты |
||||||||||
для |
вычисления |
на СЭцЗМ-1 значений функции |
У = -Зр |
,еслк |
||||||||||||
1 0 0 < Х 1 < |
С00, |
100 |
< |
Х ^<600 |
и, |
следовательно, |
|
1_\_<у-<ь |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t • |
|
Для ввода |
исходных |
|
чисел |
и Ж; в машину |
их необходи |
||||||||||
мо разделить на масштабные коэффициенты m-i = |
тг |
= |
ю 3 , т о - |
|||||||||||||
есть |
0,1 |
< |
30} < 0 , 6 ; |
0,1 |
<Щ>< |
0 , 6 . |
|
|
|
|
|
|||||
|
Для обеспечения |
условия |
У < |
1 масштабный |
коэффициент |
|||||||||||
числителя |
rriz |
умнолается |
ещё на |
масштабный коэффициент ре |
||||||||||||
зультата |
тъ = |
10. Тогда 0,01 < Щ,< |
0 , 0 6 . |
|
|
|
|
|||||||||
|
Окончательные мнолители будут равны: для числителя |
|||||||||||||||
m. г |
• 1 0 4 , |
для знаменателя ггц * |
1 0 3 . Тогда |
для |
получения |
|||||||||||
истинного |
значения |
результата |
У |
необходимо |
полученное на |
|||||||||||
машине значение У |
умножить на тг= |
10. |
|
|
, — ^ |
|||||||||||
|
Пример 2 . |
Вычислить |
значения |
функции |
у = |
— |
— . |
|||||||||
для |
значений аргумента |
|
X, |
изменяющегося |
в пределах |
1<Х.< 9. |
||||||||||
|
Пользуясь |
аппаратом |
математического |
анализа, |
нетрудно |
установить, что первая производная функция У является отри цательной для всех значений X. Следовательно, функция У
монотонно убывает и достигает предельных значений на концах интервала. Поэтому модно установить пределы изменения функ ции: 3 < У < 4 , 2 3 .
Таким |
образом, |
можно |
принять |
ПЛ* = |
10, т у = 10. |
Введём масштабы в исходную формулу |
|
||||
Отсюда |
_ |
з J \ T |
~ ( m ~ x f |
_ |
зо\/сГоТТ1г т ' |
После |
преобразований |
получим |
|
|
|
|
- |
_ 0,3 |
\fojDi*xv |
|
|
|
|
|
х |
|
|
И только теперь составляется программа, вычисляющая функ цию У , значения которой и будут выдаваться на печать. Для получения ис комой величины У достаточно в выданных на пе -
- 814 -
чать результатах перенести запятую на один знак вправо. Однако, само по себе масштабирование не гарантирует,'
что при реализации масштабированной функции в машине все промежуточные результаты будут меньше единицы. Для получе ния промежуточных результатов в виде правильных дробей необ ходимо правильно выбирать порядок вычислений.
Так, если в примере 2 проводить вычисления значения функции У для X * 1 в таком порядке
с
У - 0,3 : X • V 0,01 + X 2 ' ,
то |
машина остановится по переполнению при выполнении перво |
|||
го |
же действия /деления/. Во избежание этого вычисления необ |
|||
ходимо проводить |
в следующем |
порядке; |
||
|
У = [ V |
0,01 + 5? '• |
0,3 ] |
: X. |
Метод переменных машштабов может применяться в случае, если алгоритм поддаётся расчленению на части, для каждой из которых имеется возможность установить свой набор масштаб ных коэффициентов. В этом случае для соединения алгоритма в одно целое к нему добавляются участки программы, обеспе чивающие автоматическую смену масштабных коэффициентов.
В методе плавающих масштабов используются двоичные мас штабные коэффициенты, новые значения которых выбираются ма шиной в зависимости от полученных результатов автоматичес ки, по определённой программе. Все величины, входящие в алгоритм, представляются в виде:
Для хранения каждой иа таких величин отводятся две ячей
ки памяти. В одной из |
них хранится |
значение X L , в другой- |
|||
значение Pj, |
. В случае необходимости значения |
величин Х-и |
|||
и Р-и |
программно изменяются в процессе решения |
задачи пу |
|||
тем |
сдвига величины Х-и |
на определённое количество двоичных |
|||
разрядов влево или вправо. |
|
|
|||
Масштабированию могут подвергаться не все участвующие в |
|||||
вычислениях |
величины, |
а лишь часть |
из них. Для хранения не- |
||
масштабированных величин, а также |
величин, имеющих постоян- |
- 215 -
нне масштабы, отводится по одной ячейки памяти.
& 7.8. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТАНДАРТНЫХ ПОДПРОГРАММ
В процессе решения многих задач приходится вычислять ряд часто встречающихся функций. Такими функциями могут быть •Ьт/Е,®* \fx и т.п. Причём необходимость в вычисле нии этих функций в процессе решения одной задачи может воз никнуть неоднократно.
Для облегчения 1роцесса программирования в подобных слу чаях целесообразно иметь для часто встречающихся функций за ранее составленные программы, которые принято называть стан дартными подпрограммами /СП/.
Стандартные подпрограммы составляются также и для более сложных'задач, таких, как решение систем алгебраических или обыкновенных дифференциальных уравнений, вычисление различ ных типов интегралов и т . д .
В машине СЭЦВМ-1 имеются стандартные подпрограммы, обра щение к которым может производиться из любого места состав ляемой программы. Для этого в основной программе испольауется команда с кодом операции 10.
Номер команды основной программы, подлежащей исполнению после окончания вычислений по стандартной подпрограмме, запо минается в третьем регистре модификации. Поэтому, если для модификации команд основной программы использовался этот ре гистр модификации, то перед обращением к СП необходимо за помнить содержимое этого регистра модификации в какой-либо свободной ячейке, а после выхода из СП восстановить его со держимое.
Последней командой каждой из аакоммутированных в ДЗУ СЭЦВМ-1 СП является команда вида: 20 3 00000, по которой и осуществляется возвращение в основную программу.
21b |
- |
|
Кроме начального с^.реса каждья |
/ме^т свои нчепки па |
|
мяти для размещения аргументов, рабочие ячейки, а тькл.е |
||
ячейки для размещении результатов вычисления. Б качестве |
||
этих ячеек в СЭцВМ- 1 используются ячейки ОЗУ с номера |
||
20001 по номер 20027. Поэтому |
массив |
ячеек с 20001 по 20027 |
не рекомендуется использовать в основной программе.
В таблице "ларактеристики стандартных подпрограмм" ука зываются номера ячеек иЗУ, используемых в каждой
|
ХАРАКТЕРИСТИКИ СТАНДАРТНА*. П0Д1Р0ГРАЖ |
||||
пп |
Наименование СП |
Команда |
|
|
Исходные |
обращения |
|
данные |
|||
1 |
2 |
3 |
|
|
4 |
1 |
Деление: У= |
10 3 15000 |
а |
- |
20002 |
|
|
|
х |
- |
РгСм |
| а М х |
2 |
Нормализация: |
10 3 |
15031 |
|||
|
У - |
х • 2 п |
|
|
||
3 |
у = \[5Г |
10 3 |
15063 |
|||
4 |
у |
ш sin 2 |
10 3 |
15135 |
||
У - |
cos х |
10 3 |
15136 |
|||
|
||||||
|
У 1 = |
s i n x , уг= COS ОС . |
10 3 |
1512? |
||
5 |
у |
* |
i j - cacs'm. X |
10 3 |
15171 |
|
|
у |
* J _ агосой х |
10 3 |
15235 |
х- РгСм
х- РгСм
х- РгСм
вмасштабе
рад
х- РгСм
Результаты вычислений 5
200С2 и РгСм
У- 20004 и РгСм
П- 20005
2 а - 20006
20005 и РгСм
РгСм
РгСм У, - РгСм
У2 - 20006
РгСм / |
27Г |
/ |
|
|
1 |
|
|
2 |
|
|
|
3 |
б |
у |
«tcj/х |
, У= ctcjx |
10 3 |
15243 |
||
7 |
у |
mfa |
агсЦъ |
10 3 |
15300 |
||
|
у |
= ^ |
ояссЦх |
10 3 |
15316 |
||
8 |
у |
= - К |
|
10 |
3 |
15323 |
|
|
у |
= е 3 |
2 х |
|
10 |
3 |
15345 |
9 |
У - g j |
А о с |
10 3 |
15364 |
|||
10 |
Ввод с |
перфоленты |
10 3 |
15500 |
|||
11 |
Вывод на |
печать: |
|
|
|
||
|
линейных чисел |
10 3 |
14605 |
||||
|
целых |
чисел |
10 3 |
14614 |
|||
|
градусных |
10 3 |
14557 |
||||
|
временных |
10 3 |
14572 |
||||
|
восьмеричных |
10 3 |
14516 |
||||
|
команд |
|
|
10 3 |
14531 |
||
|
двоично-деантичных |
10 3 |
14500 |
||||
|
интервала |
|
10 3 |
14720 |
|
|
4 |
5 |
х |
- |
РгСм |
РгСм |
|
ЕМ |
|
|
х |
- |
РгСм |
РгСМ / в рад / |
|
|
|
2JT |
х - |
|
РгСМ |
РгСм |
х |
- |
РгСм |
РгСм и 20005 |
Перфолента |
По адресам, пробитым на |
|
перфоленте |
РгСМ |
|
- 2 1 9 -
Порядок использования СП поясним |
нь примере. |
|
|
|
|
|||||||||
Пример 1. Требуется вычислить корень квадратный из чис |
||||||||||||||
ла, находящегося в ячейке 20040, а результат поместить в |
||||||||||||||
ячейку 20041. |
|
|
|
|
|
|
|
|
|
|
|
|
||
Последовательность команд, обеспечивающая решение пос |
||||||||||||||
тавленной задачи,будет |
иметь вид: |
|
|
|
|
|
|
|
|
|||||
|
К + |
1) |
12 0 20040 |
Вызов числа на РгСм. |
|
|
|
|
||||||
|
К + 2) |
10 3 15063 |
Обращение к СП |
|
|
|
|
|
|
|||||
|
К + 3) |
24 |
0 20041 |
Запоминание результата. |
|
|
||||||||
Особое внимание при программировании с использованием |
||||||||||||||
СП необходимо |
обращать на масштабы исходных данных и резуль |
|||||||||||||
татов |
вычислений. |
|
|
|
|
|
|
|
|
|
|
|
||
При обращении к СП тригонометрических функций |
/gin.X, |
|||||||||||||
CoSoci |
"Цх,сЦзс |
/ |
и к СП вывода на печать |
градусных |
величин |
|||||||||
на регистре сумматора должен находиться аргумент в масшта- |
||||||||||||||
бе |
Ш |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2% |
|
|
|
|
|
|
|
|
|
|
|
|
|
При вводе |
информации используется |
СП ввода, |
которая |
|
||||||||||
представляет |
градусные |
величины в масштабе |
2S& |
|
Т О лько |
|||||||||
|
|
|
|
|
|
|
|
|
|
2ft |
|
|
|
|
после |
этого |
записывает |
их по адресам, |
пробитым |
на перфоленте. |
|||||||||
3 |
этом же масштабе |
ЕМ |
П 0 Л у Ч а ю т с |
я результаты |
после |
вы |
||||||||
числений по СП обратных тригонометрических функций |
|
(агсбш-Х, |
||||||||||||
а.1ссо£ х', cvtctg ОС, ctfccigx) |
|
|
|
|
|
|
|
|
|
|||||
Выполнение |
|
некоторых СП имеет ряд |
особенностей. |
|
|
|||||||||
Так при вычислениях по СП деления |
в случае равенства |
ну |
||||||||||||
лю делимого и делителя, |
а также в случае, |
когда делимое |
боль |
|||||||||||
ше делителя, |
происходит |
останов машины по |
переполнению. |
|
||||||||||
Останов машины произойдёт также при извлечении |
квадратно |
|||||||||||||
го корня из отрицательного числа. |
|
|
|
|
|
|
|
|
||||||
Подпрограмма |
вычисления |
функции |
t^'X |
и c i g ^ |
м.ч'еет |
|
||||||||
один начальный адрес 15243, |
причём вычисляется |
"Ц}^ |
.ес |
|||||||||||
ли |Х| находится в пределах |
0° - 45°, |
135°- 225°, |
£15°-360. |
|||||||||||
Возвращение |
в основную программу из СП в этом |
случае |
|
|||||||||||
происходит к команде по адресу К + 2, |
где |
К - |
номер команды |