scipy.optimize的'root'和'fixed_point'方法之间有什么区别

时间:2018-07-09 06:18:56

标签: python scipy mathematical-optimization

scipy.optimize中有两种方法rootfixed_point

我很惊讶地发现root提供了许多方法,而fixed_point只有一种方法。从数学上讲,两者是相同的。它们将g(x)的以下固定点与f(x)的根相关联:

[g(x)= f(x)-x]

如何确定要使用哪个功能?

此外,这两种方法都不允许我指定定义函数的区域。有没有办法限制x的范围?

1 个答案:

答案 0 :(得分:3)

摘要:如果您不知道使用什么,请使用root。如果您的问题是自然定点问题fixed_point,那么可以合理地考虑迭代g(x) = x将有助于解决问题(即g具有某些非扩展行为)。否则,请使用g或其他方式。

尽管每个寻根问题在数学上都等同于定点问题,但从数值方法的角度重述它并不总是有益的。有时就像牛顿的方法一样。但是,用rootf(x) = 0替换为g(x) = x的琐碎重述可能无济于事。

方法g(x) = f(x) + x 迭代所提供的功能,并可选进行调整,以使收敛更快/更可能。如果迭代值从固定点(排斥固定点)移出 ,这将是有问题的,尽管进行了调整。一个示例:以相同的起点直接将fixed_point作为exp(x) = 1的一个定点问题来解决:

exp(x) - 1 + x

要直接回答这个问题:区别在于所使用的方法。定点解算器非常简单,它是给定函数的迭代,它通过收敛的加速而得到增强。如果那行不通(通常行不通),那就太糟糕了。寻根方法更复杂,更健壮,应首选。