最小二乘法matlab程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

理解最小二乘法的基本原理,通过计算机解决相关问题;用matlab程序解决问题。

1.实验目的:

(1)理解最小二乘法的基本原理,通过计算机解决相关问题;

(2)用matlab解决问题。

2.实验内容:

给定一组实验数据(Xi,Yi)(i=1,2,…n)编写一个通用程序,计算线性拟合和二次拟合(x,y)的值。

3.程序源代码及运行结果:

(一)线性拟合

x=[12345678]

y=[15.320.527.436.649.165.687.8117.6]

x1=0;

x12=0;

y1=0;

xy=0;

n=8;

for i=1:n

x1=x1+x(i);

x12=x12+x(i)^2

y1=y1+y(i);

xy=xy+x(i)*y(i);

end

x1

y1

x12

xy

a0=(y1*x12-x1*xy)/(n*x12-x1*x1);

a1=(n*xy-x1*y1)/(n*x12-x1*x1);

a0

a1

yy=a0+a1*x

plot(x,y,'o')

plot(yy)

运行结果:

x=

12345678

y=

15.300020.500027.400036.600049.100065.6000 87.8000117.6000

x12=

1514305591140204

x1=

36

y1=

419.9000

x12=

204

xy=

2.4794e+003

a0=

-10.7107

a1=

14.0440

yy=

Columns1through7

3.333317.377431.421445.465559.509573.5536 87.5976

Column8

101.6417

>>

(二)二次拟合

xx=0;

yy=0;

x2=0;

x3=0;

x4=0;

xy=0;

y2=0;

n=8;

x1=1:8;

y1=[15.320.527.436.649.165.687.8117.6];

for i=1:n

xx=xx+x1(i);

x2=x2+x1(i)^2;

x3=x3+x1(i)^3;

x4=x4+x1(i)^4;

yy=yy+y1(i);

xy=xy+x1(i)*y1(i);

y2=y2+x1(i)*x1(i)*y1(i);

end

xx

x2

x3

x4

yy

xy

y2

A=[n xx x2;xx x2x3;x2x3x4]; B=[yy;xy;y2];

C=A\B;

C

运行结果:

xx=

36

x2=

204

x3=

1296

x4=

8772

yy=

419.9000

xy=

2.4794e+003

y2=

1.6347e+004

C=

18.8518

-3.6935

1.9708

>>

(三)线性拟合和二次拟合:function ZXE(x,y,m)

S=zeros(1,2*m+1);

T=zeros(m+1,1);

for k=1:2*m+1

S(k)=sum(x.^(k-1)); end

for k=1:m+1

T(k)=sum(x.^(k-1).*y); end

A=zeros(m+1,m+1);

a=zeros(m+1,1);

for i=1:m+1

for j=1:m+1

A(i,j)=S(i+j-1);

end

end

a=A\T;

for k=1:m+1

fprintf('a[%d]=%f\n',k,a(k)); end

运行结果:

>>ZXE(x,y,1);

a[1]=-10.710714

a[2]=14.044048

>>ZXE(x,y,2);

a[1]=18.851786

a[2]=-3.693452

a[3]=1.970833

>>

图像:

相关文档
最新文档