Если представить уравнение функции y=k(x^n), как можно узнать по графику степень n

Рейтинг: 1Ответов: 1Опубликовано: 06.02.2023

График зависимости силы от расстояния

На данном графике расположены несколько точек, как по ним можно узнать степень аргумента?

Ответы

▲ 1

Метод наименьших квадратов применялся к исходной функции и к её логарифму. Данные с картинки, с ошибками. К ответу тоже надо с недоверием относится:

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 содержит матрицу ковариаций решения, которая говорит насколько достоверен ответ. Не очень достоверен. Это понятно, так как данные с картинки.