4 votos

Calculadora de mano Casio frente a Mathematica en (1+1/n)^n

La calculadora CASIO fx-7400G es muy rápida haciendo $(1+1/1000000)^{1000000}$ con un resultado de $2.718280469$ .

Mathematica (v7) tarda más de un minuto, funcionando en un procesador Intel Core2 Duo, y su resultado es este:

alt text

Con $n=10000000$ se me acabó la paciencia. La calculadora vuelve a ser rápida con una salida de $2.718281693$ .

¿Alguien sabe por qué ocurre esto?

3 votos

Mi conjetura es que la calculadora simplemente utiliza algunos $n$ -ésima aproximación binomial antes de que las cosas se vuelvan demasiado pequeñas para él, por lo que incluso las primeras docenas de sumandos todavía serían muy rápidas de ejecutar, mientras que Mathematica está tratando de darte un resultado preciso que requiere una inmensa cantidad de potencia para calcular.

2 votos

Estoy de acuerdo con Asaf. Mathematica utiliza por defecto el cálculo exacto, no 10 dígitos.

0 votos

Estoy de acuerdo, wolframalpha también lleva mucho tiempo.

7voto

Xetius Puntos 10445

Pruebe

N[1 + 1/100000000000000, 2000]^100000000000000

que hace que Mma hacer el cálculo con números de coma flotante (pero utilizando 2000 dígitos exactos, ¡mucho más que tu calculadora!) en mi ordenador,

In[41]:= Timing[N[1 + 1/100000000000000, 2000]^100000000000000]

Out[41]= {0.001999, 
2.71828182845903164395114517625107361345759538109318401368108700081263
8880450911203511655259489457817904923933478503365902065203002443715271
2825230612837327582882359132201752486932090411441742152459981748434424
6796125955942676709724311384945123182525138185474706841748184641523835
6399319640050121555981826495805200410019220302352025402844917823115708
4890277526840712036588689004850449217720498524694546241483265385120337
3036215908323704165098770345249059641531345794163630084215403881301114
0222776646139077637586730556318554208747513123989912904288599990729397
4105912301684777926066523131379164170616992617301710309080427339172694
8652209704120914116266089477162936814414049552884109177338585344418934
4664761359706737137907335308204793693031274512475102742160130609557028
0606249997104370287581131479088448270923696582800846475772654584603126
9574917252623375481387197279590503661010907784866738170370137382154502
5239391867955746777742097465819430570361920416259681558416618161699424
5237267230224583604177051168028000345047412788448526660107314695031108
5918243291907671190858585383905903649083888525646705126721235172922992
7474539583108858881111281802649615453982269311194004892438663488977893
2481678450112257387961011092938028584251024526367562391996230685117325
0436239706780584781622006285082275199325910403142256578320132681839729
1241283875634170613592405031777334496908146321259758762276254422018659
2501711558155518458153097538288499261588998555672920722850605105301158
3203321297849315979775985916474141976627081937753054953188751346134290
6581791976723248211158139510858187401773833843382750617470712252506403
3501718283248275223376526908879174360214195321187111170739858908536480
0084276450965142494861141929264441784847261049017482036450996057648280
0994695573343998546256052750841029336112669690421548936514156835398676
3390097789579643086512481978170502348966487726085752931492687574582562
2555386293362518511636564659786083245494967887013590756572099854766124
625831647757374695456737571}

tarda 0,002 segundos.

0 votos

Incluso Timing[((1 + 1/#)^#) &[N[10^20, 5000]]] en un abrir y cerrar de ojos en mi netbook (relativamente lento).

3 votos

De hecho, en estas situaciones formatear la salida para imprimirla suele llevar más tiempo en Mma ¡que realmente lo computan!

0 votos

Si quieres más dígitos tienes que aumentar $n$ en $(1+1/n)^n$ ; su observación es que $n=100000000000000$ sólo te da 14 dígitos correctos. Por cierto, estás diciendo N[(1 + 1/10^14)^(10^14), 20] pero usé N[(1 + 1/10^14), 20]^(10^14) que es diferente.

6voto

David HAust Puntos 2696

Los sistemas de álgebra computacional de propósito general, a diferencia de la mayoría de las calculadoras, son capaces de realizar tanto cálculos exactos/simbólicos (por ejemplo, aritmética entera exacta) como cálculos numéricos aproximados (por ejemplo, coma flotante). Por lo tanto, si presentas el problema en términos exactos, como en el caso anterior, conservarán esa forma para no perder información. Así, su problema se interpretará como un cálculo en aritmética racional exacta, es decir, elevar un número racional a una potencia entera. Si, por el contrario, desea una aproximación real del resultado, deberá especificarlo explícitamente, por ejemplo, utilizando N[...] en Mma. Ésta no es más que una de las muchas complejidades que surgen cuando se pasa de sistemas de cálculo de propósito especial (por ejemplo, calculadoras) a sistemas de álgebra computacional de propósito general (hablo como alguien que a menudo ha intentado abordar complejidades menos triviales de este tipo mientras trabajaba como desarrollador del sistema de álgebra computacional Macsyma).

2voto

Jeff Fritz Puntos 151

Creo que su calculadora podría utilizar $$ a^b = \exp(b\ln a)$$ junto con $\exp$ y $\ln$ tablas para acelerar las cosas.

Sé que yo lo haría =)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X