如果您使用的是R Base Package中的
splinefun
function
stats
,则很容易导出其构造信息。
set.seed(0)
XK<-C(0、1、2)
YK<-圆形(RUNIF(3),2)
F<-SplineFun(XK,YK,“自然”)35;自然三次样条曲线
建筑信息-环境(F)$Z
str(施工信息)
#$方法:int 2
#$N:利息3
#$x:num[1:3]0 1 2
#$Y:num[1:3]0.9 0.27 0.37美元
#$B:num[1:3]-0.812-0.265 0.282美元
#$C:num[1:3]0 0.547 0美元
#$D:num[1:3]0.182-0.182 0美元
< /代码>
下面说明了它们的含义以及我们如何手动重新构造样条曲线。
有n=3个点,(x[i],y[i]),因此有两个。
attach(施工信息)
##用灰色绘制插值样条线
曲线(f(x,0),从=x[1],到=x[n],Lwd=10,col=8)
##突出显示结
点(x,y,pch=19)
##分段重建
分段立方和lt;-函数(X,Xi,Yi,Bi,CI,DI){
Y+Bi*(X-XI)+Ci*(X-XI)^ 2 +DI*(X-XI)^ 3
}
##循环通过件
对于(i i n 1:(n-1))。{
曲线(件立方(x,x[i],y[i],b[i],c[i],d[i]),从=x[i],到=x[i+1],
加=真,col=i+1)
}
分离(构造信息)
< /代码>

我们看到我们的手册重新构建是正确的。
导出结构信息允许我们离开R并将其用于其他地方。
set.seed(0)
xk <- c(0, 1, 2)
yk <- round(runif(3), 2)
f <- splinefun(xk, yk, "natural") ## natural cubic spline
construction_info <- environment(f)$z
str(construction_info)
# $ method: int 2
# $ n : int 3
# $ x : num [1:3] 0 1 2
# $ y : num [1:3] 0.9 0.27 0.37
# $ b : num [1:3] -0.812 -0.265 0.282
# $ c : num [1:3] 0 0.547 0
# $ d : num [1:3] 0.182 -0.182 0
下面说明了它们的含义以及我们如何手动重新构造样条曲线。
有n=3分,(x[i], y[i])
因此有两件。
attach(construction_info)
## plot the interpolation spline in gray
curve(f(x, 0), from = x[1], to = x[n], lwd = 10, col = 8)
## highlight knots
points(x, y, pch = 19)
## piecewise re-construction
piece_cubic <- function (x, xi, yi, bi, ci, di) {
yi + bi * (x - xi) + ci * (x - xi) ^ 2 + di * (x - xi) ^ 3
}
## loop through pieces
for (i in 1:(n - 1)) {
curve(piece_cubic(x, x[i], y[i], b[i], c[i], d[i]), from = x[i], to = x[i + 1],
add = TRUE, col = i + 1)
}
detach(construction_info)

我们看到我们的手册是正确的。
导出建筑信息可以让我们远离R并将其用于其他地方。