(def a-form [1 2 3])
(def a-point [2 3 5])
(defn contract [form vector]
(reduce + (map * form vector)))
(contract a-form a-point)
(def a-plane {:form [1 2 3] :val 4})
(defn side [plane point]
(- (contract (plane :form) point) (plane :val)))
(side a-plane [2 3 5]) (side a-plane [2 3 -5]) (side a-plane [2 3 -4/3])
(defn cauchy[]
(Math/tan (* Math/PI (- (rand) 0.5))))
(repeatedly 20 cauchy)
(defn make-point []
(repeatedly 3 cauchy))
(defn make-plane []
{:form (repeatedly 3 cauchy) :val (cauchy)})
(make-point) (make-plane)
(def points (repeatedly #(make-point)))
(def planes (repeatedly #(make-plane)))
(defn sign[x]
(if (< x 0) '- '+))
(map sign [ -1 -2 -3 0 -0.5 1.3])
(defn sig [point planes]
(for [p planes] (sign (side p point))))
(sig (first points) (take 3 planes))
(count (frequencies (take 10 (map #(sig % (take 1 planes)) points)))) (count (frequencies (take 10 (map #(sig % (take 2 planes)) points)))) (count (frequencies (take 10 (map #(sig % (take 3 planes)) points)))) (count (frequencies (take 10 (map #(sig % (take 4 planes)) points)))) (count (frequencies (take 10 (map #(sig % (take 5 planes)) points)))) (count (frequencies (take 10 (map #(sig % (take 6 planes)) points))))
(count (frequencies (take 100 (map #(sig % (take 1 planes)) points)))) (count (frequencies (take 100 (map #(sig % (take 2 planes)) points)))) (count (frequencies (take 100 (map #(sig % (take 3 planes)) points)))) (count (frequencies (take 100 (map #(sig % (take 4 planes)) points)))) (count (frequencies (take 100 (map #(sig % (take 5 planes)) points)))) (count (frequencies (take 100 (map #(sig % (take 6 planes)) points))))
(count (frequencies (take 1000 (map #(sig % (take 1 planes)) points)))) (count (frequencies (take 1000 (map #(sig % (take 2 planes)) points)))) (count (frequencies (take 1000 (map #(sig % (take 3 planes)) points)))) (count (frequencies (take 1000 (map #(sig % (take 4 planes)) points)))) (count (frequencies (take 1000 (map #(sig % (take 5 planes)) points)))) (count (frequencies (take 1000 (map #(sig % (take 6 planes)) points))))
(count (frequencies (take 10000 (map #(sig % (take 1 planes)) points)))) (count (frequencies (take 10000 (map #(sig % (take 2 planes)) points)))) (count (frequencies (take 10000 (map #(sig % (take 3 planes)) points)))) (count (frequencies (take 10000 (map #(sig % (take 4 planes)) points)))) (count (frequencies (take 10000 (map #(sig % (take 5 planes)) points)))) (count (frequencies (take 10000 (map #(sig % (take 6 planes)) points))))
(count (frequencies (take 100000 (map #(sig % (take 1 planes)) points)))) (count (frequencies (take 100000 (map #(sig % (take 2 planes)) points)))) (count (frequencies (take 100000 (map #(sig % (take 3 planes)) points)))) (count (frequencies (take 100000 (map #(sig % (take 4 planes)) points)))) (count (frequencies (take 100000 (map #(sig % (take 5 planes)) points)))) (count (frequencies (take 100000 (map #(sig % (take 6 planes)) points))))
(count (frequencies (take 1000000 (map #(sig % (take 1 planes)) points)))) (count (frequencies (take 1000000 (map #(sig % (take 2 planes)) points)))) (count (frequencies (take 1000000 (map #(sig % (take 3 planes)) points)))) (count (frequencies (take 1000000 (map #(sig % (take 4 planes)) points)))) (count (frequencies (take 1000000 (map #(sig % (take 5 planes)) points)))) (count (frequencies (take 1000000 (map #(sig % (take 6 planes)) points))))
No comments:
Post a Comment