Haskell指数函数的Taylor序列
我试图实现指数函数的泰勒序列,但我得到了大量错误,我不完全理解,因为所有代码段本身都在工作。。。有人能解释一下错误和解决方法吗Haskell指数函数的Taylor序列,haskell,taylor-series,Haskell,Taylor Series,我试图实现指数函数的泰勒序列,但我得到了大量错误,我不完全理解,因为所有代码段本身都在工作。。。有人能解释一下错误和解决方法吗 top x = map (x^) [0..] bottom = foldr (*) 1 [1..] whole x = zipWith (/) (top x) bottom 提前谢谢 好吧,我知道了。问题是bottom实际上并不是所有可能的因子的列表 为了解决这个问题,我不得不使用而不是foldr: bottom = scanl (*) 1 [1..] 您可以在GH
top x = map (x^) [0..]
bottom = foldr (*) 1 [1..]
whole x = zipWith (/) (top x) bottom
提前谢谢 好吧,我知道了。问题是
bottom
实际上并不是所有可能的因子的列表
为了解决这个问题,我不得不使用而不是foldr
:
bottom = scanl (*) 1 [1..]
您可以在GHCi中分别测试每个函数,看看它是否与您设计的相同 例如,您对
bottom
Prelude> bottom = foldr (*) 1 [1..]
Prelude> :t bottom
bottom :: (Num b, Enum b) => b
没有列出清单。对于zipWith
Prelude> :t zipWith
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
与正确的比较
Prelude> bottom = scanl (*) 1 [1..]
Prelude> :t bottom
bottom :: (Num b, Enum b) => [b]
这是一个列表。可能只是我太累了,我今天工作了10个小时,所以这可能是一件非常愚蠢的事情,如果是这样,请原谅我,你的问题似乎不完整,它与
泰勒级数
有什么关系?您可能需要添加更完整的()代码。泰勒序列是用于计算指数函数/sin/cos等的序列。正如问题中所述,我的代码与指数函数e^x的泰勒序列相关。我以为这是常识,如果不是这样,我很抱歉。谢谢你的时间