Donald Coxeter è stato uno dei maggiori matematici del XX secolo. Ma, accanto ad articoli e volumi che sono stati fondamentali per lo sviluppo di vari settori (geometrici ed algebrici) della matematica, ha scritto numerosi articoli su argomenti ricreativi.  Consideriamo un problema di cui si è occupato in uno di essi:
"Dati 3 cerchi disposti in modo che ciascuno tocchi gli altri 2, come disegnarne un altro che li tocchi tutti e 3".
Se i 3 cerchi hanno raggi pari a B, C e D, 2 cerchi con la proprietà richiesta hanno per raggio i valori assoluti di
B·C·D/( B·C+B·D+C·D + 2·√(B·C·D·(B+C+D)) )  e
B·C·D/( B·C+B·D+C·D - 2·√(B·C·D·(B+C+D)) ).
Determina raggio e centro dei 2 cerchi nel caso in cui i 3 cerchi abbiano raggi 3, 2 ed 1, e prova a realizzare una figura simile a quella a fianco.
   

# Traccio i cerchi in un piano cartesiano centrato in (0,0), che assumo come estremo
# destro del cerchio maggiore:
        
# Volendo, posso tracciare i cerchi con del software. Usando R posso ad es. fare:
source("http://macosa.dima.unige.it/r.R")
BF=4; HF=4
PLANE(-6,6, -6,6)
C1=-3;C2=0;R=3; circleC(C1,C2,R,"cyan"); circle(C1,C2,R,"black")
C1=0;C2=4; R=2; circleC(C1,C2,R,"cyan"); circle(C1,C2,R,"black")
C1=-3;C2=4;R=1; circleC(C1,C2,R,"cyan"); circle(C1,C2,R,"black")
#
#
# I raggi dei due cerchi cercati, usando le formule indicate nel testo:
F1=function(b,c,d) b*c*d/( b*c+b*d+c*d + 2*sqrt(b*c*d*(b+c+d)) )
F2=function(b,c,d) b*c*d/( b*c+b*d+c*d - 2*sqrt(b*c*d*(b+c+d)) )
F1(3,2,1); F2(3,2,1)
#  0.2608696   -6
abs( fraction( c(F1(3,2,1), F2(3,2,1)) ) )
#  6/23         6
# Un cerchio è quello centrato in (0,0) e di raggio 6. L'altro è il cerchietto
# colorato in rosso nella figura inziale; ha raggio 6/23, qual è il centro?
# Lo trovo come è suggerito dalla figura seguente:
        
# È l'intersezione (X,Y) dei cerchi aventi come centri gli stessi dei cerchi
# iniziali allungati di un valore pari al raggio del cerchietto, ossia 6/23.
# Volendo posso tracciare la figura precedente con:
PLANE(-4,0,0,4)
C1=-3;C2=0;R=3; circle(C1,C2,R,"black")
C1=0;C2=4; R=2; circle(C1,C2,R,"black")
C1=-3;C2=4;R=1; circle(C1,C2,R,"black")
C1=-3; C2=0; R=3+6/23; circl(C1,C2,R,"brown")
C1=0;  C2=4; R=2+6/23; circl(C1,C2,R,"brown")
#
# Basta che intersechi i due cerchi tracciati in marrone. Posso farlo "a mano".
# Ottengo (-48/23, 72/23).  Se uso R:
C1=-3; C2=0; R=3+6/23; f=function(x) sqrt(R^2-(x-C1)^2)+C2
C1=0;  C2=4; R=2+6/23; g=function(x) sqrt(R^2-(x-C1)^2)+C2
X = solution2(f,g, -2.2,-1.8); Y = f(X)
c(X,Y)
#  -2.086957   3.130435
fraction(c(X,Y))
#  -48/23   72/23
line(-3,0,X,Y,"seagreen"); line(0,4,X,Y,"seagreen"); line(-3,4,X,Y,"seagreen")
# Nella figura precedente sono tracciati (in verde mare) anche questi tre segmenti.
#
# A questo punto posso tracciare sia cerchio piccolo che cerchio grosso.
# Se traccio tutto con R, senza griglia né coordinate:
PLANEww(-6,6, -6,6)
C1=0;C2=0;R=6; circleC(C1,C2,R,"yellow"); circl(C1,C2,R,"black")
C1=-3;C2=0;R=3; circleC(C1,C2,R,"cyan"); circl(C1,C2,R,"black")
C1=0;C2=4; R=2; circleC(C1,C2,R,"cyan"); circl(C1,C2,R,"black")
C1=-3;C2=4;R=1; circleC(C1,C2,R,"cyan"); circl(C1,C2,R,"black")
C1=-48/23;C2=72/23;R=6/23; circleC(C1,C2,R,"red"); circl(C1,C2,R,"black")