24小时热门版块排行榜    

查看: 733  |  回复: 3

BobbyYoung

银虫 (初入文坛)

[求助] matlab解非线性方程组 已有2人参与

本人matlab菜鸟一个,解非线性方程组时出现以下提示,请问是什么意思?该怎么解决?
Optimizer appears to be converging to a point which is not a root.
Relative function value changing by less than max(options.TolFun^2,eps) but
sum-of-squares of function values is greater than or equal to sqrt(options.TolFun)
Try again with a new starting guess.

m =

    5.0482    5.9987    7.1051


fval =

  1.0e+016 *

    3.8464
    0.0000
   -0.0000
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

To be a better man.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
更换一组初值,再试试。

[ 发自小木虫客户端 ]
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-08-06 11:37:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

BobbyYoung

银虫 (初入文坛)

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-08-06 11:37:11
更换一组初值,再试试。

谢谢您,我更改初值试了一下,还是不行。因为我是想计算模拟水盐体系的溶解度数据,输入实验值的近似值,为
>>m0=[4.24,4.65,8.13];
>>[m,fval]=fsolve('FphaseEq',m0)
m =

    6.5588    7.2533    7.8359


fval =

  1.0e+016 *

    3.8464
    0.0000
   -0.0000 (以下每次函数值均相同,未列出)
然后我换了几个初值试了一下,结果如下(请见附件)。
由于是计算溶解度数据,计算值与实验值希望不会偏差太大,应该怎么解决matlab中提到的问题?小弟对于matlab所知实在十分有限,请前辈指点,非常感谢!
matlab解非线性方程组
1.jpg

To be a better man.
3楼2014-08-06 15:51:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
3楼: Originally posted by BobbyYoung at 2014-08-06 15:51:49
谢谢您,我更改初值试了一下,还是不行。因为我是想计算模拟水盐体系的溶解度数据,输入实验值的近似值,为
>>m0=;
>>=fsolve('FphaseEq',m0)
m =

    6.5588    7.2533    7.8359


fval = ...

fsolve归根到底还是迭代方法;
如果方程组自己没有0点,或者迭代法的Jacobian矩阵在某些步骤接近singular矩阵(数值不满秩)的情况下,会出现上面的情况.

如果一定要用fsolve,说明默认的trust region + dogleg 算法行不通;
可以改用:
algorithm_name = 'trust-region-dogleg'; %这是默认算法
%'levenberg-marquardt' % 针对Jacobian矩阵非奇异效果较好的
options = optimset('Algorithm',algorithm_name);

%或者通过设置下面两个选项用Gauss-Newton+Line search的方法:
and NonlEqnAlgorithm
options = optimset('LargeScale ','off',...%对规模较小问题适用
              'NonlEqnAlgorithm','gn', ...  % 选择G-N算法
               'LineSearchType','cubicpoly'); % 用三次步长因子
然后把fsolve的options参数加上(参考help fsolve调用格式)


如果fsolve仍解决不了问题(非线性很强的,)可以考虑用最小二乘的方式把方程组改成残差平方和,用最优化的方式,粒子群,差分演化等(PSO或Differential evolution)求近似解即可.
ส็็็็็็็็็็็็็็็็็็็็
4楼2014-08-06 21:06:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 BobbyYoung 的主题更新
信息提示
请填处理意见