Автор оригинала: Andrea Ridolfi.
. Polyfit ()
Функция, принимает три разных значения входных данных: х
, y
и полиномиальная степень. Аргументы x
и y
Соответствует значениям точек данных, которые мы хотим соответствовать, на х
и y
оси соответственно. Третий параметр указывает степень нашей полиномиальной функции. Например, чтобы получить линейную посадку, используйте степень 1.
Что такое кривая фитинга?
Кривая фитинга состоит в создании математической функции, которая способна соответствовать некоторым конкретным точкам данных. Большую часть времени, уравнение подходящего уравнения подвергается ограничениям; Кроме того, также возможно создать первоначальную предположение для предоставления полезных отправных точек для оценки примерных параметров, эта последняя процедура обладает преимуществом снижения вычислительной работы. В этой статье мы исследуем Numpy функция .Polyfit ()
, который позволяет создавать многочленные функции FIT очень простым и немедленным образом.
Линейный посадка
Самый простой тип Fit – это линейная посадка (первая полиномальная функция), в которой точки данных оснащены прямой линией. Общее уравнение прямой линии:
y + Q.
Где называется «M» Угловой коэффициент и “Q” перехватить Отказ Когда мы применяем линейную посадку, мы в основном ищем значения для параметров «m» и «q», которые дают наилучшее подходящее для наших точек данных. В Numpy, функция np.polyfit ()
является очень интуитивным и мощным инструментом для установки данных на данных; Давайте посмотрим, как поместить случайную серию точек данных с прямой.
В следующем примере мы хотим применить линейный подходящий для некоторых точек данных, описанных массивами х
и уход
. Polyfit ()
Функция, принимает три разных значения входных данных: х
, y
и полиномиальная степень. В то время как х
и уход
Соответствует значениям точек данных, которые мы хотим соответствовать, на х
и y
оси соответственно; Третий параметр указывает степень нашей полиномиальной функции. Поскольку мы хотим линейную посадку, мы укажем степень, равную 1. Выходы Polyfit ()
Функция будет список, содержащий параметры подходящих; Первый, тот, который в функции умножается на самый высокий уровень степени; Другие затем следуют по этому заказу.
import numpy as np from numpy import random #it will be useful for generating some random noise (on purpose) in the data points that we want to fit import matplotlib.pyplot as plt #for plotting the data #---LINEAR FIT---- #generate the x array x = np.linspace(0,60,60) # generate an array of 60 equally space points #generate the y array exploiting the random.randint() function to introduce some random noise y = np.array([random.randint(i-2, i+2) for i in x]) #each element is a random number with value between +-2 the respective x axis value #Applying a linear fit with .polyfit() fit = np.polyfit(x,y,1) ang_coeff = fit[0] intercept = fit[1] fit_eq = ang_coeff*x + intercept #obtaining the y axis values for the fitting function #Plotting the data fig = plt.figure() ax = fig.subplots() ax.plot(x, fit_eq,color = 'r', alpha = 0.5, label = 'Linear fit') ax.scatter(x,y,s = 5, color = 'b', label = 'Data points') #Original data points ax.set_title('Linear fit example') ax.legend() plt.show()
Как упоминалось ранее, переменная подходит
будет содержать параметры примерки. Первый – угловой коэффициент, последний перехват. На этом этапе, чтобы построить нашу посадку, мы должны создать значения оси Y из полученных параметров, используя исходные значения оси X. В примере этот шаг описывается определением fit_eq
Переменная. Последняя оставшаяся вещь – построить данные и уравнение подходящего. Результатом является:
Полиномиальная подгонка второй степени
Во втором примере мы создадим многочленную подгонку второй степени. Полиномиальные функции этого типа описывают параболическую кривую в XY самолет; Их общее уравнение:
y 2 + bx + c
где А , B а также C . являются параметрами уравнения, которые мы оцениваем при создании функции подгонки. Точки данных, которые мы подойдем в этом примере, представляют траекторию объекта, которая была брошена с неизвестной высоты. Эксплуатировать .Polyfit ()
Функция, мы будем соответствовать траектории падающего объекта, и мы также получим оценку для его начальной скорости в направлении X, V 0 Отказ
#-----POLYNOMIAL FIT---- x = np.array([1.2,2.5,3.4,4.0,5.4,6.1,7.2,8.1,9.0,10.1,11.2,12.3,13.4,14.1,15.0]) # x coordinates y = np.array([24.8,24.5,24.0,23.3,22.4,21.3,20.0,18.5,16.8,14.9,12.8,10.5,8.0,5.3,2.4]) # y coordinates fit = np.polyfit(x, y, 2) a = fit[0] b = fit[1] c = fit[2] fit_equation = a * np.square(x) + b * x + c #Plotting fig1 = plt.figure() ax1 = fig1.subplots() ax1.plot(x, fit_equation,color = 'r',alpha = 0.5, label = 'Polynomial fit') ax1.scatter(x, y, s = 5, color = 'b', label = 'Data points') ax1.set_title('Polynomial fit example') ax1.legend() plt.show()
После инициализации х
и y
Массивы, определяющие траекторию объекта, мы применяем функцию .Polyfit ()
На этот раз вставляется «2» как степень функции полинома. Это связано с тем, что траектория падающего объекта может быть описана полиномом второй степени; В нашем случае соотношение между х
и y
Координаты даны:
y 0 – ½ (G/V 0 2 ) X 2
где y 0 является начальным положением (высота, из которой объект был брошен), G Ускорение гравитации (̴9,81 м/с 2 ) и V 0 Начальная скорость (м/с) в X-направлении (посещение: https://en.wikipedia.org/wiki/equations_for_a_falling_body Для более подробной информации). Затем мы назначаем в переменные А
, b
и C
. Значение 3 параметра установки и определяем Fit_equation
, полиномиальное уравнение, которое будет нанесено; Результатом является:
Если мы сейчас распечатаем три параметра подходящих, а, б и слияние Мы получаем следующие значения: A = -0.100, 0,038, 0,92. В уравнении, описывающие траекторию падающего тела, нет B срок; Поскольку посадка всегда является приближением реального результата, мы всегда будем получать значение для всех параметров; Однако мы заметим, что ценность нашего B Срок гораздо меньше, чем у других, и может быть как-то забывает, при сравнении нашей посадки с уравнением, описывающим физику проблемы. C . Термин представляет собой начальную высоту ( y 0 ) пока А Срок описывает количество – ½ (G/V 0 2 ) Отказ Следовательно, начальная скорость V 0 дан кем-то:
v0 = 2-g2a
Удача окончательного значения V 0 .979 м/с.
Оригинал: “https://blog.finxter.com/np-polyfit/”