Matlab GridDedInterplant如何处理应该拒绝的输入?

Matlab GridDedInterplant如何处理应该拒绝的输入?,matlab,interpolation,polynomial-math,polynomials,undocumented-behavior,Matlab,Interpolation,Polynomial Math,Polynomials,Undocumented Behavior,的文件规定,pchip方法“至少需要4个(网格)点”。但是,当我使用两点向量运行它时,它是这样的: >> F = griddedInterpolant([0,1],[1,2],'pchip') F = griddedInterpolant with properties: GridVectors: {[0 1]} Values: [1 2] Method: 'pchip'

的文件规定,
pchip
方法“至少需要4个(网格)点”。但是,当我使用两点向量运行它时,它是这样的:

>> F = griddedInterpolant([0,1],[1,2],'pchip')

F = 

  griddedInterpolant with properties:

            GridVectors: {[0 1]}
                 Values: [1 2]
                 Method: 'pchip'
    ExtrapolationMethod: 'pchip'
请注意,该方法仍然是
pchip


这很令人困惑。为什么它不抛出一个错误

我猜当前的行为是TMW的一种设计选择,通过允许大多数用户“逃脱”一些可能使用低阶多项式解决的边缘情况,从而为大多数用户节省了麻烦。至于文件,这可能是一个疏忽

请看以下示例:

xq = -2:0.1:2;
p = pchip([0,1],[1,2], xq);
figure(); plot(xq, p);
这运行没有问题,并产生:

。。。我们可以看到,它退化成一条线性曲线。这并不是一个真正的问题,因为它似乎尊重了一个保形分段多项式的性质


事实上,如果您希望它是立方的(即3次方),它需要4个数据点(但实际上它不是“分段的”,因为它只有1个数据点)

我认为这种在教育和科学应用中的“逃脱”是可怕的,因为当出现边缘情况时,它不会抛出错误,甚至不会警告用户他们看到的不是他们要求的,特别是当他们没有在官方手册中谈论胁迫行为时。例如,一个从不参考其他来源的学生会认为“当pchip使用少于4个点时,结果与线性相同”,而不是“当pchip使用少于4个点时,pchip将中断”@Yvon或者它教你不要盲目行事,而是要始终注意你使用的代码的作用。