从图形(不是Hermite)中识别Mathematica插值函数
|
我正在反向工程Mathematica如何进行列表插值:
(* Fortunately, Mathematica WILL interpolate an arbitrary list *)
tab = Table[a[i], {i,1,100}]
f = Interpolation[tab]
(* get the coefficient of each term by setting others to zero *)
Plot[{f[42+x] /. {a[42] -> 0, a[43] ->0, a[44] -> 0, a[41] -> 1}},
{x,0,1}]
Plot[{f[42+x] /. {a[41] -> 0, a[43] ->0, a[44] -> 0, a[42] -> 1}},
{x,0,1}]
Plot[{f[42+x] /. {a[42] -> 0, a[41] ->0, a[44] -> 0, a[43] -> 1}},
{x,0,1}]
Plot[{f[42+x] /. {a[42] -> 0, a[43] ->0, a[41] -> 0, a[44] -> 1}},
{x,0,1}]
(* above is neither Hermite, nor linear, though some look close *)
(* these are available at oneoff.barrycarter.info/STACK/ *)
Table[f[42+x] /. {a[42] -> 0, a[43] ->0, a[44] -> 0, a[41] -> 1},
{x,0,1, 1/100}] >> /home/barrycarter/BCINFO/ONEOFF/STACK/coeff41.txt
Table[f[42+x] /. {a[41] -> 0, a[43] ->0, a[44] -> 0, a[42] -> 1},
{x,0,1, 1/100}] >> /home/barrycarter/BCINFO/ONEOFF/STACK/coeff42.txt
Table[f[42+x] /. {a[41] -> 0, a[42] ->0, a[44] -> 0, a[43] -> 1},
{x,0,1, 1/100}] >> /home/barrycarter/BCINFO/ONEOFF/STACK/coeff43.txt
Table[f[42+x] /. {a[41] -> 0, a[42] ->0, a[43] -> 0, a[44] -> 1},
{x,0,1, 1/100}] >> /home/barrycarter/BCINFO/ONEOFF/STACK/coeff44.txt
编辑:谢谢,胡扯!那正是我想要的。作为参考,系数为(按顺序):
(x-2)*(x-1)*x/-6
(x-2)*(x-1)*(x+1)/2
x*(x+1)*(x-2)/-2
(x-1)*x*(x+1)/6
没有找到相关结果
已邀请:
1 个回复
喷乡顾沥沪
您可以通过尝试一些示例来确认线性,其中系数$ a $和$ b $作用于长度为$ i ^ \\ text {th} $和$ j ^ \\ text {th} $的基向量$ n $:
因为两个函数是叠加的,所以只有一条曲线。 建立线性后,就足以在$ n $基向量上分析插值器的值。您可以通过微分确定多项式的次数。默认情况下,度为3,但是您可以使用\“ InterpolatingOrder \”参数对其进行修改。下面的代码将绘制一张显然是分段的常数曲线的表,该曲线是由内插器的导数产生的,用于对长度为$ n $的数据使用所有基向量对ioMax进行内插1阶:
输出显示中断发生在参数的整数值处,并且对于长度为$ n $的数据和度为$ d $的插值器,最多存在$ n-d $个不同的段。这些信息应该可以帮助您实现大部分目标。