我试图在R中找到多项式的系数,但我不确定多项式的顺序是什么。
我有数据:
x=seq(6, 174, by=8)
y=rep(c(-1,1),11)
现在我想找到(显然)非线性函数来点击所有这些点。函数值仍应位于[-1,1]
区间内,所有这些点都应理解为抛物线的顶点。
修改
实际上这不是示例数据,我只需要确切地说明这些功能。
我试图用多项式来描述它,直到25度,然后放弃,用多项式似乎只能逼近曲线但不能直接得到它。
建议使用正弦曲线。有人知道如何获得精确的三角函数吗?
答案 0 :(得分:3)
您的数据具有强烈的特征,即它们是从正弦信号中采样的。由于限制y
被约束到[-1,1]
,我们肯定知道幅度是1,所以我们假设我们需要sin
函数:
y = sin((2 * pi / T) * x + phi)
其中T
是句点,phi
是句号。您的数据期限很明显:2 * 8 = 16
。要获得phi
,只需使用x = 6
,y = -1
时的事实。那是
sin(12 * pi / T + phi) = -1
给出了一个解决方案:phi = -pi/2 - 12 * pi / T
。
我们走了:
T <- 16
phi <- -pi/2 - 12 * pi / T
f <- function(x) sin(x * pi / 8 + phi)
plot(x, y)
x0 <- seq(6, 174, by = 0.2)
y0 <- f(x0)
lines(x0, y0, col = 2)
你有多项式的初衷并非不可能,但它不能是普通的多项式。普通多项式是无界的。当Inf
倾向于-Inf
或x
时,它会趋向于Inf
或-Inf
。
局部多项式是可能的。既然你说:所有这些点应该被理解为抛物线的顶点,你似乎期望一个平滑的函数。然后三次样条是理想的。具体来说,我们不需要自然的三次样条而是周期的三次样条。 spline
包中的stats
函数可以帮助我们:
int <- spline(x[-1], y[-1], method = "periodic", xout = x0)
注意,我已经删除了第一个数据,与“定期”方法一样,spline
希望y
在两端都具有相同的值。删除第一个数据后,y
值均为1。
plot(x, y)
lines(int, col = 2)
我没有将样条插值与正弦函数进行比较。它们不能完全相同,但在统计建模中我们可以使用其中一个模拟基础循环信号/效果。