多項式均表示為陣列形式,陣列元素為多項式降冪係數
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...