The stuff below is good, I think, for the unit sliver. When we double the linear scale of a solution, the mass is multiplied by 8 but the test point is twice as far away so the potential at the scaled point is 4 times as great. The function ‘pot’ below, for any real, x, must satisfy: (pot (sm x A) (sm x B)) = (* x x (pot A B)) The mass of a sliver is m and it starts at the origin and is vector A, then the potential at vector B of the sliver A is: cp is Gibbs cross product, ip is dot product, x = (A∙B)/(A∙A), y2 = ((A×B)/(A∙A))∙((A×B)/(A∙A)) (define (pot A B) (let* ((a2 (ip A A)) (ai (/ a2)) (x (* ai (ip A B))) (CP (cp A B)) (y2 (* ai ai (ip CP CP))) (x2 (sq x)) (f (sqrt (+ (sq (- x 1)) y2)))(g (sqrt (+ x2 y2)))) (write (cons x y2)) (newline) (* 1/2 a2 (+ (* (+ (* 3 x) 1) f) (* -3 x g) (* (- (* 2 x2) y2) (log (/ (+ (- x) 1 f)(- g x)))))))) (define (ip a b) (if (null? a) 0 (+ (* (car a) (car b)) (ip (cdr a) (cdr b))))) (define (mxv m v) (if (null? m) '() (cons (ip v (car m)) (mxv (cdr m) v)))) (define (cp a B) (apply (lambda (a b c) (apply (lambda (d e f) (list (- (* b f) (* c e)) (- (* c d) (* a f)) (- (* a e) (* b d)))) B)) a)) (define (sm x A) (if (null? A) '() (cons (* x (car A)) (sm x (cdr A))))) (define (sq x) (* x x)) (define (DoL n p) (let l ((v '())(n (- n 1))) (if (< n 0) v (l (cons (p n) v)(- n 1))))) (cp '(1 2 3) '(1 -2 1)) ; => (8 2 -4) (DoL 20 (lambda (j) (let ((x (+ 1/40 (* 1/20 j)))) (pot '(1 0 0) (list x 0.00001 0))))) (pot '(1 0 0) '(1 0 1/10)) ; => 1.6757504923783622 (pot '(1 0 0 ) '(0.43 0.61 0)) ; => 0.47282696269790586 (pot '(0.7198893 0.5479217 -0.2696723) '(1 0.5 30)) => 0.00928390029503559 (let ((A '(1.2 2.1 0.53)) (B '(4 5 6)) (x 2)) (cons (pot (sm x A) (sm x B)) (* x x (pot A B)))) ; => (2.792169581000425 . 2.792169581000425) I must understand how (pot A B) scales with A. x and y scale inversely! For any real x, (* x (pot (sm x A) (sm x B))) = (pot A B)??