Как посчитать коэффициент экспоненциального роста в python?
Я, по всей видимости, использую неправильный термин, так как гугл мне не помогает.
Что мне нужно научиться делать: Находить коэффициент экспоненциального роста. Есть список вроде [4, 8, 16] и нужно найти коэффициент (2). Только вот список не идеальный, как в моем примере - цифры могут плавать [400, 789, 1700] и все еще нужно найти усредненный коэффициент.
Предполагаю, что есть какой-то метод в какой-то библиотеке, но гугл мне выдает exp и число Эйлера в степени x.
Подскажите с направлением, пожалуйста.
Ответы (2 шт):
Можно логарифмировать элементы списка и построить приближение результата прямой, например, с помощью метода наименьших квадратов.
Коэффициент наклона прямой (a в y=ax+b) - соответствует "коэффициенту экспоненциального роста."
Модель данных
y = B * A^x
ln(y) = ln(B) + x * ln(A) = b + a * x
Подогнав последнее, найдём а, а из него A = Exp(a)
Если в списке реально 3 значения - достаточно поделить второе на первое, а третье на второе, и взять среднее из этих отношений.
Тут похоже имелось ввиду построить график
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