1 / 5
文档名称:

matlab处理非线性误差估计.doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

matlab处理非线性误差估计.doc

上传人:fy3986758 2015/10/3 文件大小:0 KB

下载得到文件列表

matlab处理非线性误差估计.doc

相关文档

文档介绍

文档介绍:用matlab拟和模型参数和计算参数误差
Matlab用以建立数学模型是一个很好的工具。对模型函数的评价,一个很重要的方法就是最小二乘(Least squares)由least mean squares这个方法得到。假如有点集P(X, Y),每一个点 P(i) 由X(i), Y(i) , i = 1 ~ m组成;模型 Y_fit = F( A, X ), Y_fit(i) = F(A, X(i) ); 其中 A= A(1) A(2) … A(n)是模型的n个参数。least mean squares = (1/m) * sum ((Y(i) - Y_fit(i) ).^2)   (i = 1 ~ m)。
一个好的模型,least mean squares就小;而另一方面,如何得到模型参数A,使得least mean squares有最小值,就是所谓的,最小二乘拟合(least squares curve fitting)了。
简介:
模型有线性和非线性之分。对于线性模型,求参数,其实就是求一步矩阵的逆(稍候我们可以看到)。而非线性模型,往往不能一步就得到结果,所以就需要多步逼近。就这样,在众多的多步逼近的方法中,最快收敛于最佳参数值的方法就比较垂青。这中间,最强的当然就是Newton 法:
A: n+1 = A: n + (Hessen ( L ))^-1  *  grad(L)
这里Hessen ( L )是被拟合的模型函数的least mean squares方法的Hessen矩阵。grad(L)是她的梯度矩阵。参数矩阵A的当前值是A:n和下一步值A: n+1。
这个方法包含了一个求hessen矩阵的逆的运算。其实,这个方法难的不是这个逆,而是如何得到Hessen矩阵和梯度矩阵。梯度矩阵还好说,就是least mean squares方法的对各个参数的一介偏导数。而Hessen矩阵包含了一介偏导数的组合(主要是相乘),和二介偏导数。当然,许多模型的二介偏导数相对于一介偏导数的组合是一个比较小的量,特别是线性模型,就没有二介偏导(所以,线性模型可以直接求出参数)。于是,新的方法就利用这个特点,将逼近限制在一介偏导数构成的伪Hessen矩阵上。这就诞生了两个比较著名的方法Gauss-Newton 法和Levenberg-Marquardt法。
Gauss-Newton 法直接用Jacobian 行列式代替 Hessen矩阵,用least squares值代替梯度(注意,不是least mean squares,因为当用Jacobian 行列式代替Hessen矩阵时,中间有一个自由度的差别)这里的拟合就变成了
A: n+1 = A: n + (Jacobian ( L ))^-1  *  L          (对L的定义会在下文中给出)
因为越是接近最佳值(或者临界值),Jacobian ( L )就越是畸形,所以在实际的计算机运算中,求逆这一步都用所谓的帽子运算符(假如 J= Jacobian ( L ) );
( Jacobian ( L ) )^-1   --->   ( ( Trans(J) * J )^-1) * Trans(J)
这里Trans()是转置运算。
Levenberg-Marquardt法比Gauss