Как посчитать коэффициент экспоненциального роста в python?

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

Что мне нужно научиться делать: Находить коэффициент экспоненциального роста. Есть список вроде [4, 8, 16] и нужно найти коэффициент (2). Только вот список не идеальный, как в моем примере - цифры могут плавать [400, 789, 1700] и все еще нужно найти усредненный коэффициент.

Предполагаю, что есть какой-то метод в какой-то библиотеке, но гугл мне выдает exp и число Эйлера в степени x.

Подскажите с направлением, пожалуйста.


Ответы (2 шт):

Автор решения: MBo

Можно логарифмировать элементы списка и построить приближение результата прямой, например, с помощью метода наименьших квадратов.

Коэффициент наклона прямой (a в y=ax+b) - соответствует "коэффициенту экспоненциального роста."

Модель данных

y = B * A^x
ln(y) = ln(B) + x * ln(A) = b + a * x

Подогнав последнее, найдём а, а из него A = Exp(a)


Если в списке реально 3 значения - достаточно поделить второе на первое, а третье на второе, и взять среднее из этих отношений.

→ Ссылка
Автор решения: eri

Тут похоже имелось ввиду построить график

y=a*С^(k*x)+b

Надо найти С. Чтоб найти подходящюю кривую аналитически составляют систему из 3х уравнений, надо ещё координату x знать

400 = a*exp(k*1)+b
789 = a*exp(k*2)+b
1700 = a*exp(k*3)+b

делим на а и логарифмируем

   ln((400-b)/a) = k*1
   ....

k вносим под логорифм

   ((400-b)/a)^(1/k) = 0

   ...

дальше замена переменных, приведение к нормальному виду и дальше не помню - надо загуглить...)

Вот Вам похоже эту систему уравнений надо решить численными методами...

Во чтото похожее , но не то что я пытаюсь вспомнить

В тех преобразованиях сводится к логарифму=1, поэтому мантиса (ну e в экспоненте как называется..) может быть и не числом Эйлера, а ещё одним коэфицентом. который легко вычисляется когда найдете a,b,k

→ Ссылка