MATLAB多項式及多項式擬合

2021-07-25 03:48:00 字數 1551 閱讀 6129

多項式均表示為陣列形式,陣列元素為多項式降冪係數

1.      polyval函式

求多項式在某一點或某幾個點的值.

p = [1,1,1];%x^2+x+1

x = [-1,0,1];y = polyval(p,x);

另外求函式在某一點或某幾個點的值可以用函式feval.

x = [-1,0,1];

y = feval(@(x)exp(x),x);%注意用的乘法和乘法都改用.運算子

2.      roots函式

求多項式的零點.

p = [1,-3,2,0];x0 = roots(p);

3.      polyfit函式

用多項式擬合一組資料,返回多項式降冪係數.

xa = [0.1 0.2 0.15 0 -0.2 0.3];ya = [0.950.84 0.86 1.06 1.50 0.72];p = polyfit(xa,ya,3);

上述**是對xa和ya進行2次多項式擬合.

如何找到最佳的擬合次數?

定義誤差,以不同的多項式次數進行擬合,並求出對應的誤差,找到誤差最小的擬合即可.如下是對陣列xa和ya進行擬合的**,嘗試了多項式擬合的次數分別為1~4(擬合次數太高可能出現龍格現象).

xa = [0.1 0.2 0.15 0 -0.2 0.3 -0.1 ];

ya = [0.95 0.84 0.86 1.06 1.50 0.72 1.0];

plot(xa,ya,'r*');

hold on;

err0 = 9999999;

syms x;

for k=1:4

p = polyfit(xa,ya,k);

y = 0;

for i=1:k+1

y = y + p(i) * x^(k-i+1);

endxb = min(xa):0.01:max(xa);

yb = subs(y,x,xb);

plot(xb,yb);

hold on;

new_ya = subs(y,x,xa);

n = length(xa);

errk = 0;

errk = errk + sum(abs(new_ya-ya));

if errk < err0

err0 = errk;

remember = k;

endend

pause;

hold off;

plot(xa,ya,'r*');

hold on;

p = polyfit(xa,ya,remember);

y = 0;

for i=1:k+1

y = y + p(i) * x^(k-i+1);

endvpa(y,4)

xb = min(xa):0.01:max(xa);

yb = subs(y,x,xb);

plot(xb,yb);

在命令視窗或儲存為m指令碼檔案執行上述**,會看到乙個圖形出現,是次數分別為1~4的擬合效果圖,按任意鍵,會看到最佳擬合的效果圖.

matlab多項式與非多項式擬合

擬合標準 1 原始資料向量與擬合向量之間的距離最小,該距離的度量一般使用誤差平方和表示,即均方誤差 r q y 22 2 當均方誤差最小時,說明構造的擬合向量與原始向量最為接近,這種曲線擬合的方法稱為最小二乘法 3 計算均方誤差最小時的擬合係數,可以通過微積分中求解極值的方法實現 多項式擬合 1 多...

多項式擬合缺點 多項式擬合

在網上看別人的心得 一 最小二乘法的基本原理 從整體上考慮近似函式同所給資料點 i 0,1,m 誤差 i 0,1,m 的大小,常用的方法有以下三種 一是誤差 i 0,1,m 絕對值的最大值,即誤差 向量的 範數 二是誤差絕對值的和,即誤差向量r的1 範數 三是誤差平方和的算術平方根,即誤差向量r的2...

多項式擬合

class1.cs 擬合類 using system using system.collections.generic using system.text namespace 最小二乘法擬合多項式 guass i,j sumarr arrx,i,arry,1,length return comput...