在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还是很强大的。
另外一个办法是,得到解后,画出函数的图形,看看那几个点是不是都在曲线附近,如果相差太大,就得考虑重新给初始值再计算一次。
温馨提示:内容为网友见解,仅供参考
无其他回答

在MATLAB中,有一非线性最小二乘问题中一函数lsqnonlin,我想把里 ...
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实现非线性最小二乘拟合
命令说明通过上面的例子知道,matlab实现非线性最小二乘拟合的关键命令是 lsqnonlin。该命令的格式如下 x=lsqnonlin('f',x0) 功能:作为非线性最小二乘拟合,其中f是函数文件。

matlab的lsqnonlin函数怎么用
1、lsqnonlin解决非线性最小二乘法问题,包含非线性数据的拟合问题 2、fun函数包含返回值为一个向量,该向量包含了各个求和的分量(以便于找到使目标最小的可行解)。3、各参数可做为常量在函数中事先给出,也可传递得到(参数表加到lsqnonlin的后面,当然除了调用时候系统会使用的反复迭代的参数)。4、...

最小二乘法求解二元方程组,matlab的lsqnonlin函数用法?
采用最小二乘法求解二元方程组时,首先利用matlab的lsqnonlin函数进行尝试,得到的方程组解为特定值。深入理解,lsqnonlin函数适用于非线性数据拟合问题,而非直接求解特定方程组。方程组v=0和s=S_all需转换为优化问题,目标是找到参数t1和t2,使得函数fun最小,理论上为零最佳。为了求解优化问题,使用粒子...

matlab的lsqnonlin函数怎么用
matlab的lsqnonlin函数主要用于解决非线性最小二乘问题。例如 >> F =@(x)[ 2*x(1) - exp(x(1)); -x(1) - exp(x(2));x(1) - x(2)];>> x = lsqnonlin(F,[1;1])运行结果

matlab非线性最小二乘拟合
对于带有高斯积分函数的拟合问题,可以考虑用最小二乘法lsqnonlin()函数来求解。lsqnonlin()函数的格式为:x = lsqnonlin(fun,x0,lb,ub)式中:fun—自定义函数,x0—初值,lb—下限位值,ub—上限位值 如有困难,可以将数据和模型私信给我。

matlab的lsqnonlin函数怎么用
按照课本上的说法,isqnonlin主要用于求解非线性最小二乘(曲线拟合)问题。最一般的调用方法:[x,norm,res,ef,out,lam,jac]=isqnonlin(@F,x0,v1,v2,opt,P1,P2,...)左边是输出列表,右边是输入列表。输出列表中参数的含义是:x:目标函数F中的待定参数 norm:误差的平方 res:误差的向量 ef...

matlab中lsqnonlin函数出错
会取决于多种条件,例如问题本身、算法以及初值等因素。当然,你可以用optimset函数把TolX设置更小一些,但由于原因并不在此,一般不会有什么作用,还不如考虑试一试其它初值。函数wucha中cmat并没有定义,你这段代码不能运行,所以,我也无法对优化的结果是否合理做进一步分析。

matlab函数lsqnonlin用法,跪求高手帮忙!!!
*t+a(10)*log(1+t)+a(11).\/(t+1) - y x0 = [0.3 0.4 0.3 0.4 0.3 0.4 0.3 0.4 0.3 0.4 0.3] % Starting guess [x,resnorm] = lsqnonlin(YY,x0) % Invoke optimizer x即为用最小二乘法求出的a(1)至a(11)的值 如有问题,请继读联系 ...

最小二乘法拟合椭圆怎么求,最好matlab代码
matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin。这里用lsqcurvefit(lsqnonlin一样做),先介绍下lsqcurvefit(原理是最小二乘法)已知数据点:xdata=(xdata1,xdata2,…,xdatan)ydata=(ydata1,ydata2,…,ydatan)lsqcurvefit用以求含参量x(向量)的向量值函数 F(x,xdata)=(F(x,...

相似回答
大家正在搜