独立方程的大型非线性系统:顺序求解还是堆叠?

时间:2017-02-05 16:15:37

标签: python scipy

说我必须解决一个大的方程组

A_i = f(B_i)
B_i = g(A_i)

许多不同的i。现在,这是一个只有成对依赖的方程组。 lm algorythm证明了解决这个问题最稳定。

现在,我可以独立地解决这些问题(即循环i多个scipy.optimize.root,或者将它们全部堆叠在一起并同时解决)。我不确定哪个会是最快的,而且一般都很难知道。我有以下论据支持和反对:

  • algorythm最初在提供的猜测中以数字方式逼近雅可比行列式,增加维数以指数方式增加找到雅可比行列式所需的时间(反对堆叠)
  • 一旦找到雅可比行列式,大部分更新都是线性矩阵代数,因此如果叠加则应该更快。

这有意义吗?在这种情况下,我的结论是"如果解决它需要很长时间(糟糕的猜测或不规则的功能),堆叠它们,如果它很快,不要堆叠"。

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解;当你说它们是成对依赖的时候你的意思是整个系统可以在一个小的2x2系统集合中分解吗?如果是这样,你绝对应该选择解决较小的系统。如果没有,你能提供一些方程吗?