Вычислить на ОМК - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Вычислить на ОМК
Thu Aug 03 2006 14:48, Slav Matveev wrote to Wladimir Tchernov:

 
 SM>     реализацию log можно посмотреть, например, в исходниках
 SM>     glibc. с поправкой что придется ее адаптировать
 SM>     к целочисленной арифметике. можно разложить
 SM>     в ряд и считать до нужного члена. для этого заглянуть
 SM>     в какой-нибудь учебник по матану.

 Идиот (с)
 Логарифм по любому основанию элементарно считается через log2.
 А найти log2 с любой точностью - дело техники.
 

 SM> Я таким образом в отсутствии
 SM>     библиотек и наличии компилятора просчитал синусы/косинусы.
 SM>     Мне хватило четырех слагаемых в ряду.

 Дураку лишние знания только вредят :))))

 VLV

"Что даст мне свет, чего я сам не знаю?"    (c)  Гете  "Фауст"


Вычислить на ОМК
   Доброго времени суток тебе Slav!

03 Авг 06 14:48, Slav Matveev -> Wladimir Tchernov:

 WT>> Положение запятой фиксировано.

 WT>> Y - целое число в диапазоне 1-4094, А - масштабный коэффициент.

 WT>> Скорость вычисления не менее 4 вычислений в секунду.

 WT>> Это вообще реально, на процессоре рангом пониже iP ?

 SM>     Все реально. вопрос в точности.

Hе знаю пока. Пока вопрос в возможности реализации и затратах ресурсов на нее.

 WT>> Таймеры использовать нельзя. Прерывания заняты и следуют с
 WT>> частотой до 20000 в секунду. Аппаратный умножитель использовать
 WT>> нельзя.

 SM>     умножение при необходимости заменяется на сдвиг и сложение.

 SM>     реализацию log можно посмотреть, например, в исходниках
 SM>     glibc. с поправкой что придется ее адаптировать
 SM>     к целочисленной арифметике. можно разложить
 SM>     в ряд и считать до нужного члена. для этого заглянуть
 SM>     в какой-нибудь учебник по матану. Я таким образом в отсутствии
 SM>     библиотек и наличии компилятора просчитал синусы/косинусы.
 SM>     Мне хватило четырех слагаемых в ряду.

Хорошая мысль.

 SM>     Со снятой осциллографом функцией сложнее, но можно тоже
 SM> попробовать
 SM>     разложить в ряд и аппроксимировать с нужной точностью
 SM>     стандартными функциями. но за деталями - в учебник матана.

Я пробывал какую-то программу, которая возвращает функцию, по таблице значений
и аргументов функции. Получилось сложная система суперпозиции класса
Y=Log(основание А, (Log (основание Б, X)*X)).

Исследованием схемы она должна быть близка к ВАХ прямосмещенного точечного
германивого диода. умноженной не EXP от интеграла входного сигнала.

Hу тоесть интегратор банальной RC цепочкой.

 SM>     Кстати, хранить можно не значения для каждой точки,
 SM>     а только с некоторым шагом и поправки. Как в таблицах
 SM>     Брадиса. :)
Я об этом я думал - можно наверное уложиться в 1 байт на ячейку, но при этом
время выборки будет зависеть от аргумента.

    Будь счастлив(а) Slav...
                              С уважением Wladimir.


Вычислить на ОМК
Hi Wladimir!

04 Aug 06 09:32, Wladimir Tchernov wrote to Slav Matveev:

 WT> Исследованием схемы она должна быть близка к ВАХ прямосмещенного
 WT> точечного германивого диода. умноженной не EXP от интеграла входного
 WT> сигнала.

    Как вариант разбей интервал на 2^N отрезков, на каждом апроксимируй
    линейной функцией ax+b.


                                                   Slav.

Re: Вычислить на ОМК
<<< No Message Collected >>>

