最小二乘法线性与非线性拟合Word下载.docx

上传人:b****7 文档编号:22298948 上传时间:2023-02-03 格式:DOCX 页数:10 大小:18.39KB
下载 相关 举报
最小二乘法线性与非线性拟合Word下载.docx_第1页
第1页 / 共10页
最小二乘法线性与非线性拟合Word下载.docx_第2页
第2页 / 共10页
最小二乘法线性与非线性拟合Word下载.docx_第3页
第3页 / 共10页
最小二乘法线性与非线性拟合Word下载.docx_第4页
第4页 / 共10页
最小二乘法线性与非线性拟合Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

最小二乘法线性与非线性拟合Word下载.docx

《最小二乘法线性与非线性拟合Word下载.docx》由会员分享,可在线阅读,更多相关《最小二乘法线性与非线性拟合Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

最小二乘法线性与非线性拟合Word下载.docx

2.88

2.2576

1.9683

1.9258

2.0862

2.109

2.1979

2.5409

2.9627

3.155

3.2052

试用已知数据求出待定系数的值。

在Matlab中输入以下程序

x=[0,0.2,0.4,0.7,0.9,0.92,0.99,1.2,1.4,1.48,1.5]'

;

y=[2.88;

2.2576;

1.9683;

1.9258;

2.0862;

2.109;

2.1979;

2.5409;

2.9627;

3.155;

3.2052];

A=[ones(size(x))exp(-3*x),cos(-2*x).*exp(-4*x)x.^2];

c=A\y;

c'

运行结果为

ans=

1.2200 

2.3397 

-0.6797 

0.8700

下面画出由拟合得到的曲线及已知的数据散点图

x1=[0:

0.01:

1.5]'

A1=[ones(size(x1))exp(-3*x1),cos(-2*x1).*exp(-4*x1)x1.^2];

y1=A1*c;

plot(x1,y1,x,y,'

o'

事实上,上面给出的数据就是由已知曲线

y(x)=0.8700-0.6797*e^(-3*x)+2.3397*cos(-2*x)*exp(-4*x)+1.2200*x^2

产生的,由上图可见拟合效果较好。

多项式最小二乘拟合

在Matlab的线性最小二乘拟合中,用得较多的是多项式拟合,其命令是

A=polyfit(x,y,m)

其中表示函数中的自变量矩阵,表示因变量矩阵,是输出的系数矩阵,即多项式的系数。

多项式在自变量x处的函数值y可用以下命令计算:

y=polyval(A,x)

对下面一组数据作二次多项式拟合,即要求出二次多项式中的,使最小。

0.1

0.3

0.5

0.6

0.8

1

-0.447

1.978

3.28

6.16

7.08

7.34

7.66

9.56

9.48

9.30

11.2

在Matlab中输入以下命令

x=0:

.1:

1;

y=[-0.4471.9783.286.167.087.347.669.569.489.3011.2];

a=polyfit(x,y,2)

a=

-9.8108 

20.1293 

-0.0317

f=vpa(poly2sym(a),5)

%vpa(polyval2sym(),n)只适用于关于多项式函数的拟合。

因为此函数对于自变量统一规定为“x”,将由polyfit()所得出的系数按自变量幂次升降放在相应的位置。

f=

-9.8108*x^2+20.129*x-.31671e-1

y1=polyval(a,x);

plot(x,y,'

x,y1)

(二)非线性最小二乘拟合

(1)lsqcurvefit()

lsqcurvefit()是非线性最小二乘拟合函数,其本质上是求解

最优化问题。

其使用格式为

x=lsqcurvefit(fun,x0,xdata,ydata)

其中,fun是要拟合的非线性函数,x0是初始参数,xdata,ydata是拟合点的数据,该函数最终返回系数矩阵。

假设已知

并已知该函数满足原型为,其中为待定系数。

10;

y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);

