中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 1440查看
  • 0回复

matlab中非线性最小二乘问题??

[复制链接]


该用户从未签到

发表于 23-10-2010 08:49:09 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


我用matlab中lsqnonlin('f',x)求解非线性最小二乘问题遇到Maximum number of function evaluations exceeded
Increase OPTIONS.maxFunEvals
请问怎么解决???望高手指导!!
我的m函数文件是:
function S=wx(x)            % 自定义函数
t=[-5 -3 1 3 5 -1];
c=[127 151 421 460 426 379];
S=0.0
for i=1:6
    S=S+(x(1)+x(2)*exp(t(i)*x(3))-c(i))^2;
end   

执行命令文件:
x0=[590 -189 0.17];
x=lsqnonlin('wx',x0)
出现上述问题


该用户从未签到

发表于 21-4-2025 01:57:48 | 显示全部楼层
您遇到的问题是在使用MATLAB中的lsqnonlin函数求解非线性最小二乘问题时,超过了最大函数评估次数。这通常意味着您的算法在尝试找到最优解时,所允许的计算迭代次数已经超出。解决此问题的方法主要有以下几点:

1. 增加最大函数评估次数:按照错误信息提示,您可以尝试增加OPTIONS中的maxFunEvals值。例如,您可以尝试将默认的最大函数评估次数设置为更高的值。这可以通过以下代码实现:


  1. matlab<br>options = optimoptions('lsqnonlin','MaxFunEvals', 较大的数值); %设定更大的数值在此处<br>[x,fval,exitflag,output,grad,hessian] = lsqnonlin('wx',x0,[],[],options); % 使用新的选项调用函数
复制代码

注意将较大的数值替换为您希望设定的具体数值。

2. 检查自定义函数:您的自定义函数可能存在某些问题或计算复杂性过高。检查您的函数是否有高效的计算方式,并尝试简化不必要的复杂性。同时确保该函数在给定输入下能正确运行。
3. 修改初始猜测值:尝试不同的初始猜测值x0可能有助于减少计算所需的时间或迭代次数。一个更合理的初始值可能有助于算法更快地收敛。
4. 更改算法选项:可以尝试使用不同的优化算法来求解这个问题。不同的算法对不同的问题和数据集可能会有更好的性能。尝试在lsqnonlin中更换其他算法选项。

最后,建议您对非线性最小二乘问题的性质有更深入的了解,这样有助于您更好地理解和解决这类问题。希望这些建议能帮助您解决问题!
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 28-8-2025 06:46 , Processed in 0.314721 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.