Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 [63] 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Табл. 4.3. Тестовые данные полинома Р{х)

ilio

000000

0,1000-10

418000

ЗЕСССС

0,7520-10°

40С083

3FCCCC

0,9360-10°

40EF9D

40999А

0,1744-10

41DF3B

-0,2

ВЕ3334

0,1488-10

41ВЕ77

-0,4

BF3334

0,2024-10

428189

-0,6

С06666

0,2416-10

429АА0


Рис. 4.5. График функции извлечения квадратного корня

4.5. квадратный корень

Иррациональная функция извлечения квадратного

корня у = -\f X является обратной по отношению к функции возведения в квадрат у = х и определена для всех неотрицательных действительных чисел х. График функции представляет собой монотонно возрастающую кривую, расположенную вдоль оси абсцисс (рис. 4.5).

Известны различные методы вычисления квадратного корня, основанные на многочленных и рациональных приближениях, разложениях в биномиальный ряд и т. п. [45, 48, 70]. Чаще всего для вычислений используется итерационная формула Герона (частный случай формулы Ньютона):

,+ ,=0,5(у,+х/у,). (4-9)

где / = 0,1, yo~\f х - начальное приближение, значение которого выбирается по условиям несложности вычисления (константа или линейная функция) и макси-



мальной близости к искомому значению корня, что позволяет уменьшить число итераций. Обычно это приближение выбирается на основе эмпирической формулы, зависящей от диапазона изменения аргумента. Так, например, при 0,5<х<1 наилучшим приближением считается уо 0,5903x4-0,4173 [48]. В простейшем случае в качестве значения уо можно использовать непосредственно значение X, т. е. уо = х. Итерационный процесс вычисления корня заканчивается, когда значения двух соседних приближений yi и совпадают с требуемой точностью. Пусть, например, необходимо вычислить с четырьмя значащими цифрами = д/28,34 я:; 5,324. Примем уо = Ь. Тогда у1 = 0,5(5 + 28,34/5) 5,33, у2 = 0,5(5,33 -f

-Ь 28,34/5,33) « 5,324, уз = 0,5(5,324 + 28,34/5,324)« « 5,324. Так как t/2 » t/з, то процесс закончен. Сходимость итерационного процесса хорошая, и в каждом шаге число верных цифр примерно удваивается.

Рассмотренный метод реализован в программе вычисления квадратного корня ККОР:

1980 00В8 12С0 1000 19Е0

1980 AF

1981 F5

1982 Е5

1983 С5

1984 11D519 1987 СПБВОО 198А 1111219

ORG 1980Н ПМЗ SET 0В8Н ДДПЗЗ SET 12С0Н СЯПЗЗ SET 1000Н СРПЗЗ SET 19Е0Н

ККОР:

