Col seguente programma in R o con questo in JavaScript (vedi qui per capire che fa) ottengo le successive uscite:
source("http://macosa.dima.unige.it/r.R") F <- function(x) sqrt(1-x*x) p = 0.5; L0 = 0 n=1; for(i in 1:6) {n = n*4; dx=(1-p)/n; x=1-(0:n)*dx; L=lung(x,F(x)); cat("n =",n," L =",L," var =",L-L0,"\n"); L0=L} n = 4 L = 1.041049 var = 1.041049 n = 16 L = 1.046408 var = 0.005359197 n = 64 L = 1.047097 var = 0.0006893006 n = 256 L = 1.047185 var = 8.746579e-05 n = 1024 L = 1.047196 var = 1.101703e-05 n = 4096 L = 1.047197 var = 1.382436e-06
Che cosa calcola il programma al variare di p e che cosa posso concludere da queste uscite? Se dessi a p il valore 0, su quale valore tenderebbero a stabilizzarsi le uscite.
Si capisce subito che cosa fa il programma se aggiungiamo delle istruzioni grafiche:
BF=7; HF=4 PIANO(-1,1, 0, 1) arco(0,0, 1, 0,180, "blue") F <- function(x) sqrt(1-x*x) # funz. il cui grafico e' il semicerchio # Misura della lungh. dell'arco che da (0,1) va al punto P di acissa p p = -0.8; L0 = 0 # Cambia l'assegnazione dell'ascissa p per un altro arco PUNTO(p,F(p), "red") n=1; for(i in 1:6) {n = n*4; dx=(1-p)/n; x=1-(0:n)*dx; L=lung(x,F(x)); spezza(x,F(x),i); cat("n =",n," L =",L," var =",L-L0,"\n"); L0=L}
Il programma (vedi) calcola la lunghezza della poligonale di n lati di base eguale che approssima la lunghezza dell'arco di cerchio di raggio 1 che approssima l'arco (del semicerchio superiore) che congiunge il punto (0,1) col punto di ascissa p. In pratica approssima il valore dell'angolo in radianti che ha come coseno il valore dato in input. Se usassimo una calcolatrice (o la funzione acos di R) troveremmo che, nel caso in cui come p si introduca 0.5, esso vale 1.04719755119660, approssimazione a 15 cifre (si può osservare che l'errore non solo si riduce, ma tende ad essere circa 1/8 del precedente). Se dessi in input p = 0, le uscite tenderebbero a stabilizzarsi sul valore (in radianti) di un quarto di cerchio, ossia su π/2 = 1.570796326794 .
Possiamo calcolare la lunghezza anche con WolframAlpha (vedi). Con:
arc length of y=sqrt(1-x*x) from x=1 to 0.5
ottengo l'approssimazione: 1.0472