np.polyfit () – křivka kování s NumPy Polyfit

The .polyfit() funkce, přijímá tři různé vstupní hodnoty: x, y a polynomiální stupeň. Argumenty x a y odpovídají hodnotám datových bodů, které chceme přizpůsobit, na osách x a y. Třetí parametr určuje stupeň naší polynomiální funkce. Například pro získání lineárního uložení použijte stupeň 1.

Obsah

Co Křivky?

tvarovka křivky spočívá v sestavení matematické funkce, která je schopna přizpůsobit některé konkrétní datové body. Většina z časů, montáž rovnice je vystaven omezení; navíc, to je také možné, aby se počáteční odhad pro poskytování užitečné výchozí body pro odhad nastavitelných parametrů, tento postup má tu výhodu, že snížení výpočetní práce. V tomto článku prozkoumáme NumPy funkci .polyfit(), která umožňuje vytvářet polynomiální fit funkce velmi jednoduchým a okamžitým způsobem.

Lineární uložení

nejjednodušším typem uložení je lineární uložení (polynomiální funkce prvního stupně), ve kterém jsou datové body namontovány pomocí přímky. Obecná rovnice přímky je:

y = mx + q

, Kde „m“ je tzv. úhlový součinitel a „q“ zachytit. Když použijeme lineární přizpůsobení, v podstatě hledáme hodnoty parametrů “ m “ a „q“, které poskytují nejlepší přizpůsobení pro naše datové body. V Numpy je funkce np.polyfit() velmi intuitivní a výkonný nástroj pro montáž datových bodů; podívejme se, jak umístit náhodnou řadu datových bodů s přímkou.

V následujícím příkladu chceme použít lineární fit pro některé datové body, popsané pole x a y. Na .polyfit() funkce, přijímá tři různé vstupní hodnoty: x, y a polynomiální stupeň. Zatímco x a y odpovídají hodnotám datových bodů, které chceme přizpůsobit, na osách x a y; třetí parametr určuje stupeň naší polynomiální funkce. Protože chceme lineární uložení, určíme stupeň rovný 1. Výstupy funkce polyfit() budou seznam obsahující parametry montáže; první je ten, který je ve funkci vynásoben nejvyšším stupněm; ostatní pak následují toto pořadí.

import numpy as npfrom numpy import random #it will be useful for generating some random noise (on purpose) in the data points that we want to fitimport matplotlib.pyplot as plt #for plotting the data#---LINEAR FIT----#generate the x arrayx = 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 noisey = np.array() #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 = fitintercept = fitfit_eq = ang_coeff*x + intercept #obtaining the y axis values for the fitting function#Plotting the datafig = 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 pointsax.set_title('Linear fit example')ax.legend()plt.show()

jak bylo uvedeno výše, proměnná fit bude obsahovat parametry montáže. První je úhlový koeficient, poslední je zachycení. V tomto bodě, abychom mohli vykreslit naše přizpůsobení, musíme sestavit hodnoty osy y ze získaných parametrů pomocí původních hodnot osy x. V příkladu je tento krok popsán definicí proměnné fit_eq. Poslední zbývající věc je vykreslit data a montážní rovnici. Výsledkem je:

Polynomiální fit druhého stupně

V tomto druhém příkladu jsme se vytvořit druhý stupeň polynomiální fit. Polynom funkce tohoto typu popsat parabolickou křivkou v rovině xy; jejich obecná rovnice je:

y = ax2 + bx + c

kde a, b a c jsou parametry rovnice, které odhadujeme při generování montáž funkce. Datové body, které v tomto příkladu zapadneme, představují trajektorii objektu, který byl hozen z neznámé výšky. Využitím funkce .polyfit() přizpůsobíme trajektorii padajícího objektu a získáme také odhad jeho počáteční rychlosti ve směru x, v0.

#-----POLYNOMIAL FIT----x = np.array() # x coordinatesy = np.array() # y coordinatesfit = np.polyfit(x, y, 2)a = fitb = fitc = fitfit_equation = a * np.square(x) + b * x + c#Plottingfig1 = 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()

po inicializaci x a y pole definování objektu trajektorie, můžeme použít funkci .polyfit(), tentokrát vložení „2“ jako stupeň polynomu fit funkce. Je to proto, že trajektorie padajícího objektu může být popsána polynomem druhého stupně; v našem případě vztah mezi x a y souřadnice je dána:

y = y0 – ½ (g/ v02)x2

kde y0 je počáteční polohu (výšku, ze které objekt byl hozen), g gravitační zrychlení ( 9,81 m/s2) a v0 je počáteční rychlost (m/s) v x-směru (na adrese: https://en.wikipedia.org/wiki/Equations_for_a_falling_body pro více informací). Poté přiřadíme proměnným a, b a c hodnotu 3 parametrů kování a definujeme fit_equation, polynomiální rovnici, která bude vynesena; výsledkem je:

Pokud bychom nyní vytisknout tří nastavitelných parametrů, a,b a c, získáme následující hodnoty: a = -0.100 , b = 0.038, c = 24.92. V rovnici popisující trajektorii padajícího těla není b horizontu; vzhledem k tomu, fit je vždy odhadem skutečného výsledku, budeme vždy hodnoty pro všechny parametry; nicméně můžeme si všimnout, že hodnota našeho b horizontu, je mnohem menší než ostatní a může být nějak zapomněl, při porovnání naše fit s rovnice popisující fyzikální problém. Termín c představuje počáteční výšku (y0), zatímco termín a popisuje množství – ½ (g / v02). Proto počáteční rychlost v0 je dána:

v0=2-g2a

čímž se získá konečná hodnota v0 = 6.979 m/s.