annotate src/rlm/resistors.clj @ 0:78a630e650d2

initial import
author Robert McIntyre <rlm@mit.edu>
date Tue, 18 Oct 2011 00:57:08 -0700
parents
children
rev   line source
rlm@0 1 (ns rlm.resistors
rlm@0 2 (:use [clojure.contrib [accumulators :only [combine] ]])
rlm@0 3 (:use [incanter core stats charts]))
rlm@0 4
rlm@0 5 (def value 1)
rlm@0 6
rlm@0 7 (defn parrallel [r1 r2]
rlm@0 8 (/ 1 (+ ( / 1 r1) ( / 1 r2))))
rlm@0 9
rlm@0 10 (defn series [r1 r2]
rlm@0 11 (+ r1 r2))
rlm@0 12
rlm@0 13 (defn total-nums [num-resistors]
rlm@0 14 (if (= 1 num-resistors) #{value}
rlm@0 15 (combine
rlm@0 16 (apply hash-set (map (partial parrallel value) (total-nums (dec num-resistors))))
rlm@0 17 (apply hash-set (map (partial series value) (total-nums (dec num-resistors))))
rlm@0 18 (total-nums (dec num-resistors))
rlm@0 19 )))
rlm@0 20
rlm@0 21 (def total-nums (memoize total-nums))
rlm@0 22
rlm@0 23 (defn spectrum [num]
rlm@0 24 (apply sorted-set (map float (total-nums num))))
rlm@0 25
rlm@0 26 (defn oh-yeah []
rlm@0 27 (view (dynamic-scatter-plot [number (range 1 13 1)]
rlm@0 28 (let [vvv (apply vector (rlm.resistors/spectrum number))]
rlm@0 29 [(map identity vvv)
rlm@0 30 (repeat (count vvv) 0)])
rlm@0 31 :title "Resistor Combination Distribution")))