如何知道牛顿的方法何时会失败使用Haskell?

时间:2017-11-03 20:19:45

标签: haskell math functional-programming polynomial-math newtons-method

在Haskell中,我使用以下函数来查找多项式的根:

<PropertyGroup>
    <TargetFrameworks>netstandard1.0;netstandard1.3;net45</TargetFrameworks>
</PropertyGroup>

其中polyValue是一个函数,它找到多项式p的y值,x值x,而polyDeriv是一个返回多项式p的导数的函数。

此代码适用于大多数情况,除非多项式没有任何实际根(函数在x轴之上)或者给出了错误的初始猜测。无论如何要确定牛顿的方法是否会事先失败,以便我的函数不会无限期地运行?

1 个答案:

答案 0 :(得分:8)

要大致确定度 N 的多项式的根源 - 如果有的话 - 知道它的所有极值就足够了,因为你必须只有一个根

  • 在任何相邻的负最小值和正最大值之间
  • 在最左边的极值的左边,如果它是负的最小值或正的最大值
  • 在最右边的极右边,如果它是负最小值或正极限

极值本身就是导数的根,它很方便地是度 N -1的多项式,所以你可以递归下去,直到你得到线性(或二次)情形,其中&找到根源(事实上确实如此)是微不足道的。