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

 
 
> Сплош и рядом математика, помогите кто чем может
UniBomb
сообщение Jul 8 2006, 17:22
Сообщение #1


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

Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416



Я наверно, как впрочем и все, наткнулся на вопрос реализации математических функций в мк. Так вот, в данный момент мне позарез нужно вычислять натуральный логарифм шестнадцатиразрядного числа. Если у кого есть наработки, то прошу поделиться...


ЗЫ:. кстати говоря, пусть эта тема будет несколоко универсальной - пусть здесь выкладываюстся алгоритмы математических операций и функций (желательно на асме... атмеловском)...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CD_Eater
сообщение Jul 15 2006, 11:55
Сообщение #2


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

Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595



Способ, который описал vladv, фактически оптимизирован по скорости вычисления. Если же нужно сэкономить память (в ущерб скорости), можно воспользоваться вычислением "в лоб".

Логарифм - функция, очень хорошая в том смысле, что при разложении в ряд нет необходимости заботиться о сходимости в широких пределах (как правило, для синуса необходима сходимость от 0 до pi/2). Можно выбрать малый интервал от 1 до (1+eps), в котором ряд для логарифма (по ссылке в википедии) сходится с достаточной точностью вычислением малого количества членов. А дальше - умножая исходное число на некоторую целую степень (1+eps), можно попасть в выбранный интервал.

То есть, потребуется числа (1+eps) и ln(1+eps) вычислить заранее и хранить как константы, а в процессе вычислений:
1) Вычисляя целые степени числа (1+eps), найти такую целую степень N, которая максимально приблизится к исходному числу X (например, выполнять поиск N методом деления отрезка пополам)
2) Разделить X на (1+eps)^N, получив число Y из диапазона 1..(1+eps)
3) Вычислить сумму ряда ln(Y)
Далее - вычисляем ln(X) = N*ln(1+eps) + ln(Y)

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

Сообщение отредактировал CD_Eater - Jul 15 2006, 11:58
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- UniBomb   Сплош и рядом математика   Jul 8 2006, 17:22
- - Yura_K   А может просто глянуть Кнута?   Jul 8 2006, 18:11
|- - zltigo   Цитата(Yura_K @ Jul 8 2006, 21:11) А може...   Jul 8 2006, 18:53
- - Atashi   если говорить о ЛЮБЫХ функциях, то проМММблематичн...   Jul 8 2006, 19:45
- - LordN   неплохие примеры разных вычислений есть тут http:/...   Jul 9 2006, 06:55
|- - trablik   Как вариант еще можно заранее составить массив со ...   Jul 9 2006, 15:15
- - UniBomb   по повду кнута - чего то я часто вижу этого автора...   Jul 9 2006, 18:28
|- - zltigo   Цитата(UniBomb @ Jul 9 2006, 21:28) zltig...   Jul 9 2006, 18:42
|- - trablik   Цитата(UniBomb @ Jul 9 2006, 22:28) trabl...   Jul 9 2006, 20:16
- - UniBomb   zltigo, опять зачот... но снова нето... нету библи...   Jul 9 2006, 20:27
|- - zltigo   Цитата(UniBomb @ Jul 9 2006, 23:27) zltig...   Jul 9 2006, 21:39
- - UniBomb   zltigo, мои объяснения почему и это не подходит бу...   Jul 10 2006, 12:39
|- - zltigo   Цитата(UniBomb @ Jul 10 2006, 15:39) и я ...   Jul 10 2006, 13:11
- - KKN   Может стоит разложить логарифм в ряд. Задаться точ...   Jul 10 2006, 13:25
- - UniBomb   zltigo, я напишу тебе в личку.. KKN, в принципе е...   Jul 10 2006, 18:44
- - vladv   Если не жалко держать таблицу из 256 значений, то ...   Jul 10 2006, 19:43
- - UniBomb   vladv, надо будет запомнить, спасибо.... правда па...   Jul 11 2006, 16:02
|- - vladv   Цитата(UniBomb @ Jul 11 2006, 20:02) vlad...   Jul 12 2006, 18:11
- - Yura_K   Насчет ссылок по Д. Кнуту: Том 1. Основные алгорит...   Jul 12 2006, 19:42


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:57
Рейтинг@Mail.ru


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