Страница 1 из 2

Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 01:07:00
Bambila
Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /). Возможно ли это? заранее спасибо)

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 06:14:01
pyzhman
В ассемблере какого проца?

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 08:18:43
Ser60

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 11:56:51
Meteor
Bambila писал(а):Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /).
Можно сделать так
lg(U/0.775)=lg(U)-lg(0.775).
Далее lg(0.775) есть константа и ее можно вычислить ДО и оперировать
lg(U) можно законопатить табличным методом и тогда все сведется к поиску по аргументу значения в таблице, и последующее вычитание константы! :idea:

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 12:14:47
pyzhman
Вы так и не сказали ничего о вычислении самого логарифма. Табличный метод ладно, ручками вбили и поехали. ТС походу надо именно считать. Нет, ну может я не прав.

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 13:22:49
Bambila
pyzhman писал(а):В ассемблере какого проца?
ATmega 8

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 13:26:41
Meteor
pyzhman писал(а):Вы так и не сказали ничего о вычислении самого логарифма.
Подразумевается что значения lg(U) вычислены (в любом средстве дающим логарифмы) и занесены в таблицу

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 13:34:56
pyzhman
В приложении.

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 14:40:30
Jack_A
Bambila писал(а):Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /). Возможно ли это? заранее спасибо)
Для получения вразумительного ответа следовало бы приоткрыть завесу :

- для зачета ? (95%) Тогда надо разбираться в том, что коллега pyzhman выдал ( тяжелый вздох топикстартера слышен мне и отсюда :) ).

- для работы конкретного устройства ? (5%) Тогда нужно определиться с точностью, диапазоном входных величин, соотношением критичности во времени и допустимому под это дело объему используемой памяти. Тогда и решение конкретизируется.

И место этой теме - в "МК и ПЛИС"

"От сессии до сессии живут студенты весело,
А сессия всего 2 раза в год "

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 16:43:29
Bambila
Jack_A писал(а):
Bambila писал(а):Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /). Возможно ли это? заранее спасибо)
Для получения вразумительного ответа следовало бы приоткрыть завесу :

- для зачета ? (95%) Тогда надо разбираться в том, что коллега pyzhman выдал ( тяжелый вздох топикстартера слышен мне и отсюда :) ).

- для работы конкретного устройства ? (5%) Тогда нужно определиться с точностью, диапазоном входных величин, соотношением критичности во времени и допустимому под это дело объему используемой памяти. Тогда и решение конкретизируется.

И место этой теме - в "МК и ПЛИС"

"От сессии до сессии живут студенты весело,
А сессия всего 2 раза в год "
Всётаки это нужно для конкретного устройства, а именно цифрового шумомера. Пытаюсь сотворить его путём переделывания цифрового вольтметра http://avrlab.com/node/94. данная формула если ферить одному форума является пересчётом вольт в децибелы. вот я и думаю как её загнать в код прошивки...

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 17:54:44
pyzhman
Только табличный метод. Ручками считаем и зашиваем.

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 19:06:52
Bambila
спасибо большое за информацию! поледний вопрос: где можно почитать про то как реализовать полученную таблицу в ассемблере?

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 19:35:21
Meteor
Уже вам задали вопрос о точности.
От нее много зависит. Ну положим так, желаем отразить весь диапазон логарифмов в одном байте
Так же будем считать что значения положительные.
Тогда можно пойти такой интертрепацией интерпретацией
10000000 = 0.5
01000000 = 0.25 и тд
Тогда будет от 0 до почти 1. и максимум соответствует lg(10)=1

Re: Разложение десятичного логарифма

Добавлено: Ср дек 21, 2011 23:49:03
Jack_A
Bambila писал(а):спасибо большое за информацию! поледний вопрос: где можно почитать про то как реализовать полученную таблицу в ассемблере?
Прежде чем хвататься за ассемблер, следует определиться опять же : в каком формате поступают данные ( двоичные, дв.-десятичные, плавающие ), в каком получать результат для вывода ( отсюда просматривается двоично-десятичный ). Прорисовать это для себя в табличке на бумаге. Когда будет ясность, то с ассемблером проблем не будет : директивами
.db ( .dw ) записать в таблицу вычисленные значения. Причем можно таблицу иметь как прямую ( Вольты -> дБ ), так и обратнную. Для обратной нужное значение дБ, соответствующее заданным Вольтам, можно найти, к примеру, методом половинного деления. Например :
10.0 дБ >= 0, 345B
10.1 дб >= 0, 413В
....... и т.д.

Перебором значений Вольт находим ближайшее значение в дБ. Быстро и безо всякой арифметики.
Намеряли, допуститм, 0,371В = имеем 10.0 дБ


Вычисление по "прямым" таблицам не намного сложнее. Находим ближайшие значения, между которыми находится аргумент.
Пусть А1 Вольт = Q1 дБ, А2 Вольт = Q2 дБ
Намерили X Вольт ( A2 >= X >= A1 )
Простейшей интерполяцией имеем

y(X) = Q1 + (X-A1) / (A2-A1) *(Q2-Q1)

Б`ольшая точность потребует б`ольшей степени полинома.
Но опять же - арифметика будет int или float ? Хотя если на Си, то об этом пусть компилятор думает.

Re: Разложение десятичного логарифма

Добавлено: Чт дек 22, 2011 05:23:19
eufs
Можно рекомендовать на входе АЦП логарифмирующий усилитель. И диапазон измерений шире и нет заморочек с программой. Если для практического применения, я бы так делал.

Re: Разложение десятичного логарифма

Добавлено: Чт дек 22, 2011 12:41:48
Meteor
Самодельный логарифмический усилитель (ОУ и диодом) лучше не применять - он "почти" производит логарифмирование по основанию e. Почти - из-за разброса характеристик диода.
ТС требуется логарифмирование по основанию 10.
В принципе, пересчет дело нехитрое. Но лучше не надо

Re: Разложение десятичного логарифма

Добавлено: Чт дек 22, 2011 14:10:35
Jack_A
Meteor писал(а):Самодельный логарифмический усилитель (ОУ и диодом) лучше не применять - он "почти" производит логарифмирование по основанию e. Почти - из-за разброса характеристик диода.
+1 Если требуется серьезная точность, то такими простыми средствами ее не достигнуть. Большой диапазон по любому не перекрыть без переключения поддиапазонов. А пересчет в дБ - вещь, как мы выяснили выше несложная .

Re: Разложение десятичного логарифма

Добавлено: Чт дек 22, 2011 14:19:47
Meteor
Под пересчетом имел ввиду переход логарифмирования по основанию е, к основанию 10

Re: Разложение десятичного логарифма

Добавлено: Пт дек 23, 2011 16:13:37
Jack_A
Meteor писал(а):Под пересчетом имел ввиду переход логарифмирования по основанию е, к основанию 10
Не похоже - там умножается или делится на 2.3, а входная величина по любому U. Табличному методу это пофиг, какое основание логарифма - забил массив констант и ОК.
А ТС молчит, как партизан, осмысливает.

Re: Разложение десятичного логарифма

Добавлено: Пт дек 23, 2011 16:18:18
pyzhman
Поискал, погуглил. Пришел к выводу, что задача курсовой работы. Но! Зацепило. Табличное вычисление да, быстро. Но не встретил именно алгоритма вычисления. Посмотрел ряд Тэйлора - надо брать производные, да и то, в узком интервале. Короче, непонятка.