2015-05-06 10 views
0

我有Polyfit和polyval來執行內插

x = linspace(-5,5,256) y = 1./(1+x.^2) plot(x,y,'...') %plot of (x,y)

我想和的順序如圖10所示,以使得多項式相交的曲線圖在11分的多項式來估計此。

所以,我這樣做:

x2 = linspace(-5,5,11) y2 = 1./(1+x2.^2) p = polyfit(x2,y2,10) %finds coefficients of polynomial of degree 10 that fits x2,y2 y3 = polyval(p,x2) plot(x,y,x2,y3,'...')

我以爲polyfit會給我的係數多項式高達級別10,其相交點(x2,y2)(即11分) 然後y3是基本上只是10階多項式所在的位置的值,所以完全標繪它們會給我10階多項式,在11個獨特點上與我的原始圖形相交?

我做錯了什麼?

我的結果:enter image description here

+6

您必須評估'p'不僅在插值點'x2',而是更加密集:'X3 = linspace( -5,-5,500); y3 = polyval(p,x3);情節(X3,Y3);'。由於您只在插值點進行評估,因此在這些評估之間將輸出藍色線段。 – knedlsepp

+0

嘿,謝謝!那工作 – elbarto

+0

雖然問題,因此答案是邊緣微不足道的,只是爲了遵循協議;),@ knedlsepp,你會回答你的評論,讓elbarto可以接受嗎? –

回答

2

你的計算是正確的,但你是不是繪製功能的正確方法。您生成的圖中的藍線是分段線性的。這是因爲您只是在插值點x2處評估多項式pplot命令然後繪製這些點之間的線段,並向您展示您的意外情節。 要獲得期望的結果,你只需要更密集,像這樣評價你的多項式:

x3 = linspace(-5,-5,500); 
y3 = polyval(p,x3); 
plot(x3,y3); 
+0

我剛剛結束了使用 'y3 = polyval(p,x)' 然後繪製了'(x,y3)' 但是,是的,這是我的潛在錯誤。謝謝kned! – elbarto