Пр о ц е с с о р TMS 3 2 0C4 x
104
выбор начального приближения функции должен обеспечивать сходимость
итерационного процесса;
для заданной точности
ε
итерации должны повторяться до тех пор, пока
y y
i
i
+
− >
1
ε
.
2.6.3. Вычисление элементарных трансцендентных функций
Элементарные функции обычно вычисляются через их аппроксимации.
Вид аппроксимирующей функции зависит от требуемой точности и приемлемо-
го времени вычисления искомой функции. Для обработки в реальном времени
используются методы приближенных вычислений на основе полиномиальной и
рациональной аппроксимаций. Среди полиномиальных аппроксимаций наибо-
лее распространены степенные ряды, полиномы наилучшего равномерного
приближения и разложения с использованием ортогональных многочленов.
Далее приводятся алгоритмы и программы на ассемблере TMS320C4x для
некоторых элементарных функций, взятые из библиотеки, поставляемой фир-
мой Texas Instruments с компилятором C. Исходные тексты программ упроще-
ны и снабжены дополнительными комментариями автора с целью облегчения
их понимания. Аппроксимации всех функций даны для точности мантиссы 24
разряда (плавающая точка одинарной точности процессора TMS320C4x), коэф-
фициенты аппроксимирующих функций вычисляются минимум с восемью зна-
чащими десятичными цифрами.
2.6.3.1. Функции sin
(x)
и cos
(x)
Для вычисления функций sin(
x
) и cos(
x
) применяется разложение по по-
линомам Чебышева [9]
в диапазоне аргумента
( )
=
+
+
n
k
k
k
x a
x
0
1 2
1 2
sin
x
≤ π
/ 2
.
Для точности
ε =
вычисляется пять членов ряда (
n
= 4).
6 10
9
Коэффициенты разложения:
a
1
= 1,000000000;
a
3
= –0,1666665668e+0;
a
5
= 0,8333025139e-2;
a
7
= –0,1980741872e-3;
a
9
= 0,2601903036e-5.
Для функции sin(
x
) получаем аппроксимирующее выражение
sin(
x
) =
x
+
a
3
x
3
+
a
5
x
5
+
a
7
x
7
+
a
9
x
9
, которое вычисляется по
схеме Горнера
:
sin(
x
) =
x
+
x
x
2
(
a
3
+
x
2
(
a
5
+
x
2
(
a
7
+
x
2
a
9
))).
Если аргумент
x
в диапазоне [–
π
/2,
π
/2], то знак функции sin(
x
) определяется
как
sig
. Приведение аргумента в интервал аппрокси-
мации производится вычитанием ближайшего кратного
π
значения. При этом
sin(
x
) = sin(
x
N
π
) для четных значений
N
и sin(
x
) = –sin(
x
N
π
) для нечетных,
т.е. при нечетном
N
требуется инвертирование знака функции. Величина крат-
ности аргумента
N
определяется как целая часть от
x
/
π
с помощью правильного
округления
N
= [
x
/
π
+ 0,5 ], при этом будем иметь |
f
| = |
x
-
N
π
|
π
/2. При значе-
n
0
< 0
=
1
1
,
,
x
x
I...,94,95,96,97,98,99,100,101,102,103 105,106,107,108,109,110,111,112,113,114,...186