【matlab】MATLAB多項式擬合曲線寫法

給定待擬合的曲線形式爲
在這裏插入圖片描述
上等間隔取 11 個點的數據,在此數據的輸出值上加均值爲 0,均方差 05 .0= σ 的正態分佈噪聲作爲給定訓練數據,用多項式擬合此函數,分別取多項式的階次爲 1, 3 和 11 階,圖示出擬合結果,並討論多項式階次對擬合結果的影響。

x=linspace(-0.5,0.5,11);%生成11-0.50.5之間等間隔的數
y=0.5+0.4*sin(2*pi*x)+normrnd(0,0.05,1,11);%x對應的y值,加上均方差0.05的噪聲
xR = -0.5:0.01:0.5;%選取多個離散點,目的是使得最後模擬的曲線看起來更光滑

subplot(3,1,1);%定義了三幅圖,畫第一幅圖
p1 = polyfit(x,y,1);%擬合一階曲線
y1 = polyval(p1,xR);%曲線p1各點對應的y值
plot(xR,y1,x,y,'r*')%作圖

subplot(3,1,2);%畫第二幅圖
p2 = polyfit(x,y,3);%擬合三階曲線
y2 = polyval(p2,xR);%曲線p2各點對應的y值
plot(xR,y2,x,y,'r*')%作圖

subplot(3,1,3);%畫第三幅圖
p3 = polyfit(x,y,11);%擬合十一階曲線
y3 = polyval(p3,xR);%曲線p3各點對應的y值
plot(xR,y3,x,y,'r*')%作圖

在這裏插入圖片描述

警告: 多項式不是唯一的;階數 >= 數據點的數目。
In polyfit (line 74)
In homework3 (line 16)

通常而言,一階方程需要兩個數來解得,二階方程需要三個數來解得。
題目給出11個點,求11階多項式,會出現多解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章