方波形のフーリエ級数

方波形のフーリエ級数を見ながら Code を書いてみた。
「奇数の集合から無名関数の集合を写像して、その足し算が。。。。」みたいなことを考えてつくってた。変な感じ。
数学の計算だと、無限を扱いたいのが少し解った。

(ns your-namespace (:use clojure.contrib.generic.math-functions))

(def odd (filter odd? (iterate inc 1)))
(defn sq-wave [times o]
  (let [sin++ (reduce  + (map #(% o) (take times
        (map (fn [odd_a] (fn [b] (/ (sin (* odd_a b)) odd_a)) ) odd))))]
    (* (/ 4 Math/PI) sin++)))


(def sq-wave-1000 (partial sq-wave 1000))
(map sq-wave-1000 (range 0 7 0.1))


実行結果

 (0.0
 0.9984605969804827
 1.0008449870096225
 1.001075982521372
 1.0003654333855294
 0.9996261121801995
 0.9994385009839825
 0.9997985789960524
 1.0002656821610707
 1.0004027681437755
 1.0001388888189737
 0.9997737789916263
 0.9996638149006335
 0.9998923467381663
 1.0002153901629178
 1.000311346665269
 1.000090418274014
 0.9997756348783101
 0.9996845573938926
 0.9999187838774861
 1.0002554713771907
 1.0003512771854661
 1.0000781603943951
 0.9996759545685403
 0.9995578153491884
 0.9999173847693775
 1.0004859058782134
 1.0006869485972327
 1.0001066744431377
 0.9989187212257304
 0.9979578066833449
 0.9993967201299412
 -1.004598491459511
 -1.0017810730937156
 -1.0000259191478627
 -0.9992171754678928
 -0.9993798750504369
 -1.000013393573174
 -1.0004598194979306
 -1.0003883704230978
 -0.9999722085430874
 -0.9996485207842846
 -0.999702557749956
 -1.0000381782993553
 -1.000308247874331
 -1.0002566302833673
 -0.9999508187220669
 -0.9997014900510263
 -0.9997570747017428
 -1.0000637923863167
 -1.0003160478856814
 -1.000251298431564
 -0.9999135806343454
 -0.9996310626771783
 -0.99971158435287
 -1.0001273545912746
 -1.0004917756096985
 -1.0003862475915501
 -0.9997780424487631
 -0.9991622639417629
 -0.9992761111076517
 -1.000635739582866
 -1.003793356095308
 1.010878011402898
 0.9988775982358229
 0.9985259652488738
 0.9994256746219519
 1.0003522820043318
 1.000643564879318
 1.0002892996807964
 0.9997642252981488)