2014-10-08 85 views
1

Matlab函数mkpp/ppval允许构造一个分段的 多项式。如果范围设置为[0 1],则函数y(t)= t为t = 0.7提供正确的 结果y(0.7)= 0.7。如果范围是 展开为[-1 1],结果应该是相同的。然而,MATLAB 返回值1.7Matlab函数ppval提供了奇怪的结果

MATLAB版本:8.3.0.532(R2014a)

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

Java版本:爪哇1.7.0_11-B21与Oracle公司的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??? 

回答

1

从为的文档,mkpp([a b], [cn ... c1 c0])表示多项式cn *(x-a)^ n + ... + c1 *(x-a)+ c0。换句话说,第二个参数包含x-a中多项式的系数,而不是x中的多项式。所以,在你的情况下,你的分段多项式实际上是x - ( - 1)= x + 1,解释了你得到的1.7结果。

1

我相信mkpp会将每个分段多项式移到第一个输入中定义的区间上 - 这意味着该区间的左边缘在多项式中被视为x = 0。因此,上面定义的第一个多项式在间隔x = 0到x = 1之间从y = 0到y = 1,而第二个从y = 0到y = 2在x = -1到x = 1。