MATLAB最小二乘法

 MATLAB最小二乘法

做者:凱魯嘎吉 - 博客園
http://www.cnblogs.com/kailugaji/html

3、實驗程序函數

4、實驗內容post

設有以下數據:url

3次多項式擬合這組數據.spa

5、解答(按以下順序提交電子版)3d

1.(程序)code

LSM1.m:orm

function p=LSM1(x,y,m)  %x,y爲序列長度相等的數據向量,m爲擬合多項式次數
format short;
A=zeros(m+1,m+1);
for i=0:m
    for j=0:m
        A(i+1,j+1)=sum(x.^(i+j));
    end
    b(i+1)=sum(x.^i.*y);
end
a=A\b';
p=fliplr(a');

2.(運算結果)htm

>> x=[-3,-2,-1,0,1,2,3];
>> y=[-1.76,0.42,1.2,1.34,1.43,2.25,4.38];
>> p=LSM1(x,y,3)

p =

    0.1133   -0.0018    0.0035    1.3300

3.(拓展(方法改進、體會等))blog

MATLAB中有關於最小二乘法的現成的函數,以下編寫程序:

ploy1.m:

function [p]=ploy1(x,y)  
P=polyfit(x,y,3);  
xi=-4:.2:4;  
p=polyfit(x,y,3);
yi=polyval(P,xi);  
plot(xi,yi,x,y,'r*'); 

結果:

>> x=[-3,-2,-1,0,1,2,3];
y=[-1.76,0.42,1.2,1.34,1.43,2.25,4.38]; [p]=ploy1(x,y)

p =

    0.1133   -0.0018    0.0035    1.3300

則y=0.1133*x^3-0.0018*x^2+0.0035*x+1.33

 注:非線性曲線擬合見:MATLAB實例:非線性曲線擬合

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息