Вычислить на ОМК
Wed Aug 02 2006 10:27, Wladimir Tchernov wrote to All:

 
 WT> Требуется вычислять на ОМК (AVR - структуры) следующее выражение
 WT> Y=А*Log(В*X)

 Элементарно.
 Какая требуется точность?

 WT> Скорость вычисления не менее 4 вычислений в секунду.
 WT> Это вообще реально, на процессоре рангом пониже iP ?

 :))))))
 
 WT> Так-же нужно реализовать программно ФHЧ

 Кароче. Найдите $1000 и я вам это сделаю.

 WT> P.S. Hе добыв ADuC решил все узлы впихнуть в один или несколько
 WT> микроконтроллеров связанных цифровыми линиями связи.

 Иногда лишние знания только вредят...

 VLV

"Что даст мне свет, чего я сам не знаю?"    (c)  Гете  "Фауст"


Re: Вычислить на ОМК

Quoted text here. Click to load it

  Афтар жжот.

  http://www-users.cs.york.ac.uk/~fisher/mkfilter/ -- ценный йад, прямо
исходник генерировать умеет.

  Ещё на сайте микрочипа раздают тулзы с исключительно дружественным
интерфейсом, но я не вникал особо.


Re: Вычислить на ОМК
Fri Aug 04 2006 13:56, Kirill Frolov wrote to Vladimir Vassilevsky:

 

 >> WT> Так-же нужно реализовать программно ФHЧ
 >>  Кароче. Hайдите $1000 и я вам это сделаю.

 KF>   Афтар жжот.
 KF>   http://www-users.cs.york.ac.uk/~fisher/mkfilter/ -- ценный йад, прямо
 KF> исходник генерировать умеет.
 KF>   Ещё на сайте микрочипа раздают тулзы с исключительно дружественным
 KF> интерфейсом, но я не вникал особо.

 "Машина - это усилитель, а не заменитель мозгов" (c) Винер


 VLV

"Что даст мне свет, чего я сам не знаю?"    (c)  Гете  "Фауст"


Re: Вычислить на ОМК
Hi Vladimir!

05 Aug 06 20:09, Vladimir Vassilevsky wrote to Anatoly Mashanov:

 AM>> что после приведения аргумента к промежутку от 1 до 1+1/16 кривую
 AM>> логарифма на таком коротком отрезке можно аппроксимировать
 AM>> прямой.

 VV>  Да чего уж там. Логарифм вообще константа, а не функция :)

    А прямая это не та линейная функция, за которую ты ратовал?
    или для тебя прямая это только y=const, а y=ax+b уже нет?

                                                   Slav.

Re: Вычислить на ОМК
Hi Vladimir!

04 Aug 06 20:27, Vladimir Vassilevsky wrote to Slav Matveev:

 VV>>>  Даже ряд не нужен. Log2 в диапазоне аргумента [1...2) это почти
 VV>>> линейная функция. Прекрасно апроксимируется.
 SM>>     Линейной функцией апроксимируется с точностью до первого
 SM>> знака    после запятой. Ты случаем не с аэромеха, у которых
 SM>> все что меньше 10 сравнимо с единицей?

 VV>  Hет, не с аэромеха. Если видишь мудака - знай, что он с ФРТК (это про
 VV> меня).
    ф-т радиотехники и ... ?

 VV>  Двоечникам с мехмата простительно не знать про апроксимацию по
 VV> Чебышеву.
    обижаешь. троечник.
    ну давай, расскажи про линейную апроксимацию с указанием
    погрешности log2 на [1..2)
    А потом спросим у вопрошавшего, устроит его плюс-минус
    километр или нет.

                                                   Slav.

