книги из ГПНТБ / Основы теории алгоритмов учеб. пособие
.pdf
|
|
|
|
|
|
|
, |
- |
120 |
- |
|
|
|
|
|
|
для |
Ч* |
* |
^ |
( |
к ч |
,.4»,2,1 |
|
|
|
|
|
|
|
|
||
' |
Р |
ы |
+ i X |
C <3,* ' ) ^ + |
5 i - p t + ( а х + В ) с 2 ' 1п. |
|
|
|||||||||
Здесь |
коэффициент 0 ,10 |
. . . |
00 введен для округления. |
|
| |
|||||||||||
|
Максимальное чиоло однозначных слов о учетом олова ко»! |
|||||||||||||||
эффицнента |
& |
|
^ подлежащих Словению, равно |
|
ЧГ « |
2 к |
j, |
|||||||||
Кроме того, |
для |
1 = 1 |
имеем |
|
]?4 < |
I , |
поэтому число инан |
|||||||||
колнх разрядов |
|
Ц, |
можно выбрать |
из уоловия |
|
|
| |
|||||||||
|
|
|
|
|
•2*"* |
< |
2 к - 4 |
2 |
<v. |
|
(4 .4 i) |
! |
||||
ти. |
Реализуем (4.39) и (4.40) на примере удвоенной точнос |
|
||||||||||||||
Из (4.41) |
имеем |
|
= |
2, |
Схема вычисления а х + & |
при» |
||||||||||
|
|
|||||||||||||||
мет вид |
(рио. |
4.6) |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
й |
»• |
|
Д| |
I |
а . |
I |
|
|
|
|
|
|
|
|
|
|
X |
= |
|
X. |
I |
* ( |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Ai |
|
|
|
|
|
|
|
|
|
|
|
|
|
At |
[ |
Аэ |
I |
|
|
|
|
|
|
|
|
|
|
|
|
|
/Ц ______ As |
|
|
|
|
|
|||
|
|
|
|
|
Ае |
|
|
Аг |
|
|
|
|
|
|
|
|
|
|
6 в |
|
|
В, |
|
|
6 г ’ |
1 0 - 0 0 0 |
|
|
|
|
|||
|
|
п- |
f |
|
( V |
|
|
Пй |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. |
4.S |
|
|
|
|
|
|
Здесь, |
при накоплении суммы чисел |
Д а , Д 4 , А г * |
6 |
возможны 3 единица переноса, Поэтому для |
сохранения знака |
* |
|
суммы ( А & и |
Ац ~ старшие части частичных произведений |
представлены со знаками) введем дополнительно 3-й знаковый раа ряд.
- 121 -
|
Команда специальной записи |
( ||=Ф |
) |
реаяиэуетоя сле |
|||
дующим образом! |
|
|
|
переносится в |
|||
|
1 . |
Содержимое цифровых разрядов |
£ . |
||||
память машины е положительным знаком. |
|
|
|
||||
|
2 . |
Цифровые разряды 51 |
гноятся. |
|
|
|
|
|
3 . Содержимое знаковых разрядов |
£ |
переносится в |
||||
младшие разряди 5! • При этом, |
если знак оуииы положителен |
||||||
( |
Ш |
= о ), то остальные разряди оушатора |
заполняются еди |
||||
ницами (заполняются также и знаковые разряды). |
|
||||||
|
Введем две команды: |
|
|
|
|
|
|
|
1. Специальное умножение без округления о сохранением |
||||||
младшей чаоти произведения на регистре множителя-частного |
|||||||
( |
Рмч ) . Условное обозначение - |
® |
, |
|
|
||
|
2 . |
Запиоь содержимого Рмч |
о положительным знаком в |
||||
память машины. Условное обозначение - К Рмч>| |
. |
||||||
|
Тогда алгоритм о использованием команд в параграфе 4.3 |
||||||
будет |
>£- |
|
|
|
|
|
|
|
|
O L > - > Ae |
|
|
|
|
|
|
|
|<Рмч>|-*Аг |
|
|
|
. |
|< Р ччЯ - » а 5 |
u .« > |
а« - * £
<£ > ® Я я
| < P m4 > |- » A s
< £ > ® 0 С *
-122 -
<£ > e As
<51>Ф As |
ю © |
- |
о |
о |
|
< 5: |
0> , |
<£ > к = > 0
<£ > © А и
<£>© А 4
<£>© Аг
<S > © & 2
<SL>II=> Пи
<£ > © А б
Реализуем умножение по системе (4.19), тогда линейная
функция реализуется оиотемой |
|
|
|
|
|
||||
n«.j, |
+Pft.j)г-'1*1'"- <3f«*i) г41*"", |
|
|||||||
|
(длй |
j=lc |
имеем P(itK)“0; |
П(й|)“0)-. |
|
|
|||
|
|
для |
t-k |
u j=k, 1м,...,2,< ; |
|
|
|||
(<Л.2~**)(Ч^2~*") +Gfi+i> 2~^)и = |
(4,43) |
||||||||
|
|
|
|
2 - (i^ |
rt4+ |
П и ) 2 4c+i)n. |
|
|
|
|
|
(для |
P (i+j*o |
“ П О ■ |
|
|
|||
Для каждого фиксированного |
i = |
к , |
к ~( |
3,2, |
параметр |
||||
| |
принимает значения к , |
к-{ |
, . . . , 2 , 1 . Для |
' i= I |
первая |
||||
итерация заменяется |
|
|
П(»а 2 ' й,г\ |
b t - f f u . |
|||||
|
E W |
|
|
|
|||||
где для |
С«=кН , |
b t - 0,10...00 константа округления по |
|||||||
( |
k + |
I) -му олову: |
|
|
|
|
|
||
|
для |
Т - |
к t k-i |
.........2,1 |
D t- олова числа |
Б , |
|||
|
Максимальное число чисел, которое приходитоя складывать |
||||||||
в одной итерации системы (4.43), |
равно четырем (случай |
1= I ) . |
Отсюда чиоло единиц переносов в знаковый разряд при сложении не больше трех. Поэтому для сохранения знака частичных произ ведений и их суш достаточно иметь 3 знаковых разряда.
- 123 -
Реализуем (4.43) на примере удвоенной точности вычисле ний. Для этого будем использовать следующие команды:
1. |
Посылка числа на Рмч |
( < « 0 —> Рмч |
) . |
|
2. |
Запоминание |
< Рмч > |
( \<-Рмч>| — |
). |
3. Специальное сложение из (4.31). |
|
|||
4 . |
Умножение с накоплением. Здесь < Рмч> множится на |
<«4> я складывается о накоплением <Х > (<Рмч>®<4>+<£>,
Алгоритм: |
С1г-*2. |
|
|
Qi -> ft»4 |
|
|
<Рмч>®Л* +< £ > |
|
|
< Х > - > А г |
(4.44) |
|< P m > | - ^ A j А» -> 5 :
<51 >Ф 0 , 1 0 ...ОО
01г. Рмч
<Рмч>® 30-1 + <51 >
<5 1 > е А г
<£ > Ф $ г
0< -> Рмч
+ Ч 2 >
<z > + b i
<Z > - t П: .
В(4.42) и (4.44) на сложение о каждым оловом коэфзаьшз:
ента 6 затрачено по одной простой команде. Для |
к . - |
||
значней точности будет |
затрачено |
к простых команд оложения. |
|
Тогда время реализации |
алгоритма |
линейной функции |
|
й н = k am-to + k b .
Абсолютный выигрыш во времени составит
д 4 : =» "Ьи - "Ьлн « k ( t - ( ) b .
Алгоритмом линейной функции можно реализовать не толь ко функции, приведенные к охеме Горнера, но и функции вида
т
р* = Ole -Р . (4.45)
i-1
- 124 - |
|
Приведен (4.45) к линейной схеме ( Л - |
схема) |
F*(С'*"((<Я°+с,1&0+®а1>г)+-"+С?т£тЗ • |
(4 4g) ! |
В (4.46) кавдая скобка реализуется линейной функцией. Колинеот- |
0 0 обращений к алгоритму линейной функции определится порядков m .
/
|
125 - |
|
Г Л А В А 7 |
|
СИНШ АЛГОРИТМОВ ВЫЧИСЛЕНИЯ НЕКОТОРЫХ ФУНКЦИЙ |
|
ПРИ ОГРАНИЧШОЙ ДОТЕ РАЗРЯДНОЙ СЕТКИ УВМ |
|
5 .1 . Некоторые Функции о повышенной точеоотью |
|
вычислений в клаосах степенных разложений |
j |
и итерационных поопессов |
В настоящее время известен ряд численных методов начис |
ления элементарных функций [61,623. Выбор того или иного ме тода среди известных зависит от специфики вычислительной ма шины и требований, предъявляемых к показателям алгоритма вы числения.
Повышенная точность вычислений значительно ухудшает ос новные показатели -t и d эффективности алгоритмов. Это Обуславливается, прежде всего, большими соответствующими пока зателями алгоритмов простых операций повышенной точности, кото рые являются составляющими алгоритмов вычисления элементарный
функций. |
|
|
|
При вычиояешш |
значения функции на машине широко исполь |
||
зуются различные численные методы; разложение в ряд Тейлора- |
|||
Маклорена, приближение разного рода многочленами, |
метод |
итера |
|
ций |б З ,6 4 | .Любой из |
этих вычислительных методов |
и ряд |
других - |
может быть разбит на отдельные повторяющиеся участки о однозначнымя операциями.
|
Еоли для достижения необходимой точности требуется обра |
|||
щаться к такому участку N * |
раз, |
который проводит вычисле |
||
ния с |
к -аначной точностью, |
то |
общее вреда реализации |
|
|
|
|
|
(5.1) |
где |
Й ч - время реализации отдельного участка о |
к -значной |
||
точностью. |
|
|
|
|
|
Каждый участок состоит из простых операций |
(сложение, |
вычитание, умножение), которые выполняются с повышенной точ
ностью. Как была показано |
в главе 1У, время - tw |
тем больше, |
|
чем выше степень точности |
к . |
Отсюда величина |
Т раотет |
о увеличением к ♦ Более того, |
с ростом степени точности рао- |
- 126 -
тех я число обращений N k к повторяющемуся участку» Например, с ростом точности в ряде Тейлора следует выбирать большее число
членов разложения. |
|
Очевидно, что значительный роот времени Т |
может при |
вести к нежелательным показателям эффективности |
алгорит |
мов управления. В связи о этим в настоящей главе рассматрива
ются некоторые возможности уменьшения N k и 4!Чч |
в различных |
||||||||||||||||
клаооах вычисления элементарных функций. |
|
|
|
|
|
||||||||||||
|
|
В классе отепенных разложений Тейлора-Маклорена функция |
|||||||||||||||
|
|
|
S |
C |
* |
|
Р |
xCiVfi |
X |
- |
|
|
i |
# |
|||
|
|
|
|
) |
“ |
о • |
|
|
|
||||||||
Согласно [ б 1 , |
для |
|
|
1=0 |
|
|
|
|
|
|
|
||||||
знакочередувдего ряда оотаточный член |
|||||||||||||||||
|
|
|
|
J |
R |
p l |
|
|
< |
! |
О р |
+ |
П |
|
,(5,2) |
||
где |
|
Q p*i— ({>*<) |
|
|
-й член ряда. |
|
|
|
|
|
|||||||
|
|
Боля вое члены ряда одного знака удовлетворяют условию |
|||||||||||||||
то |
конечный член ряда |
|
p> |
1 |
|
|
|
■ |
|
||||||||
|
|
|
|
|
G |
|
|
5 |
|
|
|
|
|||||
Отоада оотаточнай член |
R |
p |
l |
« l |
a |
p |
l |
- |
|
||||||||
|
|
|
|
|
| |
|
|
|
|||||||||
|
|
Для многих степенных разложений элементарных функций, |
|||||||||||||||
содержащих в знаменателе |
j |
! |
, |
в |
интервале изменения аргумен |
||||||||||||
та |
[о |
+ l ] |
при |
р > 4 |
|
условие |
(5.3) можно записать |
так: |
|||||||||
|
|
|
|
|
I RP I < |
1«р I • |
|
|
|
|
(5-4) ' |
||||||
|
& |
Конечный р |
-член |
ряда |
заданной абсолютной погрешности |
||||||||||||
|
при выполнении (5 .2) |
н (5,4) можно выбрать из условия |
|||||||||||||||
|
|
|
|
O p |
^ |
^ |
0(i+i |
> |
|
|
|
|
» |
||||
где |
|
Op |
и |
О р н |
- |
|
максимальные значения членов |
на всем ин- |
|||||||||
тчдвале изменения аргумента. |
|
|
|
|
|
|
|
|
|
- 127 -
|
Реализуя |
Р +* |
член разложения по схеме Горнера, |
оо- | |
|||||||||||
глаоно (5 .1) |
и |
(4 .27), получиы^для |
N « = p |
|
|
|
j |
||||||||
|
Т = * р £ * ч — р ( ^ м |
+ - ^ уин) |
=а |
|
|
|
|
||||||||
|
|
' |
|
|
' |
|
|
|
|
|
|
|
(5.5) |
|
|
|
|
* р ( к И о + 1< ш ^ в ) - p k ( £ + k m ) i 0 . |
|
|
|
||||||||||
Пусть для |
|
И |
-разрядной сетки |
сГ= 2 н , |
а для повышенной |
||||||||||
точнооти абсолютная ошибка метода 8 я |
2 * |
. Обозначим через |
|||||||||||||
N i |
порядковые номера членов ряда, |
которые обеспечивают точ' |
|||||||||||||
нооть вычисления в |
( |
i n |
) -ы разряде |
t= |
1 , 2 , . . . , |
к |
, |
||||||||
тогда |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Out |
> |
2 ' ы > й н т . |
|
(5.6) |
|
|
|||||
Для достижения точности в |
( ia K )-м разряде из (5.6) |
|
следует |
||||||||||||
система |
|
|
|
|
|
|
|
|
|
|
■ . |
|
|
|
|
|
|
|
|
|
a Hi > Т * |
> |
|
|
|
|
|
|
|
||
|
|
|
|
|
С(щг У 2 |
> Q n*.+1 |
у |
|
|
|
|||||
|
|
|
|
|
atiK > 2 ~ kH> a N^ i |
, |
(5.7) |
|
|||||||
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
% |
|
|
|
|
где |
Ык=Р |
, |
a |
|
Nt(+I ■ |
р+ I. |
|
|
|
|
|
||||
Преобразуем |
(5 .7) к виду |
|
|
|
|
|
|
|
|
|
|||||
' |
Ос |
|
|
а , |
|
|
Q |
a |
|
Он, > 2 ~И |
|
(5.8) |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
2~* |
> |
|
Он, +1 |
Q^+z |
. . . |
Qfi/Z> 2 |
|
|
|
|
||||
< г * |
> |
|
&НС+1 |
0*1+2 |
• |
• • ■W««)^ 2 ^ |
|
|
|
||||||
|
2 ‘ (' 0"> |
а . , . , |
Ow-f+2 |
• |
• |
• Cli/K> 2~*w |
|
|
|
2 ~ к* > |
• |
|
|
|
|
|
|
|
|
- 128 - |
|
|
|
|
|
|
|
Из (5.8) видно, что члены |
|
|
, |
Qn k- , +z |
i . . . * 0 |
iv* не пре |
||||||||
вышают значения |
Ы к |
|
|
и при выполнении уоловия (5,2) и |
||||||||||
(5 .4) |
|
|
|
|
|
. |
|
, |
|
|
|
|
||
|
|
|
£ _ |
а * |
|
< |
|
|
|
|
|
(5.9) |
||
|
|
|
V-Nit+1 |
|
|
|
|
|
|
|
|
|
||
|
Таким образом, |
суммирование данных членов рада можно |
||||||||||||
проводить с одинарной точностью. |
|
|
|
|
|
|
||||||||
|
Для членов |
|
|
|
|
|
|
,.«».C Iiyh можно запи |
||||||
сать, |
что |
|
( |
|
|
|
|
. - (К-2) И |
|
|
|
|
||
|
|
|
X |
а * |
< |
|
|
|
|
|
||||
|
|
|
2 ' |
|
|
|
|
(5.Ю ) |
||||||
|
|
T=Nk-i +1 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||
и суммирование этих членов рада следует проводить не ниже, |
||||||||||||||
чем о удвоенной точностью. |
|
|
|
|
|
|
|
|
||||||
|
Неравенство |
(5.10) |
совместно |
о (5.9) |
дает |
|
|
|
||||||
|
|
Nк |
|
|
|
|
|
|
|
|
|
|
|
|
В общем олучае для членов C?Wi4| |
М |
ы |
2с |
О бусловив |
|
|||||||||
|
|
W;-m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
a * |
< |
2 |
гЫ |
|
|
|
|
|
|
|
|
|
|
<Р* NiH |
|
|
|
|
|
|
|
|
|
|
|
|
позволяет сумму этих членов вычислять о точностью |
E k - l 3 . |
|||||||||||||
С учетом последующих членов |
|
|
|
|
|
|
|
|||||||
|
|
1 |
> |
< |
2 |
Л |
|
|
|
|
|
|
|
|
Для |
i s |
I имеем первые члены Of., |
0< ,Cfa , . . . , Ofv( |
, |
суммиро |
|||||||||
вание которых вдет |
о |
К -значной точностью. |
|
|
|
|||||||||
|
Таким образом, вычисляя с |
|
к-значной точностью пер |
|||||||||||
вые члены рада, |
а остальные с |
точностью, меньшей |
к |
, |
значи |
|||||||||
тельно улучшим показатель |
Ь |
эффективности алгоритма. |
Как |
|||||||||||
правило, |
степенные разложения Тейлора-Маклорена на вычислитель |
ных машинах реализуются по схеме Горнера или с использованием рекурентных соотношений. Поэтому вычисление оуммы рада начи
нается о младших членов ( Q p , O |
p - i |
, . , . с, одинар0 ^ 0 |
ной точностью. Затем переходим к |
удвоенной точности и так да- |
)- |
|
|
89 - |
|
|
|
|
|
|
|
|
лее. Заканчиваем вычисления о |
к -значной точностью. |
||||
Повторяющийся участок вычисления но схеме Горнера со |
|||||
стоит из операций умножения и оложения. Поэтому |
|
||||
.CK-U-oJ |
iTK-CH)] |
гСк-t-OJ |
|
||
t v 4 |
— "Сел |
-I- |
х . smh |
= |
|
|
= [ k - ( £ . - 0 ] { f c + [ k - ( i - 0 ] m ] t o . |
|
|||
Общее время реализации всего ^яда |
|
|
|||
Т - |
+ (Nz- N i) -Ьуч + •■• + (N k- N*-4) ^ |
|
|||
: N i[6 +(2k -f)ftl]+*** + |
N/tf-i ( £ +5 гс)+№*н (£+Згп)+М ((£+м). |
||||
Отовда |
|
|
|
|
|
Т |
- X |
N i { 6 + [ 2 ( X - 0 + i ] w } . |
(5,11) |
При реализации ряда Маклорена по схеме Горнера для хранения постоянных коэффициентов % ^ \ о )
лс ‘ “ Т Г
членов ряда О |
j =С^ X |
требуетоя объем долговременной |
||
памяти |
D - ( N - H ) К « ( р + * ) К . |
|||
|
||||
|
|
|
|
(5.12) |
Однако |
этот |
объем значительно уменьшается, воли учесть, |
||
что для хранения констант Су*., +< |
, Су^+л... .. Су* достаточно |
|||
по одной ячейке (из |
системы (5.8) |
данные члены меньше 2 " 0 ^ и), |
||
для констант Сук-л+< |
.........достаточно по 2 ячейки, а для |
|||
констант Со , |
С» , .. . , С у , |
необходимо но к ячеек. |
||
Тогда объем долговременной памяти |
||||
D - ( N 4 M ) K |
+ ( N a- N i ) ( k - 0 + ( N . - N 0 ( K - 2 ) + ... + |
+( N1 - Nl-i) [k - ( t- о] +• *•+(Nk-i+ IVif-i)2+(Nk-IYk-i)»
=k + Ni 4- Nz + --- +Nk,
или