jtyuan 发表于 2006-4-27 22:24

请问happy教授:四百多个非线性方程组的求解

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

grta 发表于 2006-4-28 06:36

solve函数啊

huright 发表于 2006-4-28 08:55

建议采用数学的方式先化简。方程太多,数值计算时射初值容易发散。还有可以将一些非线性的化成线性的。

happy 发表于 2006-4-28 09:24

由于方程规模比较大,用matlab现成的函数一般很难解决
需要自己找到合适的算法在编程计算,对于这样的非线性方程组求解问题,初值的选择非常关键,可以选择一些对初值要求不严格的算法,比如同伦算法之类的

另外由于方程规模比较大,matlab的计算效率相对就比较低了
所以最好用fortran c之类的写代码

jtyuan 发表于 2006-4-28 15:13

谢谢大家先
首先声明我的方程组物理意义明确,就是多个力的平衡方程,但从数学角度分析很不明确,未知量(力和节点坐标)之间相互嵌套,很难将各未知量按顺序排列,所以我很担心“好不容易自己编的程序还没有专业计算软件想的全面。 ”,这也是我偏重于借助专业计算软件进行计算的原因。(还有就是时间有限)
有朋友建议使用1stOpt进行求解,现在我正在查询中,也想请大家发表看法。
再次感谢!!!

happy 发表于 2006-4-28 20:13

从学习和分析问题的角度来讲,自己编程比较好

lizhimin 发表于 2007-7-21 17:40

这么多公式,有些吓人

xjzuo 发表于 2007-7-21 22:10

老实讲,这个问题用哪种软件都是一件很困难的事情, 建议看看专门的书籍, 查查大型矩阵的算法.
用fortran运行可能更合适------而且有不少现成代码,可找找看.

appleseed05 发表于 2007-7-22 21:12

400多个非线性方程组收敛性很成问题的
如果要算的话你要使用fortran编程序,效率比matlab要高很多
页: [1]
查看完整版本: 请问happy教授:四百多个非线性方程组的求解