Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Упрощённый алгоритм расчёта функции sigmoid

Автор Yougi, августа 20, 2021, 14:00

0 Пользователи и 1 гость просматривают эту тему.

Hellerick

Цитата: Волод от августа 23, 2021, 14:12
Скоко будет по этой формуле е10   ???


     Exact     Approx.
0   0.50000   0.50000
1   0.73106   0.73096
2   0.88080   0.88062
3   0.95257   0.95195
4   0.98201   0.98265
5   0.99331   0.99324
6   0.99753   0.99700
7   0.99909   0.99851
8   0.99966   0.99918
9   0.99988   0.99952
10   0.99995   0.99970


Цитата: maratique от августа 23, 2021, 14:17
Минимизацией   [tex]\int\limits_a^b(e^x - P(x))^2dx[/tex]   что ли?

Me ia minimi la cuadro masima de difere de logaritmos.

Я минимизировал максимальный квадрат разностей логарифмов.

maratique

Memento mori
普京回罗

Волод

Цитата: Hellerick от августа 23, 2021, 14:41
Цитата: Волод от августа 23, 2021, 14:12
Скоко будет по этой формуле е10   ???


     Exact     Approx.
0   0.50000   0.50000
1   0.73106   0.73096
2   0.88080   0.88062
3   0.95257   0.95195
4   0.98201   0.98265
5   0.99331   0.99324
6   0.99753   0.99700
7   0.99909   0.99851
8   0.99966   0.99918
9   0.99988   0.99952
10   0.99995   0.99970


Цитата: maratique от августа 23, 2021, 14:17
Минимизацией   [tex]\int\limits_a^b(e^x - P(x))^2dx[/tex]   что ли?

Me ia minimi la cuadro masima de difere de logaritmos.

Я минимизировал максимальный квадрат разностей логарифмов.

Я же просил е10.

А с достаточной ли точностью посчитана вся функция?
  Пока афтар не раскроет, чего хочет - непонятно.

Yougi

ЦитироватьПока афтар не раскроет, чего хочет - непонятно.
Чего же тут непонятного - избавиться от возведения е в степень. В идеале - ещё и целочисленную математику.  А если таблицу делать - то без разницы, будет это степень е или уже посчитанное значение функции.
Посмотрел, что в интернетах пишут - проще использовать функцию y=x2*(3-2x) при x от 0 до 1.

Волод

Так шаг показателя степени  0,01 в интервале от 0 до 9.99 устроит?
Можно использовать целые числа в таблице для нахождения еt.

Yougi

ЦитироватьТак шаг показателя степени  0,01 в интервале от 0 до 9.99 устроит?
Вполне. Хватит, наверное и 0.05.
ЦитироватьМожно использовать целые числа в таблице для нахождения еt.
А вот тут не очень понятно. Имеется в виду индекс таблицы? Или целочисленные значения e^-t?
ЦитироватьПосмотрел, что в интернетах пишут - проще использовать функцию y=x2*(3-2x) при x от 0 до 1.
Посчитал, построил график... Не, сигмоида лучше...

Волод

Цитата: Yougi от августа 23, 2021, 21:25
ЦитироватьТак шаг показателя степени  0,01 в интервале от 0 до 9.99 устроит?
Вполне. Хватит, наверное и 0.05.
ЦитироватьМожно использовать целые числа в таблице для нахождения еt.
А вот тут не очень понятно. Имеется в виду индекс таблицы? Или целочисленные значения e^-t?
ЦитироватьПосмотрел, что в интернетах пишут - проще использовать функцию y=x2*(3-2x) при x от 0 до 1.
Посчитал, построил график... Не, сигмоида лучше...

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

А вот про саму сигмоиду - наверно нет, но думать не хочется.

Волод


Hellerick

p(t) = t^7/6702+t^5/257+t^3/12+t/2
y(p) = 1/(sqrt(4*p^2+1)-2*p+1)


ExactApprox
-100,000050,00013
-90,000120,00025
-80,000340,00051
-70,000910,00113
-60,002470,00268
-50,006690,00676
-40,017990,01784
-30,047430,04731
-20,119200,11938
-10,268940,26900
00,500000,50000
10,731060,73100
20,880800,88062
30,952570,95269
40,982010,98216
50,993310,99324
60,997530,99732
70,999090,99887
80,999660,99949
90,999880,99975
100,999950,99987

On pote usa simple p = t^3/12+t/2, lo ance dona resultas bastante prosima.

Можно использовать просто p = t^3/12+t/2, тоже получается довольно точно.

Yougi

ЦитироватьМожно использовать просто p = t^3/12+t/2, тоже получается довольно точно.
Только получается не совсем сигмоида. Вернее, совсем не сигмоида.

Волод

Пример:

е3,15(3+0,1+0,05) = е3хе0.1хе0.05  --- 2008554х110517х105127=23336024432917086


Из таблицы:
е0,05=1,05127 ---105127
е0,1=1,10517-----110517
...................................

е3=20,08554 -----2008554



f=23336024432917086/(23336024432917086+1 000 000 000 000 000)≈0,95891

Yougi

ЦитироватьПример:
Понятно, спасибо.
Только вот математика даже в 32 бита не укладывается.
Похоже, придётся всё-таки аппроксимацию отрезками колхозить.

Волод

Я ж для наглядности,  можно усложнив алгоритм, укоротить числа.
Можно добавив чисел в таблицу, вместо двух умножений, сделать одно.

Hellerick

Цитата: Yougi от августа 24, 2021, 09:57
Только получается не совсем сигмоида. Вернее, совсем не сигмоида.

E cual es nonsigmoidal sur lo?

А что в ней несигмоидного?

Toman

Цитата: Yougi от августа 24, 2021, 09:57
Только получается не совсем сигмоида. Вернее, совсем не сигмоида.
А чем плох, например, тупой вариант из трёх частей: начальный параболический, потом прямой отрезок, и завершающий параболический? Эти ваши "настоящие" сигмоиды имеют ту неприятную особенность, что у них бесконечно длинные "хвосты", а значит, по красивой сигмоиде проблематично оперативно среагировать на внезапно приходящий входной сигнал. А вот такие варианты как парабола-прямая-парабола, а то и вообще синусоида (если не пугает бо́льшая временная растянутость перехода либо большее пиковое значение ускорения) - строго ограничены по длине, и потому позволяют предельно оперативно среагировать.
Во́зле до́ма хо́лм с куля́ми - вы́йду на́ холм, ку́ль поставлю.
В славном городе Miami тётки мерялись ногтями, тик иң озын завсегда у Фиделя борода!

maratique

Так ведь вообще есть точное рекуррентное уравнение:
f(x+y) = f(x)f(y) / ( 1- f(x) - f(y) + 2f(x)f(y) )

А можно просто вычислять экспоненту по формуле f(x+h) = f(x)f(h), а потом находить 1/(1+f).

То есть два умножения на шаге и абсолютная почти точность.
Memento mori
普京回罗

Yougi

ЦитироватьА что в ней несигмоидного?
на 180 градусов повёрнута от того, что мне нужно.
Цитироватьа то и вообще синусоида
А вот, кстати, интересная идейка. Таблица синуса у меня уже есть в программе, но для других целей.
Можно по куску -pi/2 - pi/2 разгоняться.
ЦитироватьТак ведь вообще есть точное рекуррентное уравнение:
Э-э-э... Коллеги, не забывайте - я ведь не настоящий математик, я пятитомник Смирнова в макулатуре нашёл...

Hellerick

Цитата: Yougi от августа 24, 2021, 15:57
ЦитироватьА что в ней несигмоидного?
на 180 градусов повёрнута от того, что мне нужно.
:what:

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр