2017-02-04 5 views
-3

私は指数関数のテイラーシーケンスを実装しようとしましたが、私は完全には理解できません。誰かがエラーと回避策を説明してください:Haskellの指数関数のテイラーシーケンス

​​

ありがとうございます!

+0

私は今日疲れているかもしれませんが、今日は10時間働いていたので、本当にダムになるかもしれません。 – Fapprentice

+0

あなたの質問は不完全なようですが、それはどのように 'Taylor series'に関係していますか?より完全な([MCVE](http://stackoverflow.com/help/mcve))コードを追加することもできます。 – wizzup

+0

テイラーシーケンスは、私のコードが指数関数e^xのテイラーシーケンスに関係していたという質問に記載されているように、計算上の指数関数/ sin/cosなどのシーケンスです。私はこれが常識であると思ったが、そうでない場合は申し訳なく思う。あなたの時間をありがとう – Fapprentice

答えて

6

さて、私はそれを理解しました。問題は、bottomが実際にすべての可能な階乗のリストではなかったということでした。この問題を解決するために

、私はfoldrの代わりにscanlを使用する必要がありました:

bottom = scanl (*) 1 [1..] 
1

あなたはそれはあなたがする設計同じものであるかどうかを確認するためにGHCiの中で個別に各機能をテストすることができます。例えば

bottom

Prelude> bottom = foldr (*) 1 [1..] 
Prelude> :t bottom 
bottom :: (Num b, Enum b) => b 

のあなたの最初の定義は、リストを与えるものではありません。明らかにこれは正しくありませんつのリストを与える

Prelude> bottom = scanl (*) 1 [1..] 
Prelude> :t bottom 
bottom :: (Num b, Enum b) => [b] 

と比べzipWith

Prelude> :t zipWith 
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] 

ための右入力。