当前位置:  开发笔记 > 编程语言 > 正文

用数值方法求解非线性方程组

如何解决《用数值方法求解非线性方程组》经验,为你挑选了0个好方法。

我需要在我的Java程序中解决非线性最小化(N个未知数的最小残差平方)问题.解决这些问题的常用方法是Levenberg-Marquardt算法.我有一些问题

有没有人对不同的LM实现有经验?LM的味道略有不同,我听说算法的确切实现对其数值稳定性有重要影响.我的功能非常好,所以这可能不是问题,但当然我想选择一个更好的选择.以下是我发现的一些替代方案:

FPL统计小组的非线性优化Java包.这包括经典Fortran MINPACK例程的Java转换.

JLAPACK,另一个Fortran翻译.

优化算法工具包.

Javanumerics.

一些Python实现.纯Python很好,因为它可以用jythonc编译成Java.

是否有任何常用的启发式方法来进行LM所需的初始猜测?

在我的应用程序中,我需要对解决方案设置一些约束,但幸运的是它们很简单:我只是要求解决方案(为了成为物理解决方案)是非负的.略微负面的解决方案是数据中测量不准确的结果,显然应该为零.我正在考虑使用"常规"LM但是迭代以便如果一些未知数变为负数,我将其设置为零并从中解决其余部分.真正的数学家可能会嘲笑我,但你认为这可行吗?

感谢您的任何意见!

更新:这不是火箭科学,要解决的参数数量(N)最多为5,而数据集只有不足以使解决成为可能,所以我相信Java足以解决这个问题.而且我相信聪明的应用数学家已经多次解决了这个问题,所以我只是在寻找一些现成的解决方案,而不是自己做饭.例如,如果它是纯Python,Scipy.optimize.minpack.leastsq可能会没问题.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有