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

 
 
> Как рекуррентно посчитать 1/X?, Нужен алгоритм
bve
сообщение Aug 30 2005, 05:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



Есть задача - при вычислении длинного набора данных каждую точку необходимо
умножать на коэффициент 1/(A+nd), где n - номер точки, A и d - постоянные.
Кто-нибудь знает, как можно быстро реализовать такое умножение ( деление ).
Рассуждая в терминах сигнальных процессоров - за один-два такта?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Builder
сообщение Aug 30 2005, 12:32
Сообщение #2


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



To PowerF1
Я к то-му же вёл, просто если последовательность длинная, а точность представления - низкая, то суммирование в не подойдет.
Go to the top of the page
 
+Quote Post
bve
сообщение Aug 30 2005, 13:42
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



Последовательность генериться кусками по N точек, сама-по-себе - бесконечная.
Предполагается, что подсчитав в начале генерации очередного отрезка текущее
1/X, затем малым числом операций корректируем каждую точку в куске. Разбег с реальностью может быть небольшой, но вот как реализовать????
Пробовал представить, что 1/(A+nd)=exp(-ln(A+nd))=exp(-lnA-ln(1+nd/A))=
exp(-lnA)*exp(-ln(1+nd/A))=(1/A)*exp(-nd/A+(nd/A)**2/2-.....) согласно разложению
ln(1+x) в ряд. Одно плохо - теряется значность, т.е. все быстро сводится к нулю...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:55
Рейтинг@Mail.ru


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