Engee 文档

[医]pchip

分段三次Hermite插值多项式(PCHIP)。

库::`工程师`

语法

函数调用

争论

输入参数

# x — 样本点

+ 传递:[向量]

Details

样点设置为向量。 向量资料 x 定义存储数据的点 [参数:y]. 元素 x 它们必须是独一无二的。

数据类型

漂浮物32, 漂浮64</无翻译>

# y — 样本点的函数值

+ 向量资料 | 矩阵 | 阵列

Details

函数在采样点处的值,指定为数值向量、矩阵或数组。 争论 [参数:x]y 它们必须具有相同的长度。

如果 y -矩阵或数组,然后是最后一个维度中的值, y[:,。..,:,j] 作为要与之比较的值 [参数:x]. 在这种情况下,最后一个维度是 y 长度必须与 [参数:x].

数据类型

漂浮物32, 漂浮64</无翻译>

# xq — 查询点

+ 标量,标量 | 向量资料 | 矩阵 | 阵列

Details

指定为标量、向量、矩阵或数组的查询点。 参数中指定的点 xq系列,代表 -插值函数值的坐标 yq,使用函数计算 pchip.

数据类型

漂浮物32, 漂浮64</无翻译>

输出参数

# p — 查询点的插值值

+ 标量,标量 | 向量资料 | 矩阵 | 阵列

Details

作为标量、矢量、矩阵或数组返回的查询点处的插值值。 参数的大小 p 与参数的大小有关 [参数:y][参数:xq]:

  • 如果 [参数:y] -矢量,然后 p 大小与 [参数:xq].

  • 如果 [参数:y] -大小的数组 Ny=尺寸(y),则适用以下条件:

    • 如果 [参数:xq] -标量或矢量,然后 尺寸(p) 申报表 [Ny(1:end-1)长度(xq)].

    • 如果 [参数:xq] -一个数组,然后 尺寸(p) 申报表 [Ny(1:end-1)尺寸(xq)].

例子:

数据插值使用 样条pchip

Details

让我们比较使用函数获得的插值结果 样条pchip 于两个不同的数据集。 所有这些函数都实现了各种形式的分段三次Hermite插值。 每个函数都有不同的计算插值斜率的方法,这会导致不同的行为,具体取决于源数据中是否存在平坦区域或不规则性。

让我们比较插值在连接平坦区域的样本数据上的结果。 创建值向量 [参数:x],这些点的函数的值 [参数:y] 和查询点 [参数:xq]. 让我们使用函数计算查询点的插值 样条pchip. 让我们在查询点绘制插值函数值以进行比较。

import EngeeDSP.Functions: pchip, spline

x = -3:3
y = [-1, -1, -1, 0, 1, 1, 1]
xq1 = -3:0.01:3

p = pchip(x, y, xq1)
s = spline(x, y, xq1)

plot(x, y,
     seriestype = :scatter,
     markercolor = :white,
     label = "Sample Points",
     legend = :bottomright)
plot!(xq1, p, label = "pchip")
plot!(xq1, s, linestyle = :dashdot, label = "spline")

pchip 1

在这种情况下,功能 pchip 避免了异常值,可以准确地连接平坦区域。

让我们使用采样波动函数进行第二次比较。

import EngeeDSP.Functions: pchip, spline, besselj

x = 0:15
y = besselj.(1, x)
xq2 = 0:0.01:15

p = pchip(x, y, xq2)
s = spline(x, y, xq2)

plot(x, y,
     seriestype = :scatter,
     markercolor = :white,
     label = "Sample Points")
plot!(xq2, p, label = "pchip")
plot!(xq2, s, linestyle = :dashdot, label = "spline")

pchip 1 2

如果基函数是振荡的, 样条 它更好地捕捉点之间的运动。 pchip,其在局部极值附近被强烈地平滑。

此外

保形分段三次插值

Details

功能 pchip 使用分段三次多项式进行插值 与下面列出的属性。

  • 在每个子中间 多项式 是给定数据点的三次Hermite插值多项式,在插值点处具有给定的导数(斜率)。

  • 插值,插值 这就是 , ,和一阶导数 连续的。 二阶导数 可能不是连续的,所以在点上可能会有跳跃 .

  • 立方插值 保持其形状。 点处的斜坡 他们的选择是这样的: 它保持了数据形式和单调。 因此,在数据单调的间隔, 它也是单调的,并且在数据具有局部极值的点。, 也是单调的。

如果 -矩阵, 满足每行的这些属性 .

建议

功能 样条 建造工程 功能几乎相同 pchip 建造工程 . 然而 样条 选择点上的斜率 以另一种方式,即做 连续的。 这种差异有几个影响:

  • 样条 让你得到一个更平滑的结果,那就是 连续的。

  • 样条 如果数据由平滑函数的值组成,则给出更准确的结果。

  • pchip 如果数据不平滑,它没有异常值,波动更小。

  • pchip 设置成本较低。

  • 评估这两种选择同样昂贵。

文学作品

  1. 弗里奇,F.N.和R.E.卡尔森。 "单调分段三次插值。"_SIAM数值分析杂志。_卷。 17,1980,第238-246页。

  2. 卡哈内尔,大卫,克利夫莫勒,斯蒂芬纳什。 _数学方法和软件。_上鞍河,NJ:普伦蒂斯霍尔,1988.