М.И.Ледовской
АЛГОРИТМЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ ДЛЯ ВОСПРОИЗВЕДЕНИЯ МНОГОМЕРНЫХ ФУНКЦИЙ
В ряде областей науки и техники возникает задача воспроизведения траекторий в пространстве двух и более независимых аргументов. Примером могут служить системы программного управления металлорежущими станками, робототехнические системы, устройства отображения информации и т.п.
В двумерном случае задача может сводиться к формированию траектории, которая задается неявно в виде функции/{х,у)=0, где х и у - независимые аргументы. Если искомая траектория аппроксимируется ломаной кривой, проходящей через узлы координатной сетки, то точность приближения достигается путем уменьшения приращений аргументов Ух и Уу (рис.1).
Рис.1. Процесс аппроксимации траектории
Текущий шаг формирования аппроксимирующей траектории выполняется как координатный или диагональный. Выбор направления текущего шага может производиться путем вычисления следующих приращений функции f(x,y):
Vxf = f(x +Vx,y)- f(x,y),
V yf = f(x, y + Vy)-f(x, y), (1)
V x+ yf = f(x +Vx, y + Vy )— f(x, y),
где Vxf и Vyf — координатные приращения, Vx+f — диагональное приращение. Данные приращения позволяют оценить крутизну функции f(x,y) по трем направлениям и тем самым выбрать направление рабочего шага.
Из (1) следует, что в текущем шаге вычисляются три значения функции f(x,y), из которых только одно становится рабочим, а два других являются вспомогательными. При увеличении количества независимых аргументов объем вспомогательных вычислений существенно возрастает. Данное обстоятельство приводит к завышенным требованиям к производительности микропроцессорной системы, на которую возлагается формирование траектории.
Между тем способ вычисления приращений по формулам (1) имеет недостаток, который заключается в следующем. В случае малых значений Ух и Уу приращения У/, У/ и Ух+/ вычисляемые как разности близких значений функции /(х,у), получаются малоразрядными, т.е. с нулевыми старшими разрядами. Отсюда следует, что время, которое расходует микропроцессор на получение старших заведомо нулевых разрядов приращений, является непроизводительным.
Отмеченный недостаток устраняется в другом способе вычисления приращений многомерных функций [1]. Его суть заключается в том, что приращения функции по пространственным координатам определяются в результате вычисления аналогичных приращений во всех арифметических операциях, входящих в данную функцию. Для обоснования такого подхода применительно к рассматриваемой задаче определим граф функции /(х,у) в виде 0=0{Б,К}, где £ - множество арифметических операций, представляющих собой вершины графа, Я - множество дуг (переменных), отображающих информационные связи между вершинами.
Кроме того, введем в рассмотрение пространственный дельта-оператор У, обеспечивающий вычисление приращений функции ^х,у):
Vx V ^
V/ = V у /= V у/
Vx+ у _ V x+ у/_
Нетрудно показать, что применение оператора V к функции /(х,у) эквивалентно воздействию его на граф 0{Б,К}, причем
VО = 'VG{S,R} = G{VS,VR} . (3)
Из (3) видно, что граф приращений VG легко образуется из графа функции G путем простого переобозначения дуг и вершин. Кроме того, граф VО предписывает
применение оператора V ко всем арифметическим операциям £ графа G, находящимся в его вершинах, и к переменным Я, образующим информационные связи между вершинами. Следовательно, для нахождения приращений V, Vyf и Vx+yf необходимо вычислить аналогичные приращения во всех арифметических операциях функции /(х,у).
Следуя методике, изложенной в [1] , получим алгоритмы арифметических операций на основе приращений по пространственным координатам. Обозначим
через і номер текущего шага. Тогда применение оператора V к арифметической операции сложения (вычитания) = /р ±/д приводит к алгоритму вида
^хїкі = ^хїрі ±Vх!ф>
Vу/кі = ^у/рі ±Vу/ді’ (4)
Vx+ уїкі = V х+ у/рі ± Vx+ у їді’
где/к,/г и- промежуточные переменные функции/(.х,у).
Особенность рассматриваемых алгоритмов заключается в том, что рабочие значения промежуточных переменных вычисляются с учетом управляющего век-
тора, который задает тип /'-го шага (координатный или диагональный). В частности, значение функции / определяется по формуле
= !к(1 -1) + (мх, & му, )У х!рг + (их1 & му, )У у!м + (мх, & му, )У х+ у!м , (5)
где их, иу/ - компоненты управляющего вектора Ум,:
УМ = [мх1>му1] =
[1,0 ] - координатный шаг по х;
[0,1]- координатнышшагпо у; (6)
[1,1 ] - диагональнышшаг.
Вектор Ум, вырабатывается на /-ом шаге с помощью приращений У/ , У/
и Ух+/ функции /(х,у) и является общим для всех выполняемых операций. Заметим, что использование управляющего вектора в вычислительных операциях
предложено ранее в работах [2,3], посвященных воспроизведению многомерных функций на цифровых интегрирующих машинах.
Для операции умножения/ = алгоритм на основе приращений по пространственным координатам имеет следующий вид:
У'х!к = 1р(1-1 )Ух!д1 + (' Ад(, -1) + Ух/дг )Уxfpi,
Уу~к = /р(,-1 )Уу/д, + (/д(,-1) + Уу/д, )Уу/р,, (7)
Ух+ у/кг = /р(,-1Ух+ у/д, + (/д(,-1) + Ух+ у/д, )Ух+ у/р,.
Приращения У/ У у/к,, У х+ у/к, подвергаются округлению в соответствии с
алгоритмом, полученным в [1]. Особенность алгоритма заключается в том, что все приращения округляются с учетом общего остатка е/.1, полученного на предыдущем шаге:
У х/к, = Р(У х~кх + е,-1 )>
У у/к, = Р(У у1ш + е,-1 ), (8)
У х+ у А, = Р(У х+ у1ш + е, -1 )’
где Р(-) - функция, обеспечивающая выделение округленного приращения.
Новый остаток е/, как и рабочее значение /, формируется в соответствии с управляющим вектором Ум,:
ех, = К(У хТкл + е,-1 ),
еу, = К(У у!кх + е,-1 ), (9)
е(х+у ) = Н-(У х+ у~кх + е,-1 ), е(■ = (мх&му )ех, + (мх&му )ех(■ + (мх & му )е(х+ у ) ,
где ех, еу/ - координатные остатки, е (х+у)/ - диагональный остаток; К(-) - функция, обеспечивающая выделение остатка.
В случае операции деления / = // оператор У следует применить к соотношению / = // + г, как это показано в [1], где г - неразделенный остаток дели-
(11)
мого fp. В результате можно получить следующий алгоритм на основе приращений по пространственным координатам:
V'xfki = ()i —1 + V xfpi — fki *V xfqi ) div (fq(i—1) + V'xfqi )>
Vyfki = () —1 + Vyfpi — fk * Vyfqi ) div (fq(i—1) + Vyf I (10)
V x+ yfki = (ri —1 + V x+ yfpi — fki * Vx+ yfqi )di (fq(i—1) + V x+ yfqi )>
где div — оператор получения частного. Из (10) видно, что приращения Vxfri, Vfki и
V+f формируются с использованием общего остатка делимого ri-1, полученного на предыдущем шаге.
Новый остаток ri, как и остаток ei в операции умножения, определяется с учетом управляющего вектором Vui:
rxi = (ri—1 + Vxfpi — fki *Vxfqi )mod (fq(i—1) + Vxfqi )> ryi = (ri—1 + Vyfpi — fki * Vyfqi )mod (fq(i—1) + Vyfqi ), r( x+ y ) = ()i—1 + V x+ y fpi fki *Vx+ yfqi )mod (fq(i—1) + V x+ yfqi )> ri = (uxi & uyi frxi + (uxi & uyi )ryi + (uxi & uyi ))(x+ y ) >
где rxi, ryi — координатные остатки, r(x+y)i — диагональный остаток; mod — оператор получения остатка.
Достоинство рассмотренных алгоритмов заключается в том, что их трудоемкость зависит от разрядности обрабатываемых приращений. При уменьшении разрядности приращений в алгоритме (7) операции умножения могут выполняться ускоренно. В алгоритме (10) при вычислении малоразрядных приращений частного разрядность делимых величин близка к разрядности делителей, что также позволяет выполнить операции деления ускоренно. Кроме того, открывается возможность для получения специальных алгоритмов деления, отличающихся максимальной простотой.
Рассмотрим отвлеченную операцию целочисленного деления z=y/x, где соотношение между делимым y и делителем x таково, что получаемое частное z является малоразрядным. Пусть делимое является двойным словом y=2nYj+Y2, где Yj - старшее слово, Y2 - младшее. Предположим, что делитель x «нормализован», т.е. приведен к виду x=2n+X2. Тогда делитель может изменяться в интервале 2n<x<2n+1. Заметим, что «нормализация» делителя вызывает необходимость соответствующей корректировки делимого.
На рис.2 в качестве примера показано расположение делимого и делителя в регистрах микропроцессора Intel 8086 при сделанных выше предположениях. Старший бит делителя размещен в бите переноса CF регистра флагов микропроцессора.
2
n-1
-1
Y1
Y2
CF
X,
X
X
Рис.2. Расположение делимого и делителя в регистрах микропроцессора
Поставим задачу свести операцию деления к операции умножения на малоразрядную величину, которая может выполняться ускоренно. С этой целью воспользуемся формулой линейной интерполяции и применим ее к дроби 2=у/х. Поскольку частное ъ зависит от делимого у линейно, то можно рассматривать интерполирование функции 2=2(х), где х является аргументом, а у - параметром, который с целью сокращения записи опущен. Тогда по формуле линейной интерполяции имеем [4]:
г(х) = ~(х0 )+ (х-х0 )~(х0 + к)- 2(х0 )]/к, (12)
где х0 - опорное значение аргумента; к - шаг по этому аргументу (рис.3).
Рис.3. Линейная интерполяция функции 2(х)
Выберем такие значения х0 и к, которые обеспечивают максимальную простоту формулы (12): х0=к=2п. В результате образуется единственный интервал интерполяции, равный интервалу делителя 2п<х<2п+1. Причем величины, входящие в формулу (12), принимают следующие значения:
2(хо)= 2-пу=¥і+2-пЇ2, 2(хо+к)=2-1(Ті+2-п¥2) , (х-хо)=Х2.
(13)
Поэтому из (12) получаем
= 2-п (у-2~1Х2У1)-2~2п~1Х2У2
(14)
Пренебрегая величиной 2'2п'1Х2У2<2'1, из (14) находим
2 = 2-п(у-2-1Х2У,). (15)
Наличие в формуле (15) коэффициента 2~п приводит к появлению дробных разрядов, что требует округления результата до целого значения. С целью уменьшения инструментальной погрешности воспользуемся способом округления по /. Тогда получим искомый алгоритм в окончательном виде:
2 = РпП-1[у - 2~1Х2У1 + 2п-1 \ , (16)
где Р,2п-1[]2 - функция, которая обозначает выделение старшего слова из 2п-разрядного аргумента. Данная операция обеспечивает учет коэффициента 2-п.
Алгоритм (16) обладает инструментальной погрешностью, которая подчиняется оценке у<2']. Такая оценка становится возможной благодаря способу округления по /.
Заметим, что вследствие указанного выше соотношения между делимым у и делителем х, множитель У] в алгоритме (16) является малоразрядным. Таким образом, алгоритм (16) позволяет свести операцию целочисленного деления к ускоренному умножению на малоразрядную величину.
Оценим методическую погрешность алгоритма (16). Для этого воспользуемся приближенным выражением погрешности формулы (12) [4]:
е(х) = (1/2)(х- х0 )(х- (х0 + к )]р(2)(х), (17)
где а(2 - вторая производная частного г по аргументу х. Методическая погрешность е(х) принимает максимальное значение в точке х0+к/2 (рис.3). Так как в нашем случае х0=И=2п, то нетрудно показать, что етах=2'(п+33у/],5 или етах »2-3У]/],5.
Найдем допустимое значение Уь исходя из баланса инструментальной и методической погрешностей алгоритма (16). При этом потребуем, чтобы етах<утах. Тогда, учитывая приведенную выше оценку у < 2-], получаем У] < 6. Последнее условие накладывает ограничение на разрядность частного г. Так как старшее слово делителя х представлено одним битом Х]=] (рис.2), то допустимая разрядность частного составляет 3 двоичных разряда.
Таким образом, алгоритм (16) обеспечивает простой способ вычисления малоразрядных значений частного, что позволяет существенно снизить требования к производительности микропроцессорной системы.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Ледовской М.И. Алгоритмы микропроцессорных систем для решения задач оптимального управления // Компьютерные технологии в инженерной и управленческой деятельности. - Таганрог.: ТРТУ, 1999. - С.84-100.
2. Каляев А.В., Золотовский В.Е., Ледовской М.И. Воспроизведение функциональных зависимостей многих переменных на цифровых интегрирующих машинах. // Управляющие системы и машины. 1976. №1. - С.74-78.
3. Золотовский В.Е., Ледовской М.И. Цифровой интегратор для воспроизведения многомерных функций. Авт. свид. СССР, №519736. 1976.
4. Бахвалов НС. Численные методы. Анализ, алгебра, обыкновенные дифференциальные уравнения. - М.: Наука, 1973. - 631с.
С.И. Клевцов, Е.В.Удод
ПРОСТРАНСТВЕННАЯ ПЛОСКОСТНАЯ МОДЕЛЬ ГРАДУИРОВОЧНОЙ ХАРАКТЕРИСТИКИ ИНТЕЛЛЕКТУАЛЬНОГО ДАТЧИКА ДАВЛЕНИЯ
Снижение погрешности измерения физической величины в интеллектуальном датчике давления базируется на использовании специализированных пространственных моделей его градуировочной характеристики, адаптированных к особенностям поведения функции преобразования определенного типа чувствительного элемента (ЧЭ), группы элементов одного типа и даже конкретного ЧЭ,