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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Кусково-линейная аппроксимация с заданными множителями., Как аппроксимировать для степеней двойки?
count_enable
сообщение Feb 25 2016, 16:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Классическая КЛА это аппроксимация множеством прямых типа kx+b. Любой математический пакет, включая эксель это умеет. Но для аппаратных реализаций очень выгодно чтобы k был степенью двойки, тогда вместо умножения можно сделать простой сдвиг. Как можно сделать такую КЛА? Пока на ум пришли только нематематические методы типа генетических алгоритмов.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 25 2016, 16:48
Сообщение #2





Guests






Нет "кусковой", но есть кусочная.

***
У Вас нет аппаратного умножителя?

Ну и что мешает подобрать множитель близкий к вещественному числу, но с заданным числом 1-ц и 0-лей и, есс-но, с заданной погрешностью аппроксимации?
Go to the top of the page
 
+Quote Post
count_enable
сообщение Feb 25 2016, 17:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



У меня есть умножитель, но сдвиг существенно быстрее и проще. Если быть точным, хочу аппроксимировать логистическую функцию. Перед этим нашел в инете КЛА сигмоида tanh и результат по скорости и аппроксимации превосходен. Как-то ведь вычислили коэффициенты для tanh, значит можно и для логистической ведь.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 25 2016, 17:19
Сообщение #4





Guests






Обсуждать абстрактную задачу, которая должна далее решаться численными методами на конкретной платформе - не имеет смысла.
Приведите все исходные данные.

P.S.
Если говорить о принципах ( не только о КЛА ), то есть методы "цифра за цифрой" или CORDIC ( родоначальник - Волдер, затем развиты Смоловым И Байковым ).
Для простых случаев гарантируется решение за N-циклических тактов, где N - число разрядов, но каждый циклический такт включает сдвиги до N-разрядов.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Feb 25 2016, 17:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Исходная задача: аппроксимировать кусочно-линейным способом функцию tanh(x) или другой сигмоид с диапазоном значений -1..1. При этом все коэффициенты k должны быть степенями двойки.

У меня есть умножитель, я знаю про таблицы, про кордик и т.д. Но если существует универсальный алгоритм аппроксимации с такими коэффициентами - он мне бы очень пригодился. И не только для tanh. Т.е. задача математическая, а не инженерная.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 25 2016, 17:58
Сообщение #6





Guests






Цитата(count_enable @ Feb 25 2016, 20:37) *
Т.е. задача математическая, а не инженерная.


Инженерные задачи решаются быстрее и "выхлоп" бывает вполне удовлетворителен.

Теорему Ферма тоже решили, в конце-то концов.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Feb 25 2016, 18:02
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Считайте это любознательностью sm.gif.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 25 2016, 18:08
Сообщение #8





Guests






Цитата(count_enable @ Feb 25 2016, 21:02) *
Считайте это любознательностью sm.gif.


Раньше такую "любознательность" оплачивало государство, да и сейчас есть такие государства и фонды sm.gif

Go to the top of the page
 
+Quote Post
amaora
сообщение Feb 25 2016, 18:10
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



То есть задан набор прямых, с коэффициентами +-2^n, задано количество отрезков N. Требуется найти разбиение области определения аппроксимируемой функции на отрезки, так чтобы используя заданные прямые в этих отрезках получить наименьшую невязку прямых с функцией. Так?

Задача скорее всего многоэксремальная, и решается только численно, поисковыми/стохастическими методами оптимизации.

Сообщение отредактировал amaora - Feb 25 2016, 18:15
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 25 2016, 18:47
Сообщение #10





Guests






Цитата(amaora @ Feb 25 2016, 21:10) *
Задача скорее всего многоэксремальная, и решается только численно, поисковыми/стохастическими методами оптимизации.


В инженерном случае ( т.е. - конкретном ) так и следует ее решать, т.е. методами оптимизации.

P.S.
Универсальной "формулы" ждать не стоит.

Из более-менее интересных вариантов в голову приходит Singular spectrum analysis (SSA или метод "гусеницы")- у них есть целочисленные варианты, которые наверное можно свести к степеням 2.
В этом методе, легко воспроизводятся разностные уравнения с реализацией по типу FIR. Удлиняя реализацию такой условно-линейной системы, скорее всего можно подобрать коэффициенты от степеней 2.
Ну и глобалный МГУА (метод группового учёта аргументов) Ивахненко.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Feb 25 2016, 20:59
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Цитата(amaora @ Feb 25 2016, 22:10) *
То есть задан набор прямых, с коэффициентами +-2^n, задано количество отрезков N. Требуется найти разбиение области определения аппроксимируемой функции на отрезки, так чтобы используя заданные прямые в этих отрезках получить наименьшую невязку прямых с функцией. Так?

Задача скорее всего многоэксремальная, и решается только численно, поисковыми/стохастическими методами оптимизации.

Возможно линейное программирование помогло бы. Помню, в универе решали похожие задачи на подбор коэффициентов. Но было давно...

Цитата(TSerg)
Раньше такую "любознательность" оплачивало государство, да и сейчас есть такие государства и фонды sm.gif
Ну вот одно из государств платит мне за любознательность sm.gif)).

Если что-то придумаю то отпишусь. А пока желающие могут ознакомиться с одним из похожих решений в H. Amin, K. M. Curtis, and B. R. Hayes-Gill, “Piecewise linear approximation applied to nonlinear function of a neural network,” IEE Proceedings - Circuits, Devices and Systems, vol. 144, no. 6, pp. 313–317, Dec. 1997.
Go to the top of the page
 
+Quote Post
Onkel
сообщение Feb 26 2016, 07:28
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861



Цитата(count_enable @ Feb 25 2016, 23:59) *
Возможно линейное программирование помогло бы. ...

имхо проще надо быть, ближе к Оккаму. Если k - степень двойки, то значений k очень мало, и нетрудно перебрать все интерполяции kx+b при разных k (0, 1, 2, 4,....2^^n) и выбрать лучшую по невязке. Поскольку число интервалов m тоже ограничено, мы получаем довольно -таки простую задачу - найти n*m невязок и выбрать по результатам m величин k и m величин b. Вроде так ?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 26 2016, 08:35
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



За 2-3 действия можно умножить на 3, 5, 6, 7, 8, 9, 12, 15... без умножения, только сдвигами и суммированием-вычитанием. Раскрываются необъятные горизонты для творчества. А как выбоать лучшее решение, вопрос.
Go to the top of the page
 
+Quote Post
Onkel
сообщение Feb 26 2016, 09:47
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861



Цитата(ViKo @ Feb 26 2016, 11:35) *
. без умножения, только сдвигами и суммированием-вычитанием

любое умножение- это только сдвиги и суммирование, без умножения.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 26 2016, 09:48
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(count_enable @ Feb 25 2016, 23:59) *
Возможно линейное программирование помогло бы. Помню, в универе решали похожие задачи на подбор коэффициентов. Но было давно...

Для такой функции... На самом правом отрезке коэффициент равен нулю. Задавшись максимальной погрешностью, найдем левую границу. Следующий этап - найдем левую границу второго справа отрезка с коэффициентом 1. И т.д.
Надо только учесть, что нужно масштабировать так, чтобы максимальный коэффициент (около нуля для функций подобного вида) был не 1, а максимальное для Вашей разрядности число.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 21:31
Рейтинг@Mail.ru


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