24小时热门版块排行榜    

查看: 1091  |  回复: 2

wangathlon

新虫 (初入文坛)

[交流] 关于matlab的fsolve函数 已有1人参与

手里有个模型:
  y=c*[(x-a)^2-b^2]/(x-a), 其中a,b,c可以通过实验得出。我取了两组实验值,然后通过fsolve解x,y的数值解,每次exitflag都是返回-2,而且结果y对初始值相当敏感。之后直接用手解两个方程,发现消去y以后,是一个一元三次的方程,应该是有确切的解。不知道为何会产生这样的问题,另外,我原先是想尝试一下lsqcurvefit的,如果有三个解的话,是同时搜索到三个解(如果三个都是实数解)还是程序只搜到第一个解就返回呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bitinging

金虫 (小有名气)

★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
xiegangmai: 金币+2, 谢谢参与! 2012-05-23 22:18:36
fsolve求解的方法是用最小二乘法,给定的初始点、方程形式、系数差距对求解都有很大影响。建议可以多试试几个初值然后用fsolve精细控制来控制fsolve求解,或者既然可以化成一元,那可以考虑fzero求解,fzero采用的求解方法比fsolve多很多。
none
2楼2012-05-23 09:15:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bitinging

金虫 (小有名气)

★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
xiegangmai: 金币+1, 谢谢参与! 2012-05-23 22:18:46
另外,matlab求根算法基本都是只能找到初值附近的解,不会求出多个解的。你可以用三元画图大概看看函数图形,看可能有几个解和解的大致区域。
另外解这类方程据说1st opt比matlab强,对初值要求很小,可以试试。
none
3楼2012-05-23 09:17:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangathlon 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见