Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие

.pdf
Скачиваний:
5
Добавлен:
20.10.2023
Размер:
8.52 Mб
Скачать

- 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,

где

К -

номер команды

Соседние файлы в папке книги из ГПНТБ