是否有用于集成复杂功能的Haskell库?

时间:2013-06-11 07:29:27

标签: haskell numerical-methods complex-numbers integral

  1. 如何在Haskell中以数字方式集成复杂的复值函数?
  2. 是否有现有的图书馆? numeric-tools仅适用于实时。
  3. 我知道在复杂的平面上只有线积分,所以我感兴趣的界面是这样的:

    i = integrate f x a b precision
    

    计算点a上函数b的{​​{1}}到f的直线上的积分。 xixa都是b或更好的Complex Double类型。

    请......:)

1 个答案:

答案 0 :(得分:3)

你可以自己制作这样的东西。假设你有一个realIntegrate类型的函数(Double -> Double) -> (Double,Double) -> Double,取一个函数和一个包含下限和上限的元组,将结果返回到一些固定的精度。例如,您可以使用数字工具定义realIntegrate f (lo,hi) = quadRomberg defQuad (lo,hi) f

然后我们可以按照以下方式制作你想要的功能 - 我现在忽略了精度(我不明白你的x参数是什么!):

integrate :: (Complex Double -> Complex Double) -> Complex Double -> Complex Double -> Complex Double
integrate f a b = r :+ i where
    r = realIntegrate realF (0,1)
    i = realIntegrate imagF (0,1)
    realF t = realPart (f (interpolate t)) -- or realF = realPart . f . interpolate
    imagF t = imagPart (f (interpolate t))
    interpolate t = a + (t :+ 0) * (b - a)

所以我们通过线性插值将ab的路径表示为从0到1的实际区间的函数,沿着该路径取f的值,整合分别是实部和虚部(我不知道这是否可以给出数字上表现不佳的结果)并将它们重新组合成最终答案。

我没有测试过这段代码,因为我没有安装数字工具,但至少它没有测试: - )