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

2024-04-04

  1. 如何在 Haskell 中对复杂的复值函数进行数值积分?
  2. 有现成的库吗?数字工具 http://hackage.haskell.org/package/numeric-tools仅在卷轴上运行。

我知道在复平面上只有线积分,所以我感兴趣的界面是这样的:

i = integrate f x a b precision

计算沿直线的积分a to b功能的f在点上x. i, x, a, b都是Complex Double或更好Num a => Complex a type.

请... :)


你可以自己做这样的东西。假设你有一个函数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)

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

我还没有测试过这段代码,因为我没有安装数字工具,但至少它可以进行类型检查:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有用于集成复杂功能的 Haskell 库? 的相关文章

随机推荐