声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1842|回复: 8

[编程技巧] 请问happy教授:四百多个非线性方程组的求解

[复制链接]
发表于 2006-4-27 22:24 | 显示全部楼层 |阅读模式

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

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

x
如题
翻看以前关于方程组的帖子,看到您的话“如果方程规模比较大,不建议用matlab”http://forum.vibunion.com/thread-9505-1-1.html
想问您,如果“不建议用matlab”,还可以用什么软件呢。如果我的方程很复杂,不容易求导,方程也不太容易定性时,怎么办呢,我觉得有可能我好不容易自己编的程序还没有专业计算软件想的全面。
我现在是用fsolve求解,但发现初值不同,结果可能收敛,也可能不收敛,对初值太敏感了。改变方程中的某一数值,就必须重新修改初值(我是很盲目的修改的,因为未知量太多,不太可能一一给出不同初值,相似变量赋以同样初值;),但是这好像不是解决问题的根本方法,因为我需要改变多种条件,进行对比分析,显的很盲目和无助,不知还有什么解决初值的方法。
非常感谢!!!
回复
分享到:

使用道具 举报

发表于 2006-4-28 06:36 | 显示全部楼层
solve函数啊
发表于 2006-4-28 08:55 | 显示全部楼层
建议采用数学的方式先化简。方程太多,数值计算时射初值容易发散。还有可以将一些非线性的化成线性的。[em07]
发表于 2006-4-28 09:24 | 显示全部楼层
由于方程规模比较大,用matlab现成的函数一般很难解决
需要自己找到合适的算法在编程计算,对于这样的非线性方程组求解问题,初值的选择非常关键,可以选择一些对初值要求不严格的算法,比如同伦算法之类的

另外由于方程规模比较大,matlab的计算效率相对就比较低了
所以最好用fortran c之类的写代码
 楼主| 发表于 2006-4-28 15:13 | 显示全部楼层
谢谢大家先
首先声明我的方程组物理意义明确,就是多个力的平衡方程,但从数学角度分析很不明确,未知量(力和节点坐标)之间相互嵌套,很难将各未知量按顺序排列,所以我很担心“好不容易自己编的程序还没有专业计算软件想的全面。 ”,这也是我偏重于借助专业计算软件进行计算的原因。(还有就是时间有限)
有朋友建议使用1stOpt进行求解,现在我正在查询中,也想请大家发表看法。
再次感谢!!!
发表于 2006-4-28 20:13 | 显示全部楼层
从学习和分析问题的角度来讲,自己编程比较好
发表于 2007-7-21 17:40 | 显示全部楼层
这么多公式,有些吓人
发表于 2007-7-21 22:10 | 显示全部楼层
老实讲,这个问题用哪种软件都是一件很困难的事情, 建议看看专门的书籍, 查查大型矩阵的算法.
用fortran运行可能更合适------而且有不少现成代码,可找找看.
发表于 2007-7-22 21:12 | 显示全部楼层
400多个非线性方程组收敛性很成问题的
如果要算的话你要使用fortran编程序,效率比matlab要高很多
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 20:40 , Processed in 0.097504 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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