гПОДПРОГРАММА ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ У=Х»»(1/2). гВХОДНЫЕ ПАРАМЕТРЫ!(H-L)-АДРЕС АРГУМЕНТА ХгПРЕЯСТАВЛЕН-гНОГО В ФОРМЕ ТРЕХВАЙТНОГО ДВОИЧНОГО В ПРЯМОМ КОДЕ ЧИСЛА гс ПЛАВАЮЩЕЙ ЗАПЯТОЙ,(BfС)-МАСКА ТОЧНОСТИ,ОПРЕДЕЛЯЮЩАЯ гТОЧНОСТЬ ВЫЧИСЛЕНИЯ ФУНКЦИИ у (СОДЕРЖИТ НУЛИ в МЛАДШИХ гНЕЗНАЧАШИХ И ЕДИНИЦЫ В СТАРШИХ ЗНАЧАЩИХ разрядах).РЕ-гЗУЛЬТАТ ФОРМИРУЕТСЯ в ОБЛАСТИ ПАМЯТИ -БУФЕР-.выходные {ПАРАМЕТРЫ:(А)-КОЛИЧЕСТВО ВЫПОЛНЕННЫХ ИТЕРАЦИИ В ПРОЦЕС-гСЕ ВЫЧИСЛЕНИЯ УгСУ=1-ПРИЗНАК ПЕРЕПОЛНЕНИЯ ИЛИ АНТИПЕРЕ-гПОЛНЕНйЯ ПОРЯДКА РЕЗУЛЬТАТА.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫг гСОХРАНЯЮТСЯ (HfD,(ВгС).глубина СТЕКА-Х.ИСПОЛЬЗУЮТСЯ г ПОДПРОГРАММЫ:«ПМЗ» f «ДДПЗЗ» f »К0МЗ» f•ЯЯФ17»,«ПМАг», г»СЯПЗЗ»,»0БМЗ«,»ЯМАН2»,»ПМАН2»г«НМАН2»,«Я0ПЯ«,*Д0ПН». :ОЦЕНКА:ЯЛИНА-Вг байт (+424 БАЙТ ПОДПРОГРАМН),ВРЕМЯ-НЕ гБОЛЕЕ (219+6350»К> тактов,ГДЕ К-КОЛИЧЕСТВО ИТЕРАЦИЙ.

г»»»»»»*»*»*»»»»»»»»»»*»»»»»»»»»»**»»»»»»»»»»*»»»»«»«»««

XRA PUSH PUSH PUSH

гПЕРЕНЕЩЕНИЕ АРГУНЕНТА LXI Г,БУФД CALL ПНЗ LXI Р,БУФЕР

г(А)-СЧЕТЧИК ИТЕРАЧИЙ=0 гСОХРАНЕНИЕ СЧЕТЧИКА гСОХРАНЕНИЕ АДРЕСА X гСОХРАНЕНИЕ НАСКИ X В "БУФЕР" И "БУФЯ"

гПЕРЕНЕЩЕНИЕ В "БУФЯ*



198D СПВЗОО

1990 ЕВ

1991 35

1992 01D519

1995 cncoia

1998 IIACD19

199В 11D819 199Е CDEeOO 19А1 ЕВ

19А2 CDOOlO 19А5 DACD19 19А8 60 19А9 69 19АА 35

19АВ ЕВ 19АС 01 19AD 21D219 19В0 CIIE019 19ВЗ САСЕ19

1986 ЕВ

1987 11D219 19ВА СПВВОО

CALL ПМЗ ;ПЕРЕМЕЩЕНИЕ В "БУФЕР"

$ВЫЧИСЛЕНИЕ НАЧАЛЬНОГО ПРИБЛИЖЕНИЯ У(0)=Х/2 В "БУФЕР" XCHG S(H.L)-АДРЕС "ВУФЕР"

tCR Н ;УНЕНЫ11ЕНИЕ П0РЯДКА:Х/2

;ДЕЛЕНИЕ АРГУМЕНТА X НА ТЕКУЩЕЕ ПРИБЛИЖЕНИЕ !Х/У(1)

ЧИКЛ: LXI В.БУФД

CALL ДДПЗЗ jЧАСТНОЕ В "БУФД" JC ЛЕР1 $ЕСЛИ ОШИБКА ПОРЯДКА

;ПЕРЕМЕЩЕНИЕ ТЕКУЧЕГО ПРИБЛИЖЕНИЯ ДЛЯ СЛОЖЕНИЯ Б "БУФ" LXI BfEy*

CALL ПМЗ гПЕРЕМЕШЕНИЕ ИЗ "БУФЕР" В "БУФ" XCHG 5(H.L)-АДРЕС "БУФ"

гВЫЧИСЛЕНИЕ ПРИБЛИЖЕНИЯ:У(1+1)=0.5»(У(1)+Х/У(1)>

CALL СДПЗЗ

JC ПЕР1

на» НгВ

HOW L.C

DCR Н ;СРАВНЕНИЕ ТЕКУЩЕГО ПРИБЛИЖЕНИЯ У(1) ХСНВ

POP В

LXI Н.БУФЕР

CALL СРПЗЗ

JZ ПЕР2

гУ(1+1) В "БУФД" ;ЕСЛИ ОШИБКА ПОРЯДКА

;(H.L)-АДРЕС "БУФД" $ДЕДЕНИЕ YlI*l)/2

С ОЧЕРЕДНЫМ ;(D.E)-АДРЕС "БУФД" гВОССТАНОВЛЕНИЕ МАСКИ

гВНЧИСЛЕНИЕ ПРИЗНАКОВ CY.Z

гЕСЛИ у(1+1)=у(1)

гПЕРЕМЕЩЕНИЕ ПРИБЛИЖЕНИЯ У(1+1) НА МЕСТО У«1) XCHG s(H.L)-AHPEC У(1+1)

LXI D.БУФЕР CALL ПМЗ гПЕРЕМЕЩЕНЙЕ АРГУМЕНТА XCHG

X В "БУФН" г(В.Е)-АДРЕС "БУФД"

19ВЕ Е1

гВОССТАНОВЛЕНИЕ АДРЕСА X

19BF CDB800

CALL

;СЧЕТ ИТЕРАЧИЙ

гВОССТАНОВЛЕНИЕ СЧЕТЧИКА

19С2 F1

19СЗ ЗС

гУВЕЛИЧЕНИЕ СЧЕТЧИКА

19С4 F5

PUSH

гСОХРАНЕНИЕ СЧЕТЧИКА

19С5 Е5

PUSH

гСОХРАНЕНИЕ АДРЕСА X

19С6 CS

PUSH

гСОХРАНЕНИЕ МАСКИ

19С7 21D219

Н.БУФЕР

г(H.L)-AДPEC У(1+1)

19СА С39219

ЧИКЛ

гЗАЧИКЛИВАНИЕ

19CD С1

ПЕР1! POP

гВОССТАНОВЛЕНИЕ МАСКИ

19СЕ Е1

ПЕР2: POP

гВОССТАНОВЛЕЖЕ АДРЕСА X

19CF D1

гВОССТАНОВЛЕНИЕ СЧЕТЧИКА

19D0 7А

;(А)-СЧЕТЧИК ИТЕРАЧИЙ

19D1 С9

гОБЛАСТЬ ХРАНЕНИЯ РЕЗУЛЬТАТА

19D2

БУФЕР: US

гЗ БАЙТА

19D5

БУФД! US

гЗ БАЙТА

19D8

БУФ: US

гЗ БАЙТА

0000

Эта программа носит исследовательский характер, поскольку, во-первых, область значений аргумента неограниченна и в качестве начального приближения выбрано



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 [63] 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0685
Яндекс.Метрика