library(codetools) # Per caricare showTree che visualizza piu' cifre
F <- function(x) sqrt(1-x*x)  # funz. il cui grafico e' semicerchio
# Lungh. poligonale di n lati da (1,0) a ( x,F(x) )
Calcola <- function(x,n) {
  dx <- (1-x)/n; L <- 0; x1 <- 1; for (i in 1:n) {
  x2 <- 1-dx*i; dy <- F(x2)-F(x1); dP <- sqrt(dx*dx+dy*dy)
  L <- L+dP; x1 <- x2}; L}
# Vediamo ad esempio la lunghezza da (1,0) a (0,1)
x <- 0
n <- 1; v <- Calcola(x,n); showTree(v)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
# ottengo le uscite:
# 1.41421356237310
# 1.55224803388742  0.138034471514326
# 1.56849483899118  0.0162468051037579
# 1.57050908238301  0.00201424339182954
# 1.57076043435854  0.000251351975534275
# 1.57079184064491  3.14062863646658e-05
# 1.57079576603875  3.92539384352908e-06
# Vediamo quella tra (1,0) e ( -1/2, F(-1/2) )
x <- -1/2
n <- 64; v <- Calcola(x,n); showTree(v)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
n <- n*4; v0 <- v; v <- Calcola(x,n); showTree(v); showTree(v-v0)
# 2.09385405583492
# 2.09432833389125  0.000474278056327382
# 2.09438680906668  5.84751754266755e-05
# 2.09439406898832  7.25992163719269e-06
# 2.09439497342030  9.04431988413279e-07
# Vedrai che questi valori possono essere ottenuti mediante la
# funzione "ArcoCoseno". Ad esempio per x = 0 e x = -1/2 ho:
acos(c(0, -1/2))
#  1.570796   2.094395