找回密码
 注册
Simdroid-非首页
查看: 114|回复: 2

用fsolve求解非线性方程组,结果总不对

[复制链接]
发表于 2009-3-30 09:59:20 | 显示全部楼层 |阅读模式 来自 浙江杭州
本帖最后由 qiuqiu 于 2009-3-30 10:04 编辑

请大家帮我看看用fsolve求解非线性方程组的问题,弄了很长时间了,没找出原因来。
我的三个m文件如下:
function [f1,f2,f3]=fun1(x) %
[f1,f2,f3]=fun2(11);
f1=sym2vecfun(f1);
f2=sym2vecfun(f2);
f3=sym2vecfun(f3);

function f=sym2vecfun(f2)    %符号变量转换为向量变量
f2=sym2char(f2);
f2=strrep(f2,'r','x(1)');
f2=strrep(f2,'s','x(2)');
f=strrep(f2,'l','x(3)');

function [f1,f2,f3]=fun2(d)   %要求解的方程组
syms r l s  
f1=r*sin(pi/3)-sqrt(l*l-(r*cos(pi/3)-s)^2)-d;
f2=r*sin(13*pi/36)-sqrt(l*l-(r*cos(13*pi/36)-s)^2)-d;
f3=r*sin(14*pi/36)-sqrt(l*l-(r*cos(14*pi/36)-s)^2)-d;

在命令窗口输入:
>>  clear
x0=[2 0.1 -1]' ;
options=optimset('Display','iter','MaxIter',500,'MaxFunEvals',400, 'NonlEqnAlgorithm', 'gn');
[r l s]=fsolve(@fun1,x0,options)
计算结果:
                                                     Directional
Iteration  Func-count    Residual     Step-size      derivative
     0           4          282521
Optimizer appears to be converging to a minimum that is not a root:
Sum of squares of the function values is > sqrt(options.TolFun).
Try again with a new starting point.

r =
    2.0000
    0.1000
   -1.0000

l =
1./2.*x(1).*3.^(1./2)-1./2.*(4.*x(3).^2-x(1).^2+4.*x(1).*x(2)-4.*x(2).^2).^(1./2)-11

s =
    -2
这个结果形式不对啊,不管怎么改变初值,输出的r值总是和给定的初值一样,l 和s的值却一直不变。
请问是什么地方出了问题啊?
发表于 2009-3-30 18:11:44 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
其实,你就是想求解一个带参数d的方程组,没必要这么折腾。

可以版上搜索fsolve带参数的解法,讨论过很多了。

比如,这贴http://forum.simwe.com/viewthrea ... mp;highlight=fsolve
回复 不支持

使用道具 举报

 楼主| 发表于 2009-3-31 11:12:00 | 显示全部楼层 来自 浙江杭州
2# messenger

谢谢messenger 再次热心的帮忙,

可能我描述的不清楚,其实我是要解一个非线性方程组。这个非线性方程组是由符号运算推导出来的。要用fsolve求解,就要把符号变量r l s转换成向量。

fun2的目的是推导方程组(上面的方程只是例子,我真正要算的太复杂了)。fun1的目的是把符号表达式转换成向量的表达形式。

我参考了你上次告诉我的帖子:
http://forum.simwe.com/viewthread.php?tid=726386&highlight=fsolve
所以用了sym2vecfun。

但是运行下来结果还是不对。

麻烦你再帮我看看吧~
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 15:24 , Processed in 0.068717 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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