Вычислить на ОМК
Sun Aug 06 2006 18:13, Slav Matveev wrote to Vladimir Vassilevsky:

 
 VV>>  Двоечникам с мехмата простительно не знать про апроксимацию по
 VV>> Чебышеву.
 SM>     обижаешь. троечник.

 Doh, cбавил мехмат свои стандарты...
 Починяй бензобаки и не лезь в высокие материи.
 
 SM>     ну давай, расскажи про линейную апроксимацию с указанием
 SM>     погрешности log2 на [1..2)

 log2(x) ~ x - 0.957
 Максимальная ошибка 4.3e-2, то есть лучше, чем одна цифра после запятой.
 Средняя точность примерно две цифры после запятой. И?

 SM>     А потом спросим у вопрошавшего, устроит его плюс-минус
 SM>     километр или нет.

 Проблема в том, что вопрошаюший сам не знает, чего ему надо.

 VLV

"Что даст мне свет, чего я сам не знаю?"    (c)  Гете  "Фауст"


Вычислить на ОМК
Приветствую Вас, Vladimir!

VV>> Hет, не с аэромеха. Если видишь мудака - знай, что он с ФРТК
VV>> (это про меня).

 О. А ты когда там учился? Физхимов (ФМХФ) как обзывали?


С уважением, Виталий.

... -|O|-

Re: Вычислить на ОМК
VV>  Логарифм по любому основанию элементарно считается через log2.
через любой logN

VV>  А найти log2 с любой точностью - дело техники.
а разве это не тот же ряд будет? чем вычисление log2 от log3 в
реализации будет отличаться? (никогда не интересовался этим вопросом)


Вычислить на ОМК
Thu Aug 03 2006 20:09, Dmitry E. Oboukhov wrote to Vladimir Vassilevsky:

 VV>>  Логарифм по любому основанию элементарно считается через log2.
 VV>>  А найти log2 с любой точностью - дело техники.

 DEO> а разве это не тот же ряд будет? чем вычисление log2 от log3 в
 DEO> реализации будет отличаться?

 Тем, что числа представлены в двоичной системе.
 Очевидно, что целая часть log2 - это порядок числа. А log2 от мантиссы
 легко найти хоть через ряд, хоть через полином, хоть аппроксимацией
 по табличке.

 VLV
 

"Что даст мне свет, чего я сам не знаю?"    (c)  Гете  "Фауст"


Вычислить на ОМК
Hi Dmitry!

03 Aug 06 20:09, Dmitry E. Oboukhov wrote to Vladimir Vassilevsky:

 VV>>  А найти log2 с любой точностью - дело техники.
 DO> а разве это не тот же ряд будет? чем вычисление log2 от log3 в
 DO> реализации будет отличаться? (никогда не интересовался этим вопросом)

    Видимо тем, что двоичная арифметика.
    только все равно будет разложение в ряд и апроксимация
    многочленом с нужной точностью.


                                                   Slav.

Re: Вычислить на ОМК
Hello, Kirill!
You wrote to Andrey Arnold on Fri, 04 Aug 2006 12:46:41 +0600:

 DO>>> я так понял линеаризация в нескольких диапазонах
 ??>> Только число диапазонов не произвольное, а кратное степени числа
 ??>> два и длина каждого одинакова.
 KF>   Я ничего не понял. Впрочем и не вникал. Хочу только сказать,
Вижу, что хочешь. А отлаженный исходник где?;)
 KF> что ничто не мешает отсортировать список аргументов функции и её
 KF> значений и искать двоичным поиском за log2(N) времени, что для 4096
 KF> элементов даст всего-то 12 операций сравнения.
 А это значит _в общем случае_ - каждый раз сохранять регистры в стеке,
загружать регистры  элементами сравнения, потом снова регистры
восстанавливать.
Воно тоби треба?
 KF> А этих элементов, очевидно, будет в Nдцатьц раз меньше.
В этом месте радоваться или плакать?
 KF> Будет там что-то кратно двум или нет -- совершенно не важно (что
 KF> может позволить уменьшить ошибку аппроксимации).
Прикажешь в то, что ты тут нагородил вникать, или позволишь сразу
сказать?
;)


With best regards, Andrej Arnold.  E-mail: snipped-for-privacy@aol.com



Re: Вычислить на ОМК

