关于采用matlab进行指定非线性方程拟合的问题(1)

来源:互联网 发布:如何看淘宝买家信誉 编辑:程序博客网 时间:2024/05/22 03:35
※1。优化工具箱的利用
函 数  描述
LSQLIN  有约束线性最小二乘优化
LSQNONNEG  非负约束线性最小二乘优化问题
当有约束问题存在的时候,应该采用上面的方法代替Polyfit与反斜线(\)。具体例子请参阅优化工具箱文档中的相应利用这两个函数的例子。
d.  非线性曲线拟合
利用MATLAB的内建函数
函数名  描述
FMINBND  只解决单变量固定区域的最小值问题
FMINSEARCH 多变量无约束非线性最小化问题(Nelder-Mead 方法)。
下面给出一个小例子展示一下如何利用FMINSEARCH
1. 首先生成数据
>> t=0:.1:10;
>> t=t(:);
>> Data=40*exp(-.5*t)+rand(size(t));  % 将数据加上随机噪声
2.写一个m文件,以曲线参数作为输入,以拟合误差作为输出
function sse=myfit(params,Input,Actural_Output)
A=params(1);
lamda=params(2);
Fitted_Curve=A.*exp(-lamda*Input);
Error_Vector=Fitted_Curve-Actural_Output;
%当曲线拟合的时候,一个典型的质量评价标准就是误差平方和
sse=sum(Error_Vector.^2);
%当然,也可以将sse写作:sse=Error_Vector(:)*Error_Vector(:);
3. 调用FMINSEARCH
>> Strarting=rand(1,2);
>> options=optimset('Display','iter');
>> Estimates=fiminsearch(@myfit,Strarting,options,t,Data);
>> plot(t,Data,'*');
>> hold on
>> plot(t,Estimates(1)*exp(-Estimates(2)*t),'r');
Estimates将是一个包含了对原数据集进行估计的参数值的向量。
附图见后面:


 
 
FMINSEARCH通常能够用来解决不连续情况,特别是如果他们不出现在解的附近的时候。它得到的通常也是局部解。FMINSEARCH只能够最小化实数值(也就是说,解的域必须只能包括实数,函数的输出只能够为实数值)。当感兴趣的是复数变量的域的时候,他们必须被分割为实部与虚部。
※2.MATLAB的FIGURE窗口:最基本的拟合界面与数据统计工具
MATLAB通过基本的拟合界面也支持基本曲线拟合。利用这个界面,你可以快速地在简单易用的环境中实现许多基本的曲线拟合。这个界面可以实现以下功能:
a. 通过比样条插值(spline interpolant)、hermite 插值、或者是高达10阶的多项式插值实现数据的拟合;
b. 对给定数据同时实现多样插值的绘制;
c. 绘制残差图;
d. 检查拟合结果的残差的数值;
e. 通过内插值或者外推插值评价一个拟合结果;
f. 对拟合结果和残差的模进行图形绘制;
g. 将拟合结果保存入MATLAB工作空间。
开发你的拟合应用的时候,你可以通过基本拟合(Basic Fitting)界面,也可以通过命令行函数,也可以同时作用。你可以通过基本拟合界面只能够实现2-D数据的拟合。然而,如果你用subplot绘制多个数据集,只要有至少一个数据集是2D的,那么就可以用基本拟合界面。
可以通过如下步骤激活基本拟合界面:
1. 绘制数据;
2. 从figure窗口的 Tools 菜单条下面选择Basic Fitting 菜单项;
有关Basic Fitting界面的更多信息,请查阅MATLAB帮助文档的相应部分。
注意:对于HP,IBM以及SGI平台,MATLAB6.0(R12.0)以及MATLAB6.1(R12.1)的基本拟合界面不受支持。
数据统计界面可以用来对图形中的每个数据集进行统计量的计算。可以通过如下步骤将数据统计界面激活:
1. 制数据;
2. 从figure窗口的 Tools 菜单条下面选择Data Statistics 菜单项;