是否有任何关于求解两个未知的线性方程的建议?

时间:2016-02-04 10:00:52

标签: matlab nonlinear-optimization

我正在尝试解决"线性化"线性方程组,由于线性化,需要通过迭代估计两个参数。实际问题实际上是非线性的,但使用傅立叶级数方法,它是线性化的。

我一直在通过矩阵和SVD解决线性系统,这花费的时间不多,但这些矩阵依赖于要迭代求解的两个参数。最后,我只需要确保迭代解决的其中一个参数与我在系统中得到的响应相匹配。这是要最小化的标准。

我一直在使用" fmincon"和"多重启动"解决两个参数,我得到一些结果,但它比我期望的更长。还有本地最小问题,所以我必须包括" multi-start"。

任何人都有一个想法,如果任何其他方法更容易解决这个问题?

我真的很感激。

2 个答案:

答案 0 :(得分:0)

可以使用的全局优化方法是模拟退火。 可能是MATLAB有一个相关的例程。 您可以尝试使用免费的模拟退火软件。

答案 1 :(得分:-1)

我的问题得到了改善,我只是在评论中回复了它,但我认为值得把它放在这里,因为我所做的事情出乎意料:

因此我运行了一个蒙特卡罗sim,用于迭代求解两个变量,并绘制误差如何相对于输入变量的变化。我意识到在响应的错误中存在大量的局部最小值,这就是为什么fmincon无法自行解决,因为它很快就会跳进其中一个局部最小孔,我需要一个非常精细的多启动fmincon所以我可以获得全球最低限度。这是一个非常有趣的观察结果,因为我没想到关于两个参数的粗略误差分布。

在matlab中是否有任何有效的求解器/优化器,以便在有很多局部最小值的情况下获得全局最小值?还是其他方法?

谢谢,