解非线性方程组
编程序解非线性方程组,用的是牛顿迭代法需要给出初值,请问初值一般怎么选取
请大家指教啊 初始值不是根据自己的条件确定的么?不是随便给的吧 楼主说的是迭代开始时的初值,而不是初始条件吧。
牛顿迭代法对初值要求严格,不如用LM法,收敛范围大些,而且可以控制保证收敛。
迭代处置的话如果能和物理量联系起来就好了。比如去上个时刻点的物理量作为计算现在这个时刻的迭代初值。一般都比较接近。一般性的话,没有直接估算的方法吧。不过可以在开始采用梯度法等收敛范围大但速度不理想的算法,后面再使用牛顿迭代等收敛范围小而速度快的算法。 LM方法是什么方法啊?我不太了解啊,能解多维大型非线性方组吗?
我参考的资料是用牛顿迭代法的啊 L-M 方法解非线性不等式组
L-M method for solving simultaneous nonlinear inequalities
<<合肥工业大学学报(自然科学版)>>2007年 第30卷 第07期
作者: 蒋利华, 马昌凤,
刚搜索到有这个方法,楼主可以下载上面的论文看看 LM法就是Levenberg-Marquardt法,是高斯牛顿法的变种。和高斯牛顿法都是用来解决非线性最小二乘法问题的。非线性方程组可以化为非线性最小二乘法的一个特例。使用非线性最小二乘法更容易扩展,比如方程数比未知量多,可以求得最优解。 原帖由 讨论求知 于 2009-3-4 19:32 发表 http://www.chinavib.com/forum/images/common/back.gif
LM方法是什么方法啊?我不太了解啊,能解多维大型非线性方组吗?
我参考的资料是用牛顿迭代法的啊
不知道你要解的是多少维的。
LM法的两个核心,1是计算中要求一次偏导,2是要解一个线性方程组AX=b。这两个地方最费时间。
回复 7楼 logxing 的帖子
那么对于一个高维的系统来说这可能不怎么好了。我得方程维数比较低,不知道哪里有这类方法的详细说明,我拿来试试!谢谢! 原帖由 无水1324 于 2009-3-4 22:29 发表 http://www.chinavib.com/forum/images/common/back.gif那么对于一个高维的系统来说这可能不怎么好了。我得方程维数比较低,不知道哪里有这类方法的详细说明,我拿来试试!谢谢!
http://exp.math.tsinghua.edu.cn:9100/slides/Exp07.pdf
这是一个,其实维普上也有不少LM法应用的实例。
那个偏导可以用数值微分,AX=b的话我是直接求A的逆,因为我的阶数不大,而且我之前已经建立了矩阵运算类了,所以直接调用类方法求逆了。
如果阶数大的话,解AX=b我只做过对称正定的情况下的共轭梯度法,实际是ICCG,前面加个IC预处理。非对称正定的不能做IC预处理,单纯的共轭梯度法会很慢,我就没做过了。
在matlab下算应该很方便。IC分解,CG法都有现成的函数。
回复 9楼 logxing 的帖子
好的 ,感谢你的帮助 !
页:
[1]