数值求解一个困难的方程组

计算科学 数值分析 非线性方程
2021-11-25 06:34:57

我有一个系统n我想用数值求解的非线性方程:

f(x)=a
f=(f1,,fn)x=(x1,,xn)

该系统具有许多使其特别难以处理的特性。我正在寻找有关如何更有效地处理系统的想法。

为什么系统难?

  • 功能与此类似(但当然是多个维度):

    数学图形

    它们有平坦的高原,由一个平滑变化的区域隔开。在 2D 中,你可以想象这样的事情fi

    数学图形

    一般来说,每个fi有两个由围绕一个平滑变化分隔的平台n1维超平面。

    像这样的函数很难用类似牛顿的方法处理,因为在平台上导数实际上为零。在多个维度中,我无法轻易找到没有fi有一个平台——如果可以的话,那将解决问题。二分法适用于n=1,但它不能很好地推广到多个维度。

  • 这些函数的计算速度非常慢。我正在寻找一种可以在尽可能少的迭代中获得根的合理近似值的方法。

  • 这些函数是用蒙特卡洛方法计算的。这意味着每次计算它们时,我都会得到一个稍微不同的随机值。衍生品很难估计。一旦我们离根足够近,噪声就会开始占主导地位,因此有必要使用平均来提高精度。理想情况下,应该可以将该方法推广到等效的随机近似版本(例如,Newton → Robbins-Monro)。

  • 该系统是高维的。n可以大到10-20。什么时候n=2,一个有效的方法可能是:尝试遵循定义的轮廓f1(x1,x2)=0f2(x1,x2)=0并查看它们相交的位置。目前尚不清楚这将如何推广到高维度。

我对系统还有什么了解?

  • 恰好有一个根(根据理论结果)。

  • 我知道的价值fi在高原上(假设它是 0 和 1 对于任何i)。

  • fi有着特殊的关系xi:  fi(,xi,)从 1 到 0 单调变化为xi. 这对于其他的任何固定值都是正确的xji.

1个回答

由于只有一个根并且没有约束,您可能会很幸运地将其视为优化问题:最小化原始函数平方的总和(沿每个维度)。

经典优化方法可能会失败,但遗传算法或 CME-ES(协变等矩阵适应 - 进化策略)等启发式方法可能会奏效。