реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> acos, для tms320f2812
_Andu_
сообщение May 26 2010, 12:37
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 11-07-06
Пользователь №: 18 735



нужно расчитать arccos. Есть оптимизированая библиотека qmath в ней можно расчитать atan.
arccos(x) = pi/2 - arctg(x/sqrt(1-x*x)) ;
Для перещета arccos слишком много операций нет ли готовой оптимизированой ф-и arccos или хотябы коэфиц. полинома.
Go to the top of the page
 
+Quote Post
thermit
сообщение May 26 2010, 12:46
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



С какой точностью?
Go to the top of the page
 
+Quote Post
_Andu_
сообщение May 26 2010, 12:53
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 11-07-06
Пользователь №: 18 735



для atan у них вот такой полином, для acos чтобы был такойже

;***********************************************************************;
;* Tylor Series Approximation of ATAN: *;
;* Algorithm : *;
;* atan(x): where 'x' is in 16.16 format *;
;* = 0.318253*x + 0.003314*x^2 - 0.130908*x^3 + 0.068542*x^4 *;
;* - 0.009159*x^5; if x<1 *;
;* = 0.5-atan(1/x); if x>=1 *;
;***********************************************************************;
Go to the top of the page
 
+Quote Post
Gyga
сообщение May 26 2010, 13:38
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 203
Регистрация: 3-06-08
Пользователь №: 38 014



Табличка и ряды. Был у меня спрвочник по рядам, да сплыл
Go to the top of the page
 
+Quote Post
diwil
сообщение May 26 2010, 13:45
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(_Andu_ @ May 26 2010, 16:37) *
нужно расчитать arccos. Есть оптимизированая библиотека qmath в ней можно расчитать atan.
arccos(x) = pi/2 - arctg(x/sqrt(1-x*x)) ;
Для перещета arccos слишком много операций нет ли готовой оптимизированой ф-и arccos или хотябы коэфиц. полинома.


если арифметика целочисленная, то CORDIC, наверное, будет оптимальным вариантом. однако придется вычислить синус.
Go to the top of the page
 
+Quote Post
_Andu_
сообщение May 26 2010, 14:00
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 11-07-06
Пользователь №: 18 735



Надо быстрая функция
Арифметика целочисленная. А CORDIC используют та что я видел для ПЛИС а как тут я не знаю.
Go to the top of the page
 
+Quote Post
thermit
сообщение May 26 2010, 14:22
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Для точности ~10-5 (что соответствует Q15) подойдет такой метод:


acos(x) ~ f(x) = sqrt( 1 - x ) * P( x ) x=0 ... 1 f(x) = pi/2 ... 0

P( x ) = -0.0187293*x^3 + 0.0742610*x^2 - 0.2121144*x + 1.5707288

Делить тут уже не надо, но корень извлечь придется.
Все остальные способы существенно сложнее в вычислительном плане...
Go to the top of the page
 
+Quote Post
_Andu_
сообщение May 27 2010, 07:23
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 11-07-06
Пользователь №: 18 735



да max погрешность ~0.000068 для целочисленного числа где-то max = 2
Go to the top of the page
 
+Quote Post
_Andu_
сообщение May 27 2010, 10:01
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 11-07-06
Пользователь №: 18 735



Спасибо! А как получились эти коэффициенты
-0.0187293
0.0742610
-0.2121144
1.5707288
Go to the top of the page
 
+Quote Post
DMax
сообщение May 27 2010, 10:21
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Цитата(thermit @ May 26 2010, 18:22) *
P( x ) = -0.0187293*x^3 + 0.0742610*x^2 - 0.2121144*x + 1.5707288

Делить тут уже не надо, но корень извлечь придется.


И не забыть, что вычислять полином лучше по схеме Горнера.
Go to the top of the page
 
+Quote Post
_Andu_
сообщение May 27 2010, 10:27
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 11-07-06
Пользователь №: 18 735



Да по схеме Горнера. А как получились эти коэффициенты
Go to the top of the page
 
+Quote Post
thermit
сообщение May 27 2010, 10:41
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
DMax:
И не забыть, что вычислять полином лучше по схеме Горнера.


Ну, для настоящих индейцев это само-собой разумеется...

Цитата
_Andu_:
А как получились эти коэффициенты


Путем аппроксимации функции acos(x)/sqrt(1-x).
В отличие от acos эта функция хорошо приближается полиномом невысокого порядка.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 07:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01464 секунд с 7
ELECTRONIX ©2004-2016