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")))