声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3196|回复: 3

[综合讨论] fsolve求方程组时的错误问题

[复制链接]
发表于 2010-7-16 11:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function f=funsss(p)
t=sym('exp(0.1*(x-0.925656)/(0.99999-x))+exp(0.3*(y-0.925656)/(0.99999-y))-z*(x*y-0.95)');
dyf1=diff(t,'x'); dyf2=diff(t,'y'); dyf3=diff(t,'z');
x=p(1); y=p(2); z=p(3); f=[dyf1;dyf2;dyf3];
当输入
options.MaxIter=1e12; options.MaxFunEvals=1e8;
fsolve(@funsss,[0.986;0.963;0.5],options)
后,出错。
??? Undefined function or method 'norm' for input arguments of type 'sym'.
Error in ==> optim\private\trustnleqn at 138
normgradinf = norm(grad,inf);
Error in ==> fsolve at 295
    [x,FVAL,JACOB,EXITFLAG,OUTPUT,msg]=...
但是,当我把M文件中计算出来的偏导数手动带入到f中时,就不会报错。请帮忙指出来。谢谢。

[ 本帖最后由 ChaChing 于 2010-7-22 09:49 编辑 ]
回复
分享到:

使用道具 举报

发表于 2010-7-16 16:08 | 显示全部楼层
楼主和我论坛生日一样哦,呵呵,你的函数用到符号运算了,f返回的是符号数值,需要转化下。关于MATLAB符号运算,最好用它来推导方程,得到符号函数表达式后用char转化成字符串然后用eval转化成匿名函数。如下:

  1. function test
  2. t=sym('exp(0.1*(x-0.925656)/(0.99999-x))+exp(0.3*(y-0.925656)/(0.99999-y))-z*(x*y-0.95)');
  3. dyf1 = eval( ['@(x,y,z) ', char( diff(t,'x') ),';']);
  4. dyf2 = eval( ['@(x,y,z) ', char( diff(t,'y') ),';']);
  5. dyf3 = eval( ['@(x,y,z) ', char( diff(t,'z') ),';']);
  6. function f = funsss(p)
  7. x=p(1);
  8. y=p(2);
  9. z=p(3);
  10. f=[dyf1(x,y,z);dyf2(x,y,z);dyf3(x,y,z)];
  11. end

  12. options.MaxIter=1e12;
  13. options.MaxFunEvals=1e8;
  14. fsolve(@funsss,[0.986;0.963;0.5],options)

  15. end

复制代码
运行结果:

  1. Optimization terminated: first-order optimality is less than options.TolFun.
  2. ans =
  3.     0.9818
  4.     0.9676
  5.    31.8249
复制代码

[ 本帖最后由 rocwoods 于 2010-7-16 16:10 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2010-7-16 16:49 | 显示全部楼层

回复 楼主 zhangyong3725 的帖子

谢谢你了,兄弟。我的Matlab太烂了,如果可以的话,可以向兄弟你学习下。
这个问题困惑我一天了,太感谢你了。
如果不嫌我学识浅薄,可以交流下。
发表于 2010-7-16 16:57 | 显示全部楼层
呵呵,客气了,在论坛里面有很多热心的人,欢迎你加入MATLAB学习者这个阵营,只要坚持每天看帖,时间长了自然水平就上去了!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 22:19 , Processed in 0.071756 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表