Utility classes and functions for the polynomial modules.
This module provides: error and warning objects; a polynomial base class;
and some routines used in both the polynomial
and chebyshev
modules.
Class | RankWarning |
Issued by chebfit when the design matrix is rank deficient. |
Function | as_series |
Return argument as a list of 1-d arrays. |
Function | getdomain |
Return a domain suitable for given abscissae. |
Function | mapdomain |
Apply linear map to input points. |
Function | mapparms |
Linear map parameters between domains. |
Function | trimcoef |
Remove "small" "trailing" coefficients from a polynomial. |
Function | trimseq |
Remove small Poly series coefficients. |
Function | _add |
Helper function used to implement the <type>add functions. |
Function | _deprecate_as_int |
Like operator.index , but emits a deprecation warning when passed a float |
Function | _div |
Helper function used to implement the <type>div functions. |
Function | _fit |
Helper function used to implement the <type>fit functions. |
Function | _fromroots |
Helper function used to implement the <type>fromroots functions. |
Function | _gridnd |
Helper function used to implement the <type>grid<n>d functions. |
Function | _nth_slice |
Undocumented |
Function | _pow |
Helper function used to implement the <type>pow functions. |
Function | _sub |
Helper function used to implement the <type>sub functions. |
Function | _valnd |
Helper function used to implement the <type>val<n>d functions. |
Function | _vander_nd |
A generalization of the Vandermonde matrix for N dimensions |
Function | _vander_nd_flat |
Like _vander_nd , but flattens the last len(degrees) axes into a single axis |
Return argument as a list of 1-d arrays.
The returned list contains array(s) of dtype double, complex double, or object. A 1-d argument of shape (N,) is parsed into N arrays of size one; a 2-d argument of shape (M,N) is parsed into M arrays of size N (i.e., is "parsed by row"); and a higher dimensional array raises a Value Error if it is not first reshaped into either a 1-d or 2-d array.
as_series
cannot convert its input to 1-d arrays, or at
least one of the resulting arrays is empty.>>> from numpy.polynomial import polyutils as pu >>> a = np.arange(4) >>> pu.as_series(a) [array([0.]), array([1.]), array([2.]), array([3.])] >>> b = np.arange(6).reshape((2,3)) >>> pu.as_series(b) [array([0., 1., 2.]), array([3., 4., 5.])]
>>> pu.as_series((1, np.arange(3), np.arange(2, dtype=np.float16))) [array([1.]), array([0., 1., 2.]), array([0., 1.])]
>>> pu.as_series([2, [1.1, 0.]]) [array([2.]), array([1.1])]
>>> pu.as_series([2, [1.1, 0.]], trim=False) [array([2.]), array([1.1, 0. ])]
Return a domain suitable for given abscissae.
Find a domain suitable for a polynomial or Chebyshev series defined at the values supplied.
x
. If the inputs are real, then the
two points are the ends of the smallest interval containing the
points x
.mapparms, mapdomain
>>> from numpy.polynomial import polyutils as pu >>> points = np.arange(4)**2 - 5; points array([-5, -4, -1, 4]) >>> pu.getdomain(points) array([-5., 4.]) >>> c = np.exp(complex(0,1)*np.pi*np.arange(12)/6) # unit circle >>> pu.getdomain(c) array([-1.-1.j, 1.+1.j])
Apply linear map to input points.
The linear map offset + scale*x that maps the domain old
to
the domain new
is applied to the points x
.
x
is a subtype of ndarray the subtype
will be preserved.x
, after application of the
linear map between the two domains.getdomain, mapparms
Effectively, this implements:
where
>>> from numpy.polynomial import polyutils as pu >>> old_domain = (-1,1) >>> new_domain = (0,2*np.pi) >>> x = np.linspace(-1,1,6); x array([-1. , -0.6, -0.2, 0.2, 0.6, 1. ]) >>> x_out = pu.mapdomain(x, old_domain, new_domain); x_out array([ 0. , 1.25663706, 2.51327412, 3.76991118, 5.02654825, # may vary 6.28318531]) >>> x - pu.mapdomain(x_out, new_domain, old_domain) array([0., 0., 0., 0., 0., 0.])
Also works for complex numbers (and thus can be used to map any line in the complex plane to any other line therein).
>>> i = complex(0,1) >>> old = (-1 - i, 1 + i) >>> new = (-1 + i, 1 - i) >>> z = np.linspace(old[0], old[1], 6); z array([-1. -1.j , -0.6-0.6j, -0.2-0.2j, 0.2+0.2j, 0.6+0.6j, 1. +1.j ]) >>> new_z = pu.mapdomain(z, old, new); new_z array([-1.0+1.j , -0.6+0.6j, -0.2+0.2j, 0.2-0.2j, 0.6-0.6j, 1.0-1.j ]) # may vary
Linear map parameters between domains.
Return the parameters of the linear map offset + scale*x that maps
old
to new
such that old[i] -> new[i], i = 0, 1.
getdomain, mapdomain
Also works for complex numbers, and thus can be used to calculate the parameters required to map any line in the complex plane to any other line therein.
>>> from numpy.polynomial import polyutils as pu >>> pu.mapparms((-1,1),(-1,1)) (0.0, 1.0) >>> pu.mapparms((1,-1),(-1,1)) (-0.0, -1.0) >>> i = complex(0,1) >>> pu.mapparms((-i,-1),(1,i)) ((1+1j), (1-0j))
Remove "small" "trailing" coefficients from a polynomial.
"Small" means "small in absolute value" and is controlled by the
parameter tol
; "trailing" means highest order coefficient(s), e.g., in
[0, 1, 1, 0, 0] (which represents 0 + x + x**2 + 0*x**3 + 0*x**4)
both the 3-rd and 4-th order coefficients would be "trimmed."
tol
(default value is zero) are removed.tol
< 0trimseq
>>> from numpy.polynomial import polyutils as pu >>> pu.trimcoef((0,0,3,0,5,0,0)) array([0., 0., 3., 0., 5.]) >>> pu.trimcoef((0,0,1e-3,0,1e-5,0,0),1e-3) # item == tol is trimmed array([0.]) >>> i = complex(0,1) # works for complex >>> pu.trimcoef((3e-4,1e-3*(1-i),5e-4,2e-5*(1+i)), 1e-3) array([0.0003+0.j , 0.001 -0.001j])
Remove small Poly series coefficients.
Do not lose the type info if the sequence contains unknown objects.
Like operator.index
, but emits a deprecation warning when passed a float
TypeError : if x is a non-integral float or non-numeric DeprecationWarning : if x is an integral float
Helper function used to implement the <type>div functions.
Implementation uses repeated subtraction of c2 multiplied by the nth basis. For some polynomial types, a more efficient approach may be possible.
Helper function used to implement the <type>fit functions.
Helper function used to implement the <type>fromroots functions.
Helper function used to implement the <type>grid<n>d functions.
Helper function used to implement the <type>pow functions.
Helper function used to implement the <type>val<n>d functions.
A generalization of the Vandermonde matrix for N dimensions
The result is built by combining the results of 1d Vandermonde matrices,
where
Expanding the one-dimensional Vk functions gives:
where Bk, m is the m'th basis of the polynomial construction used along dimension k. For a regular polynomial, Bk, m(x) = Pm(x) = xm.
vander_fs
.vander_fs
.Like _vander_nd
, but flattens the last len(degrees) axes into a single axis
Used to implement the public <type>vander<n>d functions.