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