2014-10-08 29 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。