f=inline('

a

(1)*exp(-a

(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x)'

'

a'

x'

);

%建立函数原型,则可以根据他来进行下面的求取系数的计算

[a,res]=lsqcurvefit(f,[1,1,1,1,1],x,y);

res

0.1197

0.2125

0.5404

0.1702

1.2300

res=

7.1637e-007

所求得的系数与原式中的系数相近。

如果向进一步提高精度,则需修改最优化的选项,函数的调用格式也将随之改变。

ff=optimset;

ff.TolFun=1e-20;

ff.TolX=1e-15;

%修改精度,即是修改其限制条件

[a,res]=lsqcurvefit(f,[1,1,1,1,1],x,y,[],[],ff);

%两个空矩阵表示系数向量的上下限

0.1200

0.2130

0.5400

0.1700

9.5035e-021

下面绘图

x1=0:

y1=f(a,x1);

(2)lsqnonlin()

lsqnonlin()函数是另一种求最小二乘拟合的函数,其本质上是求解最优化问题

最优化解。

它的应用格式为

x=lsqnonlin(fun,x0)

其中,fun的定义与lsqnonlin()函数中fun的定义有差别,x0仍为初始参数向量,将输出的系数结果放在变量中。

说明lsqnonlin()函数的使用方法。

首先编写目标函数(curve_fun.m)

functiony=curve_fun(p)%非线性最小二乘拟合函数

x=[0.020.020.060.060.110.110.220.220.560.561.101.10];

y=[764797107123139159152191201207200];

y=p

(1)*x./(p

(2)+x)-y;

再用lsqnonlin()函数求解,输入

[p,resnorm,residual]=lsqnonlin(@curve_fun,[200,0.1])

p=

212.6836 

0.0641

resnorm=

1.1954e+003

residual=

Columns1through11 

-25.4339 

3.5661 

5.8111 

-4.1889 

11.3617 

-4.6383 

5.6847 

12.6847 

-0.1671 

-10.1671 

-6.0313

Column12

0.9687

上面的两种方法都可以作非线性最小二乘曲线拟合

(3)非线性函数的线性化

在进行非线性拟合时,以往由于计算机和相关软件水平有限,常常先把非线性的曲线拟合线性化,然后再进行拟合。

下面比较一下先线性化再进行拟合和直接进行非线性拟合的差异。

已知数据

t

0.25

2

3

4

6

8

c

19.21

18.15

15.36

14.10

12.89

9.32

7.45

5.24

3.01

满足曲线通过数据拟合求出参数和。

方法一:

先将非线性函数转化为线性函数

编写Matlab程序如下

d=300;

t=[0.250.511.523468];

c=[19.2118.1515.3614.1012.899.327.455.243.01];

y=log(c);

a=polyfit(t,y,1)

-0.2347 

2.9943

k=-a

(1)

k=

0.2347

v=d/exp(a

(2))

v=

15.0219

由此也可以求出相关系数。

方法二:

应用非线性拟合直接求解系数

建立m文件:

functionf=curvefun3(x,tdata)

d=300

f=(x

(1)\d)*exp(-x

(2)*tdata)%x

(1)=v;

x

(2)=k

运行程序

tdata=[0.250.511.523468];

cdata=[19.2118.1515.3614.1012.899.327.455.243.01];

x0=[100.5];

x=lsqcurvefit('

curvefun3'

x0,tdata,cdata)

x=

14.8212 

0.2420

f=curvefun3(x,tdata);

plot(tdata,cdata,'

tdata,f)

我们发现两种求法求出的系数很接近。

(三)线性拟合和非线性拟合区别与联系

在许多实际问题中,变量之间内在的关系并不想前面说的那样简单。

呈线性关系,但有些非线性拟合曲线可以通过适当的变量替换转化为线性曲线,从而用线性拟合进行处理。

对于一个实际的曲线拟合问题,一般先根据观测值在直角坐标平面上描出散点图,看一看散点的分布同哪类曲线图形接近,让后选用相接近的曲线拟合方程,再通过适当的变量替换转化为线性拟合问题,按线性拟合解出后再还原为原变量所表示的曲线拟合方程。

表1.1

线性拟合方程

变量变换

变换后线性拟合方程

Y=

Y=a

例题

测出一组实际数据见下表是对其进行函数拟合。

X

1.1052

1.2214

1.3499

1.4918

1.6478

3.6693

Y

0.6795

0.6006

0.5309

0.4693

0.4148

0.1546

1.8221

2.0138

2.2255

2.4596

2.7183

0.3666

0.3241

0.2864

0.2532

0.2238

>

x=[1.1052,1.2214,1.3499,1.4918,1.6478,1.8221,2.0138,2.2255,2.4596,2.7183,3.6693];

y=[0.6795,0.6006,0.5309,0.4693,0.4148,0.3666,0.3241,0.2864,0.2532,0.2238,0.1546];

plot(x,y,x,y,'

*'

) 

见下图

由上图可以看出是非线性曲线y=a 

由表1.1第一行可知

分别对x,y进行对数变换

x1=log(x);

y1=log(y);

plot(x1,y1)

用线性函数拟合的方法可以求出现行参数,使得lny=alnx+b,即y=,求解系数a,b及。

A=[x1'

ones(size(x1'

))];

c=[A\y1'

]

c=

-1.2338

-0.2631

exp(c

(2))

0.7686

拟合函数为y(x)=0.76870338819924

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1