numpy.poly1d() в Python

| | | | | | | | | | | | | | | | | | | | | | | | | | |
Примечание

Это часть старого полиномиального API. Начиная с версии 1.4 предпочтительнее использовать новый полиномиальный API, определенный в numpy.polynomial. Сводку различий можно найти в руководстве по переходу.

Функция numpy.poly1d() позволяет определить полиномиальную функцию. Таким образом, он упрощает использование естественных операций над многочленами.

Это удобный класс, используемый для инкапсуляции «естественных» операций над многочленами, чтобы упомянутые операции могли выполнять свои функции. обычная форма в коде.

Синтаксис: numpy.poly1d(arr, root, var)
Параметры:
arr: [array_like] Коэффициенты полинома даны в порядке убывания степеней. Если для второго параметра (root) задано значение True, значения массива являются корнями уравнения полинома.

root: [bool, необязательный] True означает полиномиальные корни. По умолчанию — False.
var: переменная, такая как x, y, z, которая нам нужна в полиноме [по умолчанию равно x].

Аргументы:
c: Полиномиальный коэффициент.
coef: Полиномиальный коэффициент.
коэффициенты: полиномиальный коэффициент.
порядок: порядок или степень полинома.
o: порядок или степень полинома.
r: корень полинома.
roots: корень полинома.

Возврат: Многочлен и примененная операция


Примеры Numpy poly1d

np.poly1d пример #1

def _break_points(num, den): " ""Извлечь точки останова по реальной оси и приросты с учетом этих местоположений""" # type: (np.poly1d, np.poly1d) -> (np.array, np.array) dnum = num.deriv(m=1) dden = den.deriv(m=1) polynom = den * dnum - num * dden real_break_pts = polynom.r # не обращайте внимания на бесконечные точки останова real_break_pts = real_break_pts[num(real_break_pts) != 0] k_break = -den(real_break_pts ) / num(real_break_pts) idx = k_break >= 0 # выигрывают только положительные числа k_break = k_break[idx] real_break_pts = real_break_pts[idx] if len(k_break) == 0: k_break = [0] real_break_pts 

np.poly1d пример #2

def test_poly1d_math(self): # здесь мы используем некоторые простые коэффициенты для облегчения вычислений p = np.poly1d([1., 2, 4]) q = np.poly1d([4., 2, 1]) assert_equal(p/q, (np.poly1d([0.25]), np.poly1d([1.5, 3.75]))) assert_equal(p. integ(), нп.п oly1d([1/3, 1., 4., 0.])) assert_equal(p.integ(1), np.poly1d([1/3, 1., 4., 0.])) p = np .poly1d([1., 2, 3]) q = np.poly1d([3., 2, 1]) assert_equal(p * q, np.poly1d([3., 8., 14., 8., 3.])) assert_equal(p + q, np.poly1d([4., 4., 4.])) assert_equal(p - q, np.poly1d([-2., 0., 2.])) assert_equal(p ** 4, np.poly1d([1., 8., 36., 104., 214., 312., 324., 216., 81.])) assert_equal(p(q), np. poly1d([9., 12., 16., 8., 6.])) assert_equal(q(p), np.poly1d([3., 12., 32., 40., 34.])) assert_equal (p.deriv(), np.poly1d([2., 2.])) assert_equal(p.deriv(2), np.poly1d([2.])) assert_equal(np.polydiv(np.poly1d([ 1, 0, -1]), np.poly1d([1, 1])), (np.poly1d([1., -1.]), np.poly1d([0.]))) 

np.poly1d пример #3

def test_poly1d_str_and_repr(self): p = np.poly1d([1., 2, 3]) assert_equal(repr(p), `poly1d([1 ., 2., 3.])`) assert_equal(str(p), ` 2 ` `1 x + 2 x + 3`) q = np.poly1d([3., 2, 1]) assert_equal(repr( q), `poly1d([3., 2., 1.])`) assert_equal(str(q), ` 2 ` `3 x + 2 x + 1`) r = np.poly1d([1.89999 + 2j, -3j, -5,12345678, 2 + 1j]) assert_equal(str(r), ` 3 2 ` `(1,9 + 2j) x - 3j x - 5,123 x + (2 + 1j)`) assert_equal(str(np .poly1d([-3, -2, -1])), ` 2 ` `-3 x - 2 x - 1`) 

np.poly1d пример #4

 def data_analysis (e_ph, поток, метод = "наименее"): если метод == "наименее": coeffs = np.polyfit (x = e_ph, y = поток, deg = 11) polynom = np.poly1d (coeffs) x = np.linspace(e_ph[0], e_ph[-1], num=100) pd = np.polyder(polynom, m=1) indx = np.argmax(np.abs(pd(x))) eph_c = x [indx] pd2 = np.polyder(polynom, m=2) p2_roots = np.roots(pd2) p2_roots = p2_roots[p2_roots[:].imag == 0] p2_roots = np.real(p2_roots) Eph_fin = find_nearest(p2_roots ,eph_c) return Eph_fin, polynom elif method == "new method": pass #plt.plot(Etotal, total, "ro") #plt.plot(x, polynom(x)) 

np .poly1d example #5

def _systopoly1d(sys): """Извлечь полиномы числителя и знаменателя для системы""" # Разрешить ввод из набора инструментов обработки сигналов if (isinstance(sys, scipy.signal. lti)): nump = sys.num denp = s ys.den else: # При необходимости преобразовать в передаточную функцию sys = _convert_to_transfer_function(sys) # Убедитесь, что у нас есть система SISO if (sys.inputs > 1 или sys.outputs > 1): поднять ControlMIMONotImplemented() # Начать с извлечение числителя и знаменателя из системного объекта nump = sys.num[0][0] denp = sys.den[0][0] # Проверяем, являются ли num, den полиномами; в противном случае преобразовать if (not isinstance(nump, poly1d)): nump = poly1d(nump) if (not isinstance(denp, poly1d)): denp = poly1d(denp) return (nump, denp) 

np .poly1d example #6

def quadraticInterpolation(valueList2d, numDegrees, n, startTime=None, endTime=None): ``` Генерирует ряд точек на гладкой кривой, которые пересекают заданные точки numDegrees - степени подобранного полинома - кривая становится странной, если это значение слишком велико для ввода n - количество точек для вывода startTime/endTime/n - n точек будет сгенерировано через равные интервалы между startTime и endTime ``` _numpyCheck( ) x, y = zip(*valueList2d), если startTime равно None: startTime = x[0], если endTime равно None: endTime = x[-1] polyFunc = np.poly1d(np.polyfit(x, y, numDegrees)) newX = np.linspace(startTime, endTime, n) retList = [(n, polyFunc(n)) для n в newX] return retList 

np.poly1d пример #7

 def fit_y(self, X, Y, x1, x2): len(X) != 0 # если X включает только одну точку, функции on получит строку y=Y[0], если np.sum(X == X[0]) == len(X): return Y[0], Y[0] p = np.poly1d(np.polyfit( X, Y, 1)) вернуть p(x1), p(x2) 

np.poly1d пример #8

def remove_linear_BG_XAS_preedge( xmcd_data, scanparams, process_parameters=None, process_number= -1 ): """Следует удалить линейный фон на основе среднего значения перед фронтом""" preedge_spectrum = get_preedge_spectrum(process_parameters, xmcd_data) preedge_poly = np.poly1d( np.polyfit(preedge_spectrum["Энергия"], preedge_spectrum["XAS" ], 1) ) xas_bg = preedge_poly(xmcd_data["Энергия"]) для xas в ["XAS+", "XAS-", "XAS"]: xmcd_data[xas] -= xas_bg return (xmcd_data, {"xas_bg_poly_coeffs": " ".join(map(str, preedge_poly.coeffs))}) 

np.poly1d пример #9

def fit_y(self, X, Y, x1, x2): len(X) != 0 # если X включает только одну точку, функция получит строку y=Y[0] if np.sum(X == X[0]) == len(X): return Y[0 ], Y[0] p = np.poly1d(np.polyfit(X, Y, 1)) return p(x1), p(x2) 

np.poly1d пример #10

определение __init__( self, roots, weights=None, hn=1.0, kn=1.0, wfunc=None, limit=None, monic=0,eval_func=None): np.poly1d.__init__(self,roots, r=1) equiv_weights = [ weights[k] / wfunc(roots[k]) for k in range(len(roots))] self.__dict__[`weights`] = np.array(list(zip(roots,weights,equiv_weights))) self. __dict__[`weight_func`] = wfunc self.__dict__[`limits`] = пределы mu =  sqrt(hn) if monic: evf = eval_func if evf: eval_func = lambda x: evf(x)/kn mu = mu / abs( kn) kn = 1.0 self.__dict__[`normcoef`] = mu self.__dict__[`coeffs`] *= kn # Примечание: eval_func будет отброшен при арифметических вычислениях self.__dict__[`_eval_func`] = eval_func