Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab lsqcurvefit适用于某些迭代,然后在出现错误时停止

我正在尝试为隐式函数定义的模型找到优化的参数,以使用fsolve和lsqcurvefit拟合数据集。我在单独的m文件中定义了3个函数:第一个是在要定义的4个参数中为隐式函数的定义,第二个是使用fsolve查找所定义的隐式函数的根,第三个使用lsqcurvefit查找优化值对于四个参数。我自然需要为参数定义足够好的初始值,但是尝试了各种合理的组合后,lsqcurvefit总是运行约20-30次迭代(matlab在每次迭代后打印出用fsolve找到的解计算的向量值),然后打印

No solution found. fsolve stopped because the problem appears regular as measured by the gradient, but the vector of function values is not near zero as measured by the default value of the function tolerance. ??? Error using ==> lsqcurvefit at 253 Function value and YDATA sizes are incommensurate. Error in ==> optimointi at 5 z = lsqcurvefit('laske_i',parametrit,V_vektori,I_vektori_mitattu,[],[],options); 我看不到“函数值和YDATA大小不匹配”。突然间,因为迭代第一次运行20-30次。每次迭代后打印的值几乎充满零(很好的拟合度),但最后几个从0到1(具有十次幂的系数)“爆炸”。对错误的任何帮助表示赞赏!



回答:

错误在于fsolve如何工作。实际起作用的是fsolve,但是我必须添加一个for循环,以使域向量的每个元素的fsolve结果也成为一个向量。这就是为什么Function值和YDATA确实不相称的原因。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 21:19


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.