| La lunghezza del grafico di una funzione F continua in un intervallo [a,b] può
essere calcolata approssimandola con la lunghezza di una spezzata i cui vertici stanno sul grafico della funzione e le cui ascisse sono
ottenute dividendo l'intervallo [a,b] in N segmenti uguali, e facendo aumentare via via il numero N. Consideriamo ad esempio il caso raffigurato a fianco (in cui è considerato il caso N=4), ottenendo per N = 2, 4, 8: 8.94427190999916, 13.026466151931759, 13.291156405311183. Possiamo automatizzare il procedimento con un programma. Vedi qui come lo si può fare facilmente con un programma di Basic. Si vede come si può ottenere l'approssimazione 13.501661653555. | ![]() |
Si poteva anche usare un programma in JavaScript:
a=-2; b=2
document.write("la lunghezza della curva tra t="+a+" e t="+b+"<br>")
function x(t) {return t}
function y(t) {return t*t*t-2*t}
n = 1e5; rip=5
for(k=1; k<=rip; k=k+1) { n=n*2; e=(b-a)/n; L=0
for(i=1;i<=n; i=i+1) {t1=a+(i-1)*e; t2=a+i*e
L = L+ Math.sqrt(Math.pow(x(t1)-x(t2),2)+Math.pow(y(t1)-y(t2),2))}
document.write("n = "+n+", L = "+L+"<br>") }
la lunghezza della curva tra t=-2 e t=2
n = 200000, L = 13.501661653242772
n = 400000, L = 13.501661653477255
n = 800000, L = 13.50166165353527
n = 1600000, L = 13.50166165355005
n = 3200000, L = 13.501661653554594
Lo stesso procedimento si può usare per calcolare la lunghezza di altre curve che non siano il grafico di una funzione.
Queste curve vengono discusse nella successiva voce "rette tangenti e curve". Vediamo comunque, come esempio, come può essere calcolata la lunghezza del cerchio di raggio 1 (ovvero la sua "circonferenza").
Il cerchio può essere descritto come l'insieme dei punti
(cos(t), sin(t)) al
variare di t tra 0 e 2·π.

10 a=0 : b=6.2831853071795865 : L1=0 20 input "numero passi: "; n : e = (b-a)/n : L=0 30 for i=1 to n : t1=a+(i-1)*e : t2=a+i*e 40 t=t1 : gosub 100 : x1=x : y1=y : t=t2 : gosub 100 : x2=x : y2=y 50 L = L+sqr((x1-x2)^2+(y1-y2)^2) : next 60 print L;" variazione = "; L-L1 : L1=L : goto 20 100 x = cos(t) : y = sin(t) : return numero passi: 50000 6.283185303048737 variazione = 6.283185303048737 numero passi: 100000 6.283185306137423 variazione = 3.08868663978501e-9 numero passi: 200000 6.283185306941226 variazione = 8.03802358007033e-10 numero passi: 400000 6.283185307152901 variazione = 2.1167512187503235e-10 numero passi: 800000 6.28318530717704 variazione = 2.4138913090610004e-11
|
Si capisce immediatamente che la lunghezza è 2·π. Vediamo il caso dell'ellisse ottenuta "schiacciando" il cerchio fino a dimezzarne l'altezza. A destra il grafico ottenuto con WolframAlpha col comando | ![]() |
10 a=0 : b=6.2831853071795865 : L1=0 20 input "numero passi: "; n : e = (b-a)/n : L=0 30 for i=1 to n : t1=a+(i-1)*e : t2=a+i*e 40 t=t1 : gosub 100 : x1=x : y1=y : t=t2 : gosub 100 : x2=x : y2=y 50 L = L+sqr((x1-x2)^2+(y1-y2)^2) : next 60 print L;" variazione = "; L-L1 : L1=L : goto 20 100 x = cos(t) : y = sin(t)/2 : return numero passi: 50000 4.844224107086487 variazione = 4.844224107086487 numero passi: 100000 4.844224109477036 variazione = 2.3905490920128614e-9 numero passi: 200000 4.844224110074603 variazione = 5.97567328952664e-10 numero passi: 400000 4.844224110224089 variazione = 1.4948575710604928e-10 numero passi: 800000 4.844224110261339 variazione = 3.725020292222325e-11 numero passi: 1600000 4.844224110270881 variazione = 9.541700762838445e-12 numero passi: 3200000 4.844224110273277 variazione = 2.396305376350938e-12 numero passi: 6400000 4.844224110273782 variazione = 5.044853423896711e-13 numero passi: 12800000 4.844224110274099 variazione = 3.170796958329447e-13Le variazioni via via si dividono circa per 4, fino all'ultima uscita in cui l'andamento è cambiato: capiamo che gli errori di arrotondamento sono divenuti predominanti. Mi fermo alla precedente uscita, 4.844224110273277, con una variazione pari a circa 1/4 di 9.5e-12, ossia 2.5e-12: prendo 4.844224110274 (328 + 25 = 353 → 400). Ma potevo benissimo prendere l'approssimazione 4.84422411. Facciamo il calcolo con WolframAlpha: