Algoritmo. programma in c.
premetto che so davvero poco riguardo l'informatica e la programmazione ma:
vorrei fare un programma che calcoli un numero di cifre decimali di pi, un numero scelto da me. (3, 100, 148000 ad esempio)
con il metodo di archimede se si prendono dei poligoni inscritti e circosritti a una circonferenza, all'aumentare del numero dei lati migliora l'approssimazione.
con 96 lati, sia nell'approssimazione per difetto che per eccesso, la seconda cifra decimale è 4, quindi si arriva a 3,14.
se aumentiamo il numero dei lati si può andare ben più avanti.
pi greco = perimetro/diametro
vorrei che il programmino all'avvio mi chieda:
quante cifre decimali vuoi calcolare?
dopo di che la macchina va a controllare i poligoni aumentando via via il numero dei lati fino a che l'ennesima cifra decimale dell'approssimazione per difetto è uguale all'ennesima cifra dell'approssimazione per eccesso.
non saprei da dove partire. pensate sia difficile?
a quel punto il programma dovrebbe restituirmi pigreco con n cifre decimali....
vorrei fare un programma che calcoli un numero di cifre decimali di pi, un numero scelto da me. (3, 100, 148000 ad esempio)
con il metodo di archimede se si prendono dei poligoni inscritti e circosritti a una circonferenza, all'aumentare del numero dei lati migliora l'approssimazione.
con 96 lati, sia nell'approssimazione per difetto che per eccesso, la seconda cifra decimale è 4, quindi si arriva a 3,14.
se aumentiamo il numero dei lati si può andare ben più avanti.
pi greco = perimetro/diametro
vorrei che il programmino all'avvio mi chieda:
quante cifre decimali vuoi calcolare?
dopo di che la macchina va a controllare i poligoni aumentando via via il numero dei lati fino a che l'ennesima cifra decimale dell'approssimazione per difetto è uguale all'ennesima cifra dell'approssimazione per eccesso.
non saprei da dove partire. pensate sia difficile?
a quel punto il programma dovrebbe restituirmi pigreco con n cifre decimali....
Risposte
Dai un occhiata a questa pagina di wikipedia. Vengono presentati diversi metodi per calcolare valori approssimati di $pi$. Utilizzando i tipi base del C oltre una certa quantità di cifre non puoi andare, ma implementare una libreria per fare calcoli su numeri di precisione arbitraria potrebbe essere complicato e forse oltre la tua portata. Personalmente utilizzerei MPFR per questo genere di cose (che però già offre la possibilità di ottenere approssimazioni arbitrarie di $pi$ e renderebbe quindi lo sviluppo dell'applicazione stessa del tutto inutile).
@apatriarca
Mi hai anticipato, stavo per dare lo stesso consiglio
@deian91
Se sai poco di programmazione, credo avrai delle difficoltà, il problema non è banale come sembra.
Mi hai anticipato, stavo per dare lo stesso consiglio

@deian91
Se sai poco di programmazione, credo avrai delle difficoltà, il problema non è banale come sembra.
come immaginavo. non è semplice...
http://it.wikipedia.org/wiki/Algoritmo_ ... s-Legendre
cosa mi potete dire di questo algoritmo?
è semplice da scrivere in C?
cosa mi potete dire di questo algoritmo?
è semplice da scrivere in C?
Come ti ho già detto, il problema NON è nell'algoritmo per il calcolo di $pi$, ma nella necessità di fare calcoli con numeri di precisione arbitraria (e per questo algoritmo sarebbe necessario implementare anche il calcolo della radice quadrata). Puoi infatti implementare quell'algoritmo in poche righe utilizzando i long double per rappresentare i tuoi valori, ma oltre un certo numero di cifre decimali non potrai andarci. Se lo fai semplicemente per esercizio, fai pure il tuo programma usando i long double senza problema, ma se lo vuoi fare seriamente ti direi di lasciare perdere.