声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4242|回复: 25

[计算数学] 请问用fsolve求解非线性问题如何得到收敛解。

[复制链接]
发表于 2007-10-15 20:30 | 显示全部楼层 |阅读模式

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

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

x
请问 fsolve 得到的解如何判断是否有意义

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.
function ff=jifen3(x)
r1=9.5*10^(-3);r2=9.6*10^(-3);
r3=11.5*10^(-3);r4=11.6*10^(-3);P4=600;
C10=115100;C01=101300;P0=1.01325*10^5;h1=0.003;%h1是铜块的厚度;%令P0=0才能得到实际结果。
rad1=[];
rad2=[];
rad3=[];
rad4=[];
for n=1000:50:1400;
w=2*pi*n/60;
midu=8920;
P1=midu*w.^2*((x(1)^2-(r2^2-r1^2))^(3/2)-((x(1)^2-(r2^2-r1^2))^(1/2)-h1)^3)/(3*(x(1)^2-(r2^2-r1^2))^(1/2));
P3=1.0*10^3*w.^2*((x(2)^2-(r4^2-r2^2))^(3/2)-x(1)^3)/(3*(x(2)^2-(r4^2-r3^2))^(1/2));
%-----------------------------
ff(1)=2*(C10+C01)*((r1^2-(x(1)^2-(r2^2-r1^2)))*(-1/2)*((x(1)^2-(r2^2-r1^2))-x(1)^2)/((x(1)^2-(r2^2-r1^2))*x(1)^2)+log(x(1)/(x(1)^2-(r2^2-r1^2))^(1/2))-(1/2)*log((r1^2-(x(1)^2-(r2^2-r1^2))+x(1)^2)/r1^2))+P0+P1+2*(C10+C01)*((r3^2-(x(2)^2-(r4^2-r3^2)))*(-1/2)*((x(2)^2-(r4^2-r3^2))-x(2)^2)/((x(2)^2-(r4^2-r3^2))*x(2)^2)+log(x(2)/(x(2)^2-(r4^2-r3^2))^(1/2))-(1/2)*log((r3^2-(x(2)^2-(r4^2-r3^2))+x(2)^2)/r3^2))+P3-P4;
s1=(((x(1)^2-(r2^2-r1^2))^(1/2)-r1)/sqrt(2)+r1)*((x(1)^2-(r2^2-r1^2))^(1/2)-r1)/sqrt(2)*2-asin(((x(1)^2-(r2^2-r1^2))^(1/2)-r1)/sqrt(2)/r1)*r1.^2;
s2=pi/4*r1^2-((pi/4-asin(((x(1)^2-(r2^2-r1^2))^(1/2)-r1)/sqrt(2)/r1))*r1^2-((x(1)^2-(r2^2-r1^2))^(1/2)-r1)*r1*sin(pi/4-asin(((x(1)^2-(r2^2-r1^2))^(1/2)-r1)/sqrt(2)/r1)));
%-----------------------------
ff(2)=4*(s1+s2)-pi*((x(2)^2-(r4^2-r3^2))-r3^2);
rad1((1000-950)/50)=(x(1)^2-(r2^2-r1^2))^(1/2)*1000
rad2((1000-950)/50)=x(1)*1000
rad3((1000-950)/50)=(x(2)^2-(r4^2-r3^2))^(1/2)*1000
rad4((1000-950)/50)=x(2)*1000
end

fsolve(@jifen3,[0.01,0.012])
这样得到的解完全没有意义吗?如何改进才能收敛?
实际物理模型应该有零解得,为什么得不到呢,需要对options进行什么设置吗?请教高手。
回复
分享到:

使用道具 举报

发表于 2007-10-15 21:53 | 显示全部楼层

回复 #1 jsp613 的帖子

这个可能就是fsolve本身算法的缺陷了,你可以参考一下其它的算法,有关搜索延拓法什么的,见过
 楼主| 发表于 2007-10-15 21:57 | 显示全部楼层
MATLAB的延拓法吗?
Optimization terminated: relative function value changing by less
than max(options.TolFun^2,eps) and sum-of-squares of function
values is less than sqrt(options.TolFun).
发表于 2007-10-15 22:00 | 显示全部楼层

回复 #3 jsp613 的帖子

恩,是有一个这样的方法,但是我只看了一点原理,matlab中可能没有现成的程序
 楼主| 发表于 2007-10-15 22:18 | 显示全部楼层
非线性求零解这么困难吗??有没有其他求解方法
发表于 2007-10-15 23:01 | 显示全部楼层
发现使用fsolve在变量增多到一定程度的时候,很难收敛,有点头痛这类问题。
 楼主| 发表于 2007-10-16 08:42 | 显示全部楼层
可是我的变量才2个阿,继续求助
发表于 2007-10-16 12:22 | 显示全部楼层

回复 #7 jsp613 的帖子

不要说2个了,一个有时候也出现这样的问题。
发表于 2007-10-16 20:19 | 显示全部楼层

回复 #7 jsp613 的帖子

非线性方程不收敛很正常的哦,呵呵
发表于 2007-10-16 20:40 | 显示全部楼层
试一下1stOpt看行不行。
发表于 2007-10-16 21:59 | 显示全部楼层

回复 #10 dingd 的帖子

同意楼上的,我看了很多帖子都是用这个解决的,还不错
只是还没有学
 楼主| 发表于 2007-10-17 15:07 | 显示全部楼层

回复 #10 dingd 的帖子

你能帮我运行一下我的源程序吗?告诉我结果阿,多谢了,在线等!

[ 本帖最后由 无水1324 于 2007-11-3 09:01 编辑 ]
 楼主| 发表于 2007-10-29 15:45 | 显示全部楼层
:'( 只需要一个结果而已。
非线性方程组还有什么其他数学方法吗?能用MATLAB求解啊?
发表于 2007-11-3 09:02 | 显示全部楼层

回复 #13 jsp613 的帖子

考虑用优化的方法!
 楼主| 发表于 2007-11-3 18:34 | 显示全部楼层

回复 #14 无水1324 的帖子

请说的明白些,不懂阁下的意思
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-19 07:56 , Processed in 0.077436 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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