Научная статья на тему 'Целочисленный алгоритм вычисления квадратного корня для микроконтроллеров'

Целочисленный алгоритм вычисления квадратного корня для микроконтроллеров Текст научной статьи по специальности «Математика»

CC BY
1316
139
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Целочисленный алгоритм вычисления квадратного корня для микроконтроллеров»

М.И. Ледовской

ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ ДЛЯ МИКРОКОНТРОЛЛЕРОВ

Известные алгоритмы вычисления квадратного корня предназначены, как правило, для режима вычислений с плавающей точкой [1]. В этом случае область

аппроксимации функции у = у[х (х>0) совпадает с интервалом изменения нормализованной мантиссы вещественного числа. Однако в микроконтроллерах режим плавающей точки зачастую не поддерживается, а его программная эмуляция приводит к значительным затратам процессорного времени. По этой причине математические вычисления выполняются в режиме фиксированной точки, где используется целочисленный формат представления данных.

Если в решаемой задаче аргумент квадратного корня принимает только целые значения, то можно ограничиться рассмотрением функции У = у/Х (Х>0) для нахождения целочисленного результата 0<¥<2п-1 -1, где п - разрядность формата данных (рис. 1).

п-1 п-2 1 0

Зн

Рис.1. Формат целочисленного значения квадратного корня

В общем случае требуется вычислить функцию у = 4х для вещественных значений аргумента хтп <х <хтах. Такую задачу можно решить в целочисленном формате данных путем отображения операции у = 4х из интервала хтп < х < хтах в интервал 0 <Х < 2”'1 -1 путем масштабирования [2]. В результате образуется целочисленная модель операции извлечения квадратного корня в виде

У = 2к 42п X , (1)

гдеХ=[хМх]ц и У=[уМУ]ц - целочисленные аналоги вещественных переменных х и у, причем 0<Х<2п'1-1 и 0<¥<2п-1 -1; Мх=2п+Г и МУ=2у - масштабы переменных х и у, выбираемые в виде целых степеней числа 2 (показатель г должен быть четным числом): Мх<(2п1 -1)/Хтах, Му<(2п1-1)/ Утах'; []ц - оператор округления до целого значения; 2 = Му/2п+г/^ - выравнивающий коэффициент.

Поскольку коэффициент 2к зависит от масштабов Мх и Му, которые в свою очередь выбираются, исходя из конкретных значений хтах и утах, то далее рассматривается неизменяемая часть модели, а именно: У = V2пX . Причем последняя

приводится к обычному виду У =-ГХ, где новый аргумент Х содержит множитель 2п и находится в интервале аппроксимации 22”'4<Х<22”'2 (рис.2). Заметим, что приведение аргумента Х к указанному интервалу выполняется с помощью операций сдвига на четное число разрядов, что существенно упрощает пост-обработку получаемого результата.

2п-1 2п-2 п-1 п п-1 п-2 1 0

Зн

Рис.2. Формат целочисленного аргумента

Целочисленный результат У связан с ожидаемым вещественным аналогом у соотношением вида у*=У/МУ , где у*- приближенное вещественное значение квадратного корня. Возникающая разность уу=у-у* является погрешностью вычисления квадратного корня вещественного аргумента у = 4х с помощью целочисленной модели (1).

Рассмотрим аналитическую оценку погрешности уу , учитывая две причины ее появления. Во-первых, вещественный аргумент х представляется в п-разрядном целочисленном формате данных с погрешностью IДх I <Ах/2=1/(2Мх), где Ах - квант [2]. Следствием данного обстоятельства является трансформированная погрешность вещественного значения квадратного корня уу. Во-вторых, значение квадратного корня У содержит неизвестную погрешность целочисленного алгоритма еУ. К ней добавляется погрешность округления Д, возникающая при учете выравнивающего коэффициента 2к<1. Эта погрешность подчиняется оценке Дк1<1/2. Суммарная погрешность еУ+Дк порождает соответствующую погрешность вещественного значения квадратного корня еу=(еУ+Вк)/Му. Таким образом, для погрешности уу справедлива оценка

ЫИФМ-

Наиболее оптимальным соотношением между погрешностями уу и еу является приближенный баланс уу ~ еу, который в развернутой форме имеет следующий вид:

1 Д или ----1------ъ?1±А. (2)

24ХИх Му 4утахМх Му

Из (2) получаем оценку IеУ I <Му/4у„шхМх+ Дк 1=0,25+0,5=0,75. Условие |?У|<0,75 является требованием, которое предъявляется к целочисленному алгоритму вычисления квадратного корня.

Как известно [1], квадратный корень наиболее эффективно вычисляется с помощью итерационного метода Ньютона, который имеет высокую скорость сходимости при наличии хорошего начального приближения. Ниже предлагается алгоритм начального приближения, который отличается от известных алгоритмов рядом достоинств.

Начальное приближение в данном алгоритме определяется путем линейной аппроксимации функции квадратного корня У =4Х по двум точным граничным значениям У(22п~4)=2п~2 и У(22п~2)=2п~1. Затем полученное приближение уточняется на величину методической погрешности, которая также аппроксимируется линейно на двух подынтервалах 22п'4<Х <22п'3 и 22п'3<Х <22п~2:

п 2 Гп+21 2п 4 \2~(п+2)(Х - 22п-4), если X < 22п-3;

У = 2п-2 + 5 ■ 2~( 2 (X - 2п ) + <! (3)

^2~(п+2)(22п-2 -X), если X > 22п-3.

Аналитический анализ методической погрешности алгоритма (3) показывает, что она подчиняется оценке I/л.У01<2п'5. Полная погрешность алгоритма еУ0 подчиняется такой же оценке, так как инструментальная погрешность пренебрежимо мала по сравнению с методической погрешностью.

При получении алгоритма (3) вместо операции деления на константу 3 введен сомножитель 5-2-4, поскольку дополнительная погрешность, возникающая из-за такой замены, существенно меньше методической погрешности. Что же касает-

ся коэффициента 5, то он легко реализуется с помощью операции сдвига и сложения, если его представить в виде 22+1. Следовательно, начальное приближение Y0 определяется с помощью операций сдвига и сложения, которые в микроконтроллерах выполняются наиболее быстро. Кроме того, алгоритм (3) содержит константы, значения которых можно легко найти, располагая разрядностью формата данных n. Эта особенность позволяет быстро адаптировать предлагаемый алгоритм для любой наперед заданной разрядности n, что выгодно отличает его от известных алгоритмов [1].

На рис.3 приведен график погрешности начального приближения еТ0, полученный путем моделирования алгоритма (3) при n=8 в системе Matlab7/Simulink6/Fixed-Point. Результаты моделирования подтверждают аналитическую оценку погрешности /eY0 /<2п-5=8.

Структура Simulink-модели для экспериментального анализа погрешности sY0 приведена на рис.4. Затененные блоки модели реализуют алгоритм начального приближения (3), а остальные блоки служат для вычисления погрешности eY0. Simulink-модель запускается из m-файла, где задается набор значений целочисленного аргумента Х из интервала аппроксимации от 22n-4 =212 = 4096 до 22n-2=214 = 16384 с шагом 1, а также обеспечивается вывод графика погрешности

eY0-

path(path,,D:\MATLAB701\work')

open_system('SqrtTestl')

X=[4096:1:16384]

sim('SqrtTestl')

plot(X,simout(:))

hold on

grid on

hold off

Аргумент Х x104

Рис. 3. График погрешности начального приближения

Рис. 4. 81ти11пк-модель для экспериментального анализа погрешности начального приближения

С учетом алгоритма (3) целочисленный алгоритм извлечения квадратного корня на основе метода Ньютона имеет вид

„ 2 ҐП+2І 2п 4 \2-(п+2)(Х-22п-4), если X < 22„-3;

У0 = 2 + 5 • 2~(„+2)(Х -22„-4) + -' ’ ' ’

2

-1

'-(„+2)(22„-2-X), если X > 22„-3.

\

X

' + ?к-1 V*к-1 ;

к = 1,2,...т ,

Уіг

(4)

где Уо - начальное приближение, т - количество итераций.

Количество итераций т в алгоритме (4) зависит от разрядности данных п, что отражено в приводимой таблице. При выполнении соотношений между п и т, указанных в таблице, погрешность целочисленного значения квадратного корня У~Ут с учетом инструментальной погрешности подчиняется аналитической оценке /еУ /<0,63. Заметим, что метод Ньютона компенсирует инструментальную погрешность, накопленную на предыдущей итерации. Поэтому при оценке погрешности бу в расчет принималась только интрументальная погрешность на последней итерации.

Таблица

Разрядность п 8 16 32 64

Количество итераций т 1 2 3 4

На рис.5 приведен график погрешности целочисленного значения квадратного корня єу, полученный путем моделирования алгоритма (4) при п=8 и т=1 в системе МайаЬ7/8ітиИпк6/Ріхе^Роіпі Результаты моделирования подтверждают аналитическую оценку погрешности /єу /<0,63.

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

Структура 8іти1іпк-модели для экспериментального анализа погрешности єу приведена на рис.6. Здесь затененный блок 8иЪ8у81ет является подсистемой, в которой выполняется целочисленный алгоритм извлечения квадратного корня (4). Остальные блоки 8іти1іпк-модели предназначены для вычисления погрешности єу. 8іти1іпк-модель запускается из т-файла по аналогии с моделью, приведенной на рис.4. Структура подсистемы 8иЪ8у81ет приведена на рис.7.

Рис. 6. 81ти11пк-модель для экспериментального анализа погрешности квадратного корня

Рис. 7. Подсистема $иЪ$уя1ет, реализующая целочисленный алгоритм вычисления квадратного корня

Алгоритм (4) можно использовать в микроконтроллерах для вычисления вещественных значений квадратного корня в целочисленном формате данных с любой наперед заданной точностью (разрядностью). Данный алгоритм не зависит от диапазонов изменения вещественных переменных и их масштабов, что обеспечивает его универсальность. Кроме того, алгоритм можно использовать для получения приближенного частного при обработке данных, которые по своей природе являются целочисленными. Алгоритм является простым в применении, поскольку он легко адаптируется к любой разрядности обрабатываемых данных.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Попов Б.А., Теслер Г.С. Вычисление функций на ЭВМ. Справочник. - Киев: «Наукова думка», 1984. - 599с.

2. Ледовской М.И. Обработка вещественных данных в микроконтроллерах с арифметикой фиксированной точки // Известия ТРТУ. -Таганрог: Изд-во ТРТУ, 2004, №2 (37). С. 52-58.

А.В. Красулин

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МИКРОПРОЦЕССОРНОГО КОМПЛЕКСА УПРАВЛЕНИЯ ИСПОЛНИТЕЛЬНЫМ ЭЛЕКТРОТЕХНИЧЕСКИМ УСТРОЙСТВОМ

Применение цифровых систем управления в целом и электротехническими устройствами [1] в частности получает всё более широкое применение. По сравнению с аналоговыми системами они обладают не только меньшими габаритами, но и рядом чисто технических преимуществ: более высокими показателями помехоустойчивости и точности и, что немаловажно, четко прослеживается тенденция снижения рыночной стоимости микроконтроллеров, на базе которых разрабатываются системы данного класса.

i Надоели баннеры? Вы всегда можете отключить рекламу.