numpy.polynomial.polyutils.mapdomain#

polynomial.polyutils.mapdomain(x, old, new)[源代码]#

将线性映射应用于输入点。

将把域 old 映射到域 new 的线性映射 offset + scale*x 应用于点 x

参数:
x数组类

待映射的点。如果 x 是 ndarray 的子类型,则该子类型将被保留。

old, new数组类

确定映射的两个域。每个域必须(成功地)转换为包含恰好两个值的一维数组。

返回:
x_outndarray

形状与 x 相同的点数组,经过两个域之间的线性映射应用后。

另请参阅

getdomain, mapparms

说明

这实际上实现了

\[x\_out = new[0] + m(x - old[0])\]

其中

\[m = \frac{new[1]-new[0]}{old[1]-old[0]}\]

示例

>>> import numpy as np
>>> 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.])

也适用于复数(因此可用于将复平面中的任意一条线映射到其中的另一条线)。

>>> 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