diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-03-07 15:18:30 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-03-07 15:18:30 +0100 |
| commit | bd5f50be83a10363fdfd4f73a377325cf48b5903 (patch) | |
| tree | 050f562d4b815cc4a8467facb935c0cba98b8bea /coding-exercises/2/14.rkt | |
| parent | 592ef89cb282ab33d6b10cacae711a4a8e6b1212 (diff) | |
fixup
Diffstat (limited to 'coding-exercises/2/14.rkt')
| -rw-r--r-- | coding-exercises/2/14.rkt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/coding-exercises/2/14.rkt b/coding-exercises/2/14.rkt new file mode 100644 index 0000000..50d28fc --- /dev/null +++ b/coding-exercises/2/14.rkt @@ -0,0 +1,66 @@ +#lang racket +(require "../../shared/intervals.rkt") + +(define (print-interval-percent i) + (newline) + (display "interval{") + (display (center i)) + (display ",") + (display (percent i)) + (display "}") + (newline)) + +(define (lem1 i1 i2) + (div-interval (mul-interval i1 i2) + (add-interval i1 i2))) + +(define (lem2 i1 i2) + (let ((one (make-center-percent 1.0 0))) + (div-interval + one + (add-interval + (div-interval one i1) + (div-interval one i2))))) + +;; adding scales the heighest percent to the new center +(define (print-add) + (let ((i1 (make-center-percent 100.0 2.0)) + (i2 (make-center-percent 200.0 3.0))) + (newline) + (println "*** add") + (print-interval-percent i1) + (print-interval-percent i2) + (print-interval-percent (add-interval i1 i1)) + (print-interval-percent (add-interval i1 i2)) + (print-interval-percent (sub-interval i1 i1)) + (print-interval-percent (sub-interval i1 i2)))) + +;; multiplication and addition of positive intervals +;; adds percentage from both intervals +(define (print-mul) + (let ((i1 (make-interval 2.0 8.0)) + (i2 (make-interval 2.0 8.0))) + (newline) + (println "*** mul") + (print-interval-percent i1) + (print-interval-percent i2) + (print-interval-percent (div-interval i1 i1)) + (print-interval-percent (div-interval i1 i2)) + (print-interval-percent (mul-interval i1 i1)) + (print-interval-percent (mul-interval i1 i2)))) + +;; There are at least some problems as I understand: +;; 1. Repeated intervals in an equation are dependent on each other +;; 2. Multiplicative identity is undefined and should not be uncertain +(define (print-lem) + (let ((i1 (make-center-percent 100.0 2.0)) + (i2 (make-center-percent 200.0 3.0))) + (newline) + (println "*** lem") + (print-interval-percent i1) + (print-interval-percent i2) + (print-interval-percent (lem1 i1 i2)) + (print-interval-percent (lem2 i1 i2)))) +(print-add) +(print-mul) +(print-lem) |
