diff options
author | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
---|---|---|
committer | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
commit | 562a9a52d599d9a05f871404050968a5fd282640 (patch) | |
tree | 7d3305c1252c043bfe246ccc7deff0056aa6b5ab /js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm | |
parent | 5d012c6c011a9dedf7d0a098e456206244eb5a0f (diff) | |
download | tour-562a9a52d599d9a05f871404050968a5fd282640.tar.gz |
*
Diffstat (limited to 'js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm')
-rw-r--r-- | js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm new file mode 100644 index 0000000..42c0e6b --- /dev/null +++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm @@ -0,0 +1,79 @@ +(define (make-resistor resistance) + (attach-type 'resistor resistance)) + +(define (resistor? ckt) + (eq? (type ckt) 'resistor)) + +(define (make-series ckt1 ckt2) + (attach-type 'series (list ckt1 ckt2))) + +(define (series? ckt) + (eq? (type ckt) 'series)) + +(define (make-parallel ckt1 ckt2) + (attach-type 'parallel (list ckt1 ckt2))) + +(define (parallel? ckt) + (eq? (type ckt) 'parallel)) + + +(define (resistance ckt) + (cond ((resistor? ckt) + (resistance-resistor (contents ckt))) + ((parallel? ckt) + (resistance-parallel (contents ckt))) + ((series? ckt) + (resistance-series (contents ckt))))) + +(define (conductance ckt) + (cond ((resistor? ckt) + (conductance-resistor (contents ckt))) + ((parallel? ckt) + (conductance-parallel (contents ckt))) + ((series? ckt) + (conductance-series (contents ckt))))) + + +(define (resistance-resistor resistor) + resistor) + +(define (conductance-resistor resistor) + (/ 1 (resistance-resistor resistor))) + + +(define (resistance-series ckt) + (+ (resistance (left-branch ckt)) + (resistance (right-branch ckt)))) + +(define (conductance-series ckt) + (/ 1 (resistance-series ckt))) + +(define (conductance-parallel ckt) + (+ (conductance (left-branch ckt)) + (conductance (right-branch ckt)))) + +(define (resistance-parallel ckt) + (/ 1 (conductance-parallel ckt))) + + + +(define left-branch car) +(define right-branch cadr) +(define attach-type cons) +(define type car) +(define contents cdr) + + + +(define (repeated f n) + (lambda (x) + (if (= n 0) + x + ((repeated f (-1+ n)) (f x))))) + +(define (L-extend base series-part parallel-part) + (make-series series-part (make-parallel parallel-part base))) + +(define (ladder-extension stages base series-part parallel-part) + ((repeated (lambda (x) (L-extend x series-part parallel-part)) stages) + base)) |