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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Сплош и рядом математика, помогите кто чем может
UniBomb
сообщение Jul 8 2006, 17:22
Сообщение #1


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

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



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


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


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

Группа: Свой
Сообщений: 185
Регистрация: 5-05-06
Из: Ekaterinburg, Russia
Пользователь №: 16 821



А может просто глянуть Кнута?


--------------------
Чудес не бывает - бывает мало знаний и опыта!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 8 2006, 18:53
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yura_K @ Jul 8 2006, 21:11) *
А может просто глянуть Кнута?

Нет, если "просто", то это log() и все :-).


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Atashi
сообщение Jul 8 2006, 19:45
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 66
Регистрация: 30-04-05
Пользователь №: 4 630



если говорить о ЛЮБЫХ функциях, то проМММблематично...
а вообще-то обычно можно разложить в ряд, а ряд описать алгоритмически - и опять Кнут! Мафия какая-то.
Go to the top of the page
 
+Quote Post
LordN
сообщение Jul 9 2006, 06:55
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686



неплохие примеры разных вычислений есть тут http://lord-n.narod.ru/walla.html#MudrovPEVM


--------------------
C уважением, LordN.
Go to the top of the page
 
+Quote Post
trablik
сообщение Jul 9 2006, 15:15
Сообщение #6


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

Группа: Свой
Сообщений: 114
Регистрация: 29-09-05
Пользователь №: 9 092



Как вариант еще можно заранее составить массив со значениями функции в отдельных точках, а потом вычислять значение этой функци в произвольной точке с помощью интерполяции.
Go to the top of the page
 
+Quote Post
UniBomb
сообщение Jul 9 2006, 18:28
Сообщение #7


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

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



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

zltigo - зачот, но к теме не относится...


Atashi, действительно...

LordN, я так понимаю, что сайт - это твоё детище... как говорится охайо, обязательно гляну...

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

всем спазибо за отклики... тема считается открытой для дальнейших обсуждений...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 9 2006, 18:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(UniBomb @ Jul 9 2006, 21:28) *
zltigo - зачот, но к теме не относится...

Прилинковать библиотечную функцию что не позволяет? Хочется переплюнуть по размеру и скорости
не имея опыта в данном деле?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
trablik
сообщение Jul 9 2006, 20:16
Сообщение #9


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

Группа: Свой
Сообщений: 114
Регистрация: 29-09-05
Пользователь №: 9 092



Цитата(UniBomb @ Jul 9 2006, 22:28) *
trablik, эта мысль приходила и мне в голову, но есть несколько но - прибор у меня конечно же не прецизионный, но точность мне необходима большая, а следовательно и такихзначений будет свыше трёх тысяч.... что не то что в микрокотроллере сохранить, а вообще просчитать (бех автоматизиции есессно) сложновато...

по поводу необходимости более трёх тысяч значений
- не обязательно всё делать в лоб. Если вспомнить из математики формулу ln( a*b )=ln( a )+ln( b ), то задачу можно существенно упростить, раскладывая аргумент логарифма на множители.
Поясню на примере. Пусть требуется вычислить ln(123456.789).
Решение: ln(123456)=ln(10*10*10*10*10*1.23456789)= ln(10)+ln(10)+ln(10)+ln(10)+ln(10) + ln(1.23456789)=5*ln(10)+ ln(1.23456789)
Константу ln(10) монжо вычислить заранее с высокой точностью. Таким образом, для вычисления логарифма любого числа потребуется знание константы ln(10) и вычисление логарифма числа на отрезке от 1 до 10, а это гораздо проще.
Примечание. В случае чисел меньших 1 для приведения их к диапазону 1..10 нужно не прибалять, а вычитать ln(10).
Go to the top of the page
 
+Quote Post
UniBomb
сообщение Jul 9 2006, 20:27
Сообщение #10


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

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



zltigo, опять зачот... но снова нето... нету библиотечной функции... я работаю в среде AVRStudio, использующий язык assembler... максиму что есть из готовых функций - это восьмиразрядное умножение...

trablik, мысль дельная.... обязательно её завтра обсосу... в плане обдумаю...

продолжаем обсуждение...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 9 2006, 21:39
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(UniBomb @ Jul 9 2006, 23:27) *
zltigo, опять зачот... но снова нето... нету библиотечной функции... я работаю в среде AVRStudio, использующий язык assembler...

А что, объектные файлы студийный ассемблер исключительно собственного формата генерит и его линкер ничего кроме них не переваривает? Если не обе этих проблемы сразу, то можно и постороннюю прилинковать.

В общем слинковать через конвертер ELF можно:


Installing and using AVRGCC with AVRstudio
This is a comprehensive introduction on how to install AVRstudio and and the GNU AVR C
compiler “avr-gcc”, and making them work together. This introduction leads step by step to the
successful build of sample code, and programming of whichever AVR part you have chosen, on the
STK500 development board.
Used in this introduction:
• AVRstudio executable installer, “astudio.exe” release 3.53 of nov.8, 2001[5.9M] or later.
Downloadable from www.avrfreaks.net
• AVRGCC executable installer “avrgcc200112XXa_AVRfreaks.exe” [8.1M], AVRfreaks
distribution of dec.07, 2001 or later.
This package also contains:
• Flavio Gobber’s Elf2Coff converter. • The gcctest 1-9 files, by Volker Oth.
Downloadable from www.avrfreaks.net. It is important that you try to use our package, as it
contains all the correct additional files (.bat files, makefiles) that you need to complete this
guide).


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
UniBomb
сообщение Jul 10 2006, 12:39
Сообщение #12


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

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



zltigo, мои объяснения почему и это не подходит будут настолько нелепыми (и я думаю что ты догадался почему), что я их не буду озвучивать...

неужели никто не владеет алгоритмом высчитывания логаифма, если не атурального, то хоть бы десятичного?....
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 10 2006, 13:11
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(UniBomb @ Jul 10 2006, 15:39) *
и я думаю что ты догадался почему

Да и даже прямо написал это в одном из предыдущих постов.

Цитата
неужели никто не владеет алгоритмом высчитывания логаифма

А собственно _алгоритм_ можете посмотреть именно в исходниках (например GCC) той самой библиотечной log() функции.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
KKN
сообщение Jul 10 2006, 13:25
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-11-05
Пользователь №: 10 439



Может стоит разложить логарифм в ряд. Задаться точностью и решить до какого члена ряда считать.
Разложение см. http://ru.wikipedia.org/wiki/%D0%9B%D0%BE%...%BD%D0%B8%D0%B5
Внизу в замечаниях.
Go to the top of the page
 
+Quote Post
UniBomb
сообщение Jul 10 2006, 18:44
Сообщение #15


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

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



zltigo, я напишу тебе в личку..

KKN, в принципе если посидеть над этим пару дней с учебником, то что-нибудь получится, но в этом случае получится довольно грамоздкая система и время на подсчёт функции будет довольно большим (при относительно малой производительности мк). поэтому в данной задаче выбор делается в пользу быстроты. я и так пытюсь "убыстрить" этот процесс отказавшись от вещественных чисел в пользу 16-ти разрядных целочисленных....
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:05
Рейтинг@Mail.ru


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