Разложение десятичного логарифма
Разложение десятичного логарифма
Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /). Возможно ли это? заранее спасибо)
- Реклама
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Разложение десятичного логарифма
Можно сделать такBambila писал(а):Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /).
lg(U/0.775)=lg(U)-lg(0.775).
Далее lg(0.775) есть константа и ее можно вычислить ДО и оперировать
lg(U) можно законопатить табличным методом и тогда все сведется к поиску по аргументу значения в таблице, и последующее вычитание константы!
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Разложение десятичного логарифма
Вы так и не сказали ничего о вычислении самого логарифма. Табличный метод ладно, ручками вбили и поехали. ТС походу надо именно считать. Нет, ну может я не прав.
Docendo discimus
- Реклама
Re: Разложение десятичного логарифма
ATmega 8pyzhman писал(а):В ассемблере какого проца?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Разложение десятичного логарифма
Подразумевается что значения lg(U) вычислены (в любом средстве дающим логарифмы) и занесены в таблицуpyzhman писал(а):Вы так и не сказали ничего о вычислении самого логарифма.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Разложение десятичного логарифма
В приложении.
- Вложения
-
- temp.rar
- (9.71 КБ) 185 скачиваний
Docendo discimus
Re: Разложение десятичного логарифма
Для получения вразумительного ответа следовало бы приоткрыть завесу :Bambila писал(а):Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /). Возможно ли это? заранее спасибо)
- для зачета ? (95%) Тогда надо разбираться в том, что коллега pyzhman выдал ( тяжелый вздох топикстартера слышен мне и отсюда
- для работы конкретного устройства ? (5%) Тогда нужно определиться с точностью, диапазоном входных величин, соотношением критичности во времени и допустимому под это дело объему используемой памяти. Тогда и решение конкретизируется.
И место этой теме - в "МК и ПЛИС"
"От сессии до сессии живут студенты весело,
А сессия всего 2 раза в год "
Re: Разложение десятичного логарифма
Всётаки это нужно для конкретного устройства, а именно цифрового шумомера. Пытаюсь сотворить его путём переделывания цифрового вольтметра http://avrlab.com/node/94. данная формула если ферить одному форума является пересчётом вольт в децибелы. вот я и думаю как её загнать в код прошивки...Jack_A писал(а):Для получения вразумительного ответа следовало бы приоткрыть завесу :Bambila писал(а):Дорогие форумчане, подскажите плз как в ассемблере представть уравнение X=lg(U/0.775).есть мнение что его надо выражать в виде арифметических действий(+ - * /). Возможно ли это? заранее спасибо)
- для зачета ? (95%) Тогда надо разбираться в том, что коллега pyzhman выдал ( тяжелый вздох топикстартера слышен мне и отсюда).
- для работы конкретного устройства ? (5%) Тогда нужно определиться с точностью, диапазоном входных величин, соотношением критичности во времени и допустимому под это дело объему используемой памяти. Тогда и решение конкретизируется.
И место этой теме - в "МК и ПЛИС"
"От сессии до сессии живут студенты весело,
А сессия всего 2 раза в год "
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Разложение десятичного логарифма
Только табличный метод. Ручками считаем и зашиваем.
Docendo discimus
Re: Разложение десятичного логарифма
спасибо большое за информацию! поледний вопрос: где можно почитать про то как реализовать полученную таблицу в ассемблере?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Разложение десятичного логарифма
Уже вам задали вопрос о точности.
От нее много зависит. Ну положим так, желаем отразить весь диапазон логарифмов в одном байте
Так же будем считать что значения положительные.
Тогда можно пойти такой интертрепацией интерпретацией
10000000 = 0.5
01000000 = 0.25 и тд
Тогда будет от 0 до почти 1. и максимум соответствует lg(10)=1
От нее много зависит. Ну положим так, желаем отразить весь диапазон логарифмов в одном байте
Так же будем считать что значения положительные.
Тогда можно пойти такой интертрепацией интерпретацией
10000000 = 0.5
01000000 = 0.25 и тд
Тогда будет от 0 до почти 1. и максимум соответствует lg(10)=1
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Разложение десятичного логарифма
Прежде чем хвататься за ассемблер, следует определиться опять же : в каком формате поступают данные ( двоичные, дв.-десятичные, плавающие ), в каком получать результат для вывода ( отсюда просматривается двоично-десятичный ). Прорисовать это для себя в табличке на бумаге. Когда будет ясность, то с ассемблером проблем не будет : директивами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: Разложение десятичного логарифма
Можно рекомендовать на входе АЦП логарифмирующий усилитель. И диапазон измерений шире и нет заморочек с программой. Если для практического применения, я бы так делал.
C0FFEE=12648430
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Разложение десятичного логарифма
Самодельный логарифмический усилитель (ОУ и диодом) лучше не применять - он "почти" производит логарифмирование по основанию e. Почти - из-за разброса характеристик диода.
ТС требуется логарифмирование по основанию 10.
В принципе, пересчет дело нехитрое. Но лучше не надо
ТС требуется логарифмирование по основанию 10.
В принципе, пересчет дело нехитрое. Но лучше не надо
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Разложение десятичного логарифма
+1 Если требуется серьезная точность, то такими простыми средствами ее не достигнуть. Большой диапазон по любому не перекрыть без переключения поддиапазонов. А пересчет в дБ - вещь, как мы выяснили выше несложная .Meteor писал(а):Самодельный логарифмический усилитель (ОУ и диодом) лучше не применять - он "почти" производит логарифмирование по основанию e. Почти - из-за разброса характеристик диода.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Разложение десятичного логарифма
Под пересчетом имел ввиду переход логарифмирования по основанию е, к основанию 10
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Разложение десятичного логарифма
Не похоже - там умножается или делится на 2.3, а входная величина по любому U. Табличному методу это пофиг, какое основание логарифма - забил массив констант и ОК.Meteor писал(а):Под пересчетом имел ввиду переход логарифмирования по основанию е, к основанию 10
А ТС молчит, как партизан, осмысливает.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Разложение десятичного логарифма
Поискал, погуглил. Пришел к выводу, что задача курсовой работы. Но! Зацепило. Табличное вычисление да, быстро. Но не встретил именно алгоритма вычисления. Посмотрел ряд Тэйлора - надо брать производные, да и то, в узком интервале. Короче, непонятка.
Docendo discimus