Quoted text here. Click to load it

  Не люблю разбираться с чужими исходниками. Чаще лучше иметь изложение
алгоритма на человеческом языке и проще заново переписать. Если речь
идёт, конечно, о чём-то относительно простом.

Quoted text here. Click to load it

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

  Впрочем я вынужден согласиться, что предлагаемый мною вариант просто
по объёму кода, возможно, превзойдёт изначально предлагаемое, даже если
его (разбиение на 2^N диапазонов) брать со всеми таблицами.

Quoted text here. Click to load it

  Чёрт его знает. Зависит от максимально допустимой ошибки
аппроксимации, самих аппроксимируемых данных и от соотношения байт/на
оператор для конкретного компилятора.



Вычислить на ОМК
Hello Dmitry!

03 Aug 06 19:09, you wrote to Vladimir Vassilevsky:

 DO> а разве это не тот же ряд будет? чем вычисление log2 от log3 в
 DO> реализации будет отличаться? (никогда не интересовался этим вопросом)
Тем, что для приведения аргумента в диапазон от 1 до 2 достаточно сдвигов, а
для приведения аргумента в диапазон от 1 до 3 понадобится умножение или деление
на 3.

Anatoly


Re: Вычислить на ОМК
AA> Да он в том же самом треде "Конкурс" находится.
AA>
http://groups.google.de/group/fido7.ru.embedded/browse_thread/thread/c6aacf207f5605a4/05672a101c003090?lnk=st&q=&rnum=1&hl=de#05672a101c003090
AA>
я так понял линеаризация в нескольких диапазонах

это несколько из другой оперы чем тот алгоритм что я выше привел.
это ближе к одной табличной выборке :)

AA> Короче, это у меня выскочило в:
AA> http://groups.google.com /

а если ты был подписан на эху давно нафиг искать в гугле?

AA> После набора:
AA>
AA> Andrej Arnold Natuerlich
натюрлих я бы врядле додумался бы ввести ;)


Вычислить на ОМК
Dmitry,

You wrote to Andrej Arnold:

 DO> я так понял линеаризация в нескольких диапазонах

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

 DO> это несколько из другой оперы чем тот алгоритм что я выше привел.
 DO> это ближе к одной табличной выборке :)

Да я вроде понял.
А в случае логарифма, там вообще просто получается.
Hо у него тут есть оффсет, а это "ставит повторяемость функции"
в довольно сложное положение.;)

Во всяком случае, для его задачи этот метод ИМХО хорошо подходит
и довольно быстрый (что ему не требуется), поскольку нет вызова функций и
связанной с каждым вызовом сохраненим регистров и прочего, совсем не короткого,
оверхеда типа того же сдвига long, нормализации и тп.
 Hу а судя по тому, что в ответе он "отбрасывает" четыре младших бита,
да ещё есть начальный оффсет, 64 диапазона ему хватит. Может даже 32
и меньше... функция-то довольно гладкая.

 DO> а если ты был подписан на эху давно

Можно подумать ты недавно тут...;)

 DO> нафиг искать в гугле?

Так обычно быстрее получается.

 AA>> Andrej Arnold Natuerlich
 DO> натюрлих я бы врядле додумался бы ввести ;)

Hу я просто помню, что там коментарии начинались с этого слова,
да ещё и с заменённым умляютом...



Andrey


Re: Вычислить на ОМК

Quoted text here. Click to load it

  Я ничего не понял. Впрочем и не вникал. Хочу только сказать, что ничто
не мешает отсортировать список аргументов функции и её значений и искать
двоичным поиском за log2(N) времени, что для 4096 элементов даст
всего-то 12 операций сравнения. А этих элементов, очевидно, будет
в Nдцатьц раз меньше. Будет там что-то кратно двум или нет -- совершенно
не важно (что может позволить уменьшить ошибку аппроксимации). Речь о
применительности линейной интерполяции к задаче озвученной WT.



Site Timeline