A seguir publico a
minha solução, gostaria de saber como poderia melhora-lá. Me falaram sobre a
série de Taylor para calcular o desvio, mas nao sei como proceder... Se alguem
pudesse me ajudar, seria grato.
Sabemos que para calcular o numero de dígitos de números gigantescos,
basta calcular o logaritmo na base 10 do numero e acrescentarmos 1 à
característica do logaritmo.
Log(n!) é Log [1*2*3*...*(n-1)*n] e assim sendo, pode ser escrito na
forma de log(1) + log(2) + log (3) + ... + log(n-1) + log(n).
Seja log(n!) soma de retângulos de base igual a 1 e altura igual a
log(k), k pertencentes aos naturais, podemos afirmar que a integral de log(n)
é aproximadamente log(n!), portanto.
Daí temos que:
Int ( log10(x) , x=1..n ) = log10[(n-1)!] + C
Em que Int ( log10(x) , x=1..n ) é a integral definida de logaritmo de
x na base 10 no intervalo de 1 a n e que C é o complemento de log[(n-1)!] para
Int ( log10(x) , x=1..n ).
Calculando C:
Sabemos que:
Int ( log10(x) , x=1..n ) = log10[(n-1)!] + C, portanto:
C = Int ( log10(x) , x=1..n ) – log10[(n-1)!]
Sabemos ainda que Int ( log10(x) , x=1..n ) =
(n*ln(n)-n)/ln(10)
Daí temos que:
C = (n*ln(n)-n)/ln(10) – (1*ln(1)-1)/ln(10) – log10([n-1)!]
C = (ln(n^n)-n)/ln(10) – (-1)/ln(10) – log10[(n-1)!] // n^n = n elevado a n.
C = [log10(n^n) – n/ln(10)] + 1/ln(10) – log10[(n-1)!]
C = [log10(n^n) – log10[(n-1)!] + (1-n)/ln(10)
C = log10[(n^n)/(n-1)!] + (1-n)/ln(10)
Supondo que C < log(n)
C < log(x)
log10[(x^x)/(n-1)!] + (1-x)/ln(10) <
log(x)
log10[(x^x)/(x-1)!] – log(x) <
(x-1)/ln(10)
log10{[x^(x-1)]/(x-1)!} < (x-1)/ln(10)
por substituição, observamos que verifica-se a suposição inicial
(nao sei como proceder)
Então, para números muito grandes, superior a ordem de grandeza de
10^5, o valor C pode ser desprezados. Exemplo:
X = 100000
(int(log10(x)
, x=1..100000)) 456570.9859
(log10(99999!));
456568.4509
C = 2.5350 (0.0005552% de variação)
log(100000)=5
C < log(100000).
Como a questao se trata do logaritmo de 1 mol, a parcela de desvio pode
ser desprezada pois o erro será menor de que
0.000000000000000001%
Concluímos então que:
Int ( log10(x) , x=1..6,02*10^23 ) é igual
aproximadamente a log10[(6,02*10^23-1)!]
Portanto:
Int ( log10(x) , x=1..6,02*10^23 ) =
14053871809631452780257308.89
Finalmente, 1 mol! Possui aproximadamente 1,4054*10^25
dígitos!!!
P.s -Resultados obtidos através do programa Maple 8
Murilo
RFL Goiânia-GO