Если представить уравнение функции y=k(x^n), как можно узнать по графику степень n
Источник: Stack Overflow на русском
Метод наименьших квадратов применялся к исходной функции и к её логарифму. Данные с картинки, с ошибками. К ответу тоже надо с недоверием относится:
import numpy as np
import scipy.optimize
def f(x, k, n):
return k * x ** n
x = 2.75, 3. , 3.25 , 3.5 , 4. , 4.5 , 5. , 5.5 , 6.75, 9.
y = 0.68, 0.52, 0.425, 0.31, 0.25, 0.16, 0.12, 0.085, 0.45, 0.025
popt, pcov = scipy.optimize.curve_fit(f, x, y, p0=(1, 1))
k, n = popt
print('k =', k)
print('n =', n)
def log_f(x, k, n):
return np.log(f(x, k, n))
log_y = np.log(y)
popt, pcov = scipy.optimize.curve_fit(log_f, x, log_y, p0=(1, 1))
k, n = popt
print('k =', k)
print('n =', n)
$ py temp.py k = 5.213503496224445 n = -2.103279608316817 k = 4.88629302700337 n = -2.10210061690242
P.S. pcov
содержит матрицу ковариаций решения, которая говорит насколько достоверен ответ. Не очень достоверен. Это понятно, так как данные с картинки.