二次插值法

  • 本文关键字:二次 插值法
  • 更新时间 :
  • 英文 :


谁能告诉我如何使用二次插值计算缺失的数据。我知道zoo包提供线性和三次插值。

  1. 二次插值呢?
  2. 如何检查输入值是否正确?

谢谢。

这么多的赞鼓励我把我的评论变成一个答案。

二次插值很少见,原因如下:两个数据点定义一条直线,四个数据点定义三次曲线。所以你可以用一个或两个数据点在你要插值的间隔的两边进行插值。对于三次情况,您还可以使用四个自由度来匹配间隙两侧的函数值和斜率,从而导致三次样条插值。

然而,对于二次曲线,你需要有三个自由度。所以你需要三个点来定义插值形状,你不能均匀地分布在间隙的两边。

可能的"解决方案":

  • 你可以做一个非对称的插值,即在左侧使用两个数据点,但在右侧使用一个数据点。结果可能也是不对称的。
  • 你可以做分段二次近似,使用三个以上的点来拟合二次曲线。但近似曲线不会通过你的数据点,所以碎片不会正确排列。
  • 你可以对你的整个数据集做一个全局二次近似,但这根本不是插值。
  • 您可以使用两个自由度来匹配段的每个末端的一个数据点,并使用第三度以某种对称的方式塑造曲线,例如,通过要求中间的斜率为零。但结果可能会比简单的线性插值"摇摆"得多,所以我认为它较差。
这些我都不建议,但我想不出更好的答案来回答你的问题。对于每个计算,您都可以验证给定的实现是否与设计思想相匹配,但由于在我看来所有的设计思想都是有缺陷的,因此这种正确性仍然不能确保插入的值实际上有任何意义。

对于多项式插值和可视化结果拟合,我猜您可能会尝试以下内容:

x <- runif(100,-2,2)
y <- x**2-rnorm(100) # an approximately quadratic relation between x and y. 
plot(x,y)
quadratic.model <- lm(y ~ x + I(x**2))
int <- function(x) predict(quadratic.model,list(x=x))
plot(int,xlim=c(-2,2),col="navy",add=T)
segments(x,y,x,int(x),col="red")

…"正确性"当然只能测量推算值与观测值之间的距离。

最新更新