Mercurial > rlm
diff 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 |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/rlm/resistors.clj Tue Oct 18 00:57:08 2011 -0700 1.3 @@ -0,0 +1,31 @@ 1.4 +(ns rlm.resistors 1.5 +(:use [clojure.contrib [accumulators :only [combine] ]]) 1.6 +(:use [incanter core stats charts])) 1.7 + 1.8 +(def value 1) 1.9 + 1.10 +(defn parrallel [r1 r2] 1.11 + (/ 1 (+ ( / 1 r1) ( / 1 r2)))) 1.12 + 1.13 +(defn series [r1 r2] 1.14 + (+ r1 r2)) 1.15 + 1.16 +(defn total-nums [num-resistors] 1.17 + (if (= 1 num-resistors) #{value} 1.18 + (combine 1.19 + (apply hash-set (map (partial parrallel value) (total-nums (dec num-resistors)))) 1.20 + (apply hash-set (map (partial series value) (total-nums (dec num-resistors)))) 1.21 + (total-nums (dec num-resistors)) 1.22 + ))) 1.23 + 1.24 +(def total-nums (memoize total-nums)) 1.25 + 1.26 +(defn spectrum [num] 1.27 + (apply sorted-set (map float (total-nums num)))) 1.28 + 1.29 +(defn oh-yeah [] 1.30 + (view (dynamic-scatter-plot [number (range 1 13 1)] 1.31 + (let [vvv (apply vector (rlm.resistors/spectrum number))] 1.32 + [(map identity vvv) 1.33 + (repeat (count vvv) 0)]) 1.34 + :title "Resistor Combination Distribution")))