Matlab函数ppval提供了奇怪的结果

时间:2014-10-08 19:20:29

标签: matlab

  

Matlab函数mkpp / ppval允许构造分段   多项式。函数y(t)= t传递t = 0.7正确   结果y(0.7)= 0.7,如果范围设置为[0 1]。如果范围是   扩展到[-1 1]结果应该是相同的。但是,Matlab   返回值1.7

MATLAB版本:8.3.0.532(R2014a)

MATLAB许可证编号:DEMO 操作系统:Mac OS X版本:10.9.5 Build:13F34

Java版本:Java 1.7.0_11-b21与Oracle Corporation Java HotSpot(TM)64位服务器VM混合模式

% Get the value of the polynom y(t) = t in the section [0 1]
y = ppval(mkpp([0 1],[1 0]), 0.7)
% y(0.7) = 0.7

% Expand the section to [-1 1]
% The result should be the same
y = ppval(mkpp([-1 1],[1 0]), 0.7)
% y(0.7) = 1.7 How that???

2 个答案:

答案 0 :(得分:1)

mkpp的文档中,mkpp([a b], [cn ... c1 c0])表示多项式cn *(x-a)^ n + ... + c1 *(x-a)+ c0。换句话说,第二个参数包含x-a中多项式的系数而不是x中的多项式。

所以,在你的情况下,你的分段多项式实际上是x - ( - 1)= x + 1,解释了你得到的1.7结果。

答案 1 :(得分:1)

我相信mkpp将每个分段多项式移动到第一个输入中定义的区间 - 意味着在多项式中区间的左边缘被视为x = 0。

因此,上面定义的第一个多项式在x = 0到x = 1的区间内从y = 0到y = 1,而第二个在x = -1到x的范围内从y = 0到y = 2 = 1。