在MATLAB中,有一非线性最小二乘问题中一函数lsqnonlin,我想把里边X的数据改为矩阵形式,而不是数
来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/08/27 22:01:58
在MATLAB中,有一非线性最小二乘问题中一函数lsqnonlin,我想把里边X的数据改为矩阵形式,而不是数
不好意思啊,漏掉了,下面补上了:
%编写M文件:文件中的a(1)=a,a(2)=b,a(3)=c,a(4)=d
function E=fun(a,x,y)
x=x(:);
y=y(:);
Y=a(1)*(1-exp(-a(2)*x)) + a(3)*(exp(a(4)*x)-1);
E=y-Y;
%M文件结束
%用lsqnonlin调用解决:
x=[3 4 5 7 9 15];
y=[1 2 4 6 8 10];
a0=[1 1 1 1];
options=optimset('lsqnonlin');
a=lsqnonlin(@fun,a0,[],[],options,x,y)
关于a0,可以通过所知道的几组x和y的值来估算系数a、b、c、d的值,我这里没有估计,直接代入了1.
如果估计的较准确,最小二乘算出的系数更加精确.
lsqnonlin函数采用的是迭代法,a0则是迭代初始值.由于程序的局限性,不可能搜索无穷大的区间,这样一来,初始值的选择就很重要了.如果最优解离所给初始值比较近,迭代求出该最优解的概率就很高;如果初始值提供的不理想,离最优解较远,而matlab对于迭代次数及迭代精度都有个默认的设定,这种情况下很可能没有搜到最优解便给出了结果,当然这个结果是在所搜索区间上的最优解而不是全局最优的.
至于怎样估计初始值,我也没有肯定的办法,总之通过所知的x和y尽量使初始值接近就好了,毕竟matlab还是很强大的.
另外一个办法是,得到解后,画出函数的图形,看看那几个点是不是都在曲线附近,如果相差太大,就得考虑重新给初始值再计算一次.
%编写M文件:文件中的a(1)=a,a(2)=b,a(3)=c,a(4)=d
function E=fun(a,x,y)
x=x(:);
y=y(:);
Y=a(1)*(1-exp(-a(2)*x)) + a(3)*(exp(a(4)*x)-1);
E=y-Y;
%M文件结束
%用lsqnonlin调用解决:
x=[3 4 5 7 9 15];
y=[1 2 4 6 8 10];
a0=[1 1 1 1];
options=optimset('lsqnonlin');
a=lsqnonlin(@fun,a0,[],[],options,x,y)
关于a0,可以通过所知道的几组x和y的值来估算系数a、b、c、d的值,我这里没有估计,直接代入了1.
如果估计的较准确,最小二乘算出的系数更加精确.
lsqnonlin函数采用的是迭代法,a0则是迭代初始值.由于程序的局限性,不可能搜索无穷大的区间,这样一来,初始值的选择就很重要了.如果最优解离所给初始值比较近,迭代求出该最优解的概率就很高;如果初始值提供的不理想,离最优解较远,而matlab对于迭代次数及迭代精度都有个默认的设定,这种情况下很可能没有搜到最优解便给出了结果,当然这个结果是在所搜索区间上的最优解而不是全局最优的.
至于怎样估计初始值,我也没有肯定的办法,总之通过所知的x和y尽量使初始值接近就好了,毕竟matlab还是很强大的.
另外一个办法是,得到解后,画出函数的图形,看看那几个点是不是都在曲线附近,如果相差太大,就得考虑重新给初始值再计算一次.
matlab中如何做非线性最小二乘拟合
新手,请问matlab中lsqnonlin函数怎么使用?例如:想要拟合一个圆,怎样通过拟合函数lsqnonlin求出圆心
matlab中在非线性回归问题
matlab中怎么把数据转为矩阵
请问,Matlab中使用正交多项式拟合的最小二乘算法用什么函数?
求matlab应用公式 采用最小二乘迭代法拟合成一般非线性函数回归分析
matlab中有没有提取三维矩阵中的一维的函数?A是一个三维矩阵A(:,:,
matlab里面如何将每次计算得到的数据(一个数)保存在矩阵中
matlab中如何把m序列转成2维矩阵,或者是把余弦函数转成一维矩阵
Matlab 怎么设置小数啊?我想剪切Matlab里边的数据到Excel里边去.可是Matlab里边的数据有很多位小数啊
matlab 怎么把一个矩阵中所有等于5的数,替换成0,有没有相应的函数
怎样用matlab作数据的最小二乘拟合