理论教育 非线性数据曲线拟合:MATLAB实验指导

非线性数据曲线拟合:MATLAB实验指导

时间:2023-11-17 理论教育 版权反馈
【摘要】:非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F,但不知道系数向量x。进行曲线拟合,求x,使得下式成立:在MATLAB 5.x中,使用函数lsqcurvefit解决这类问题。例5.21求解如下最小二乘非线性拟合问题。

非线性数据曲线拟合:MATLAB实验指导

非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x,xdata),但不知道系数向量x。进行曲线拟合,求x,使得下式成立:

在MATLAB 5.x中,使用函数lsqcurvefit解决这类问题。

函数lsqcurvefit格式:

参数说明:

x0为初始解向量;

xdata,ydata为满足关系ydata=F(x,xdata)的数据;

lb,ub为解向量的下界和上界,lb≤x≤ub,若没有指定界限,则lb=[ ],ub=[ ];

options为指定的优化参数;

fun为拟合函数,其定义为x=lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定义为function F=myfun(x,xdata),计算x处拟合函数值fun的用法与前面的相同;

resnorm=sum((fun(x,xdata)-ydata).2),即在x处残差的平方和

resnorm=fun(x,xdata)-ydata,即在x处的残差;

exitflag为终止迭代的条件;

output为输出的优化信息;(www.daowen.com)

lambda为解x处的拉格朗日乘子

jacobian为解x处拟合函数fun的Jacobian矩阵

例5.21 求解如下最小二乘非线性拟合问题。

已知输入向量xdata和输出向量ydata,且长度都是n,拟合函数为

ydata(i)=x(1)·xdata(i)2+x(2)·sin(xdata(i))+x(3)·xdata(i)3

即目标函数为

其中,

初始解向量为x0=[0.3,0.4,0.1]。

解:先建立拟合函数文件,并保存为myfun.m:

然后给出数据xdata和ydata

结果为:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