Python y la suma de una progresión aritmética!


Anécdota Histórica

Carl Friedrich Gauss el Principe de las Matematicas

Gauss no por nada le llamaban el Príncipe de las matemáticas,acuñado en una moneda, con que el rey Jorge V de Hannover honró a Gauss tras su muerte. Según E.T Bell, y es una opinión compartida por la mayoría de los historiadores de la ciencia, Gauss junto a Arquímedes y Newton ocuparía el podium de los grandes genios de las matemáticas a lo largo de la Historia….

A los nueve años Gauss asiste a su primera clase de Aritmética. Büttner propone a su centenar de pupilos un problema terrible: calcular la suma de los cien primeros números. Nada más terminar de proponer el problema, el jovencito Gauss traza un número en su pizarrín y lo deposita en la mesa del maestro exclamando: “Ligget se!” (¡Ahí está!). Había escrito 5.050. La respuesta correcta.

Ante los ojos atónitos de Büttner y del resto de sus compañeros, Gauss había aplicado, por supuesto sin saberlo, el algoritmo de la suma de los términos de una progresión aritmética. Se había dado cuenta de que la suma de la primera y la última cifra daba el mismo resultado que la suma de la segunda y la penúltima, etc., es decir: 1+ 100 = 2 + 99 = 3 + 98 = … = 101

Como hay 50 parejas de números de esta forma el resultado se obtendrá multiplicando 101 *  50 = 5.050

Ligget se!”

Lo que me llevo a escribir este post fue ese anecdota!!!

Revisando algunos ejemplo de python, poniéndome a tono con el lenguaje o como dicen algunos sobresaturandome de información a ver si veo como hacer algo de una manera diferente :D, me encontré con el siguiente programita:

##Imprimir los numeros del 1 al 100 y calcular la suma de todos los nuumeros

###pares por un lado, y por otro, la de los impares.

n = 1

p = 0

i = 0

while n <= 100:

    print n,

    if n%2 == 0:

        p += n

    else:

        i += n

    n += 1

print '\nLa suma de los pares es igual a %i' % p

print 'La suma de los impares es igual a %i' % i

El programa como su comentario lo indica imprime los números pares de un lado y por otro lado los impares, aunque también imprime a “n” que para lo que les quiero contar no nos interesa, por lo que yo elimine esa linea y agregue otra nombrándolo como sumaNumeros.py un nombre muy original que se me ocurrió en mis 5 minutos de estado alfa 😀 así:


##Imprimir la suma de los numeros pares en una linea luego la de os impares en otra y luego el gran total 😀

n = 1

p = 0

i = 0

while n <= 10:

  if n%2 == 0:

    p += n

  else:

    i += n

  n += 1

print '\nLa suma de los pares es igual a %i' % p

print 'La suma de los impares es igual a %i' % i

print '\nEL gran total es:'

print p+i


lo que ejecutándolo así:

python sumaNumeros.py

me da la siguiente información:

La suma de los pares es igual a 30

La suma de los impares es igual a 25

EL gran total es:

55

Ahora si cambiamos la linea donde encontramos a “while n <= 10:” por “while n <= 100:” nos imprime:

La suma de los pares es igual a 2550

La suma de los impares es igual a 2500

EL gran total es:

5050

Ahora si cambiamos la linea donde encontramos a “while n <= 100:” por “while n <= 1000:” nos imprime:

La suma de los pares es igual a 250500

La suma de los impares es igual a 250000

EL gran total es:

500500

Ahora si cambiamos la linea donde encontramos a “while n <= 1000:” por “while n <= 10000:” nos imprime:

La suma de los pares es igual a 25005000

La suma de los impares es igual a 25000000

EL gran total es:

50005000

Bueno creo yo no hay que ser matemático para darse cuenta de una progresión matemática aquí, pero lo que me gusto fue un estudio que hicieron en un libro matemático no recuerdo cual fue si matemáticas estas ahí? O el diablo de los números o cualquier otro no recuerdo, la cuestión es que si Gauss resolvió el problema de una manera insólita para el momento pero para nuestros tiempos el problema tiene una solución incluso mas insólita y es que si dividimos entre 2 y colocamos los números unos al lado del otro tendríamos el total así:

1+2+3…10000 = 5000:5000 = quitando los puntos =50005000

Y bueno me acabo de dar cuenta que con 50000 pasa algo parecido, la ultima vez que me enfiebre con las matemáticas intentaba solucionar una progresión con los productos de 1 y 2 cifras, por ejemplo si multiplicamos 9×1=9, 9×2=18, 9×3=27, disculpa no te estoy enseñando a multiplicar si estas leyendo esto no quieres ver esto jeje, la cuestión es ahora suma 1+8=9 y 2+7=9, si hacemos todas las progresiones hasta un cierto numero que no voy a decir obtendremos que la suma de los números del producto siempre da 9, esto es lo que me gusta de las matemáticas….

Conclusión

Al programa le falta mucho no sirve para nada :D, podría hacerse un menú y meter 10,100,1000,10000…100000 o hasta donde quieras, esas serian las opciones y así ver los resultados mas claros o hacer una progresión 10,100,1000,10000…100000 no importa luego veré si la hago o si alguien se anima lo podría dejar aquí como comentario 😀

También podríamos dejar aquí el programa con el numero nueve “9” a ver si me animo y lo hago 😀

La cuestión es cambie el numero de la linea donde encontramos a “while n <= 1000:” por “while n <= 10000000000000000000000000000000000000:” nos imprime:

Disculpe no me pude aguantar jejeje :D, su maquina a entrado en trance, no mentira si quiere use “ctrl+c” o “ctrl+d” para parar el proceso o “ctrl+z” el problema como yo lo veo usamos la computadora para cualquier cosa y según lo veo podríamos implementar nuevos algoritmos a las calculadoras para que hagan estos cálculos tan grandes como lo haría un humano 😀 así no tendríamos que esperar tanto por una respuesta para nosotros tan obvia :D, así digo obvio disculpen antes de leer este libro no tenia idea de como sumar estos numero quizá me podría dar cuenta que había trampa pero quizá como la computadora solo no habría llegado a ninguna ecuación matemática que me haga fácil la vida :D, con lo del nueve sucede lo mismo si la computadora sabe que un numero de tantas cifras da un numero cercano a esto correría mucho mas rápido 😀

Espero sea de ayuda o por lo menos hayas pasado un buen rato 😀

Si quieren leer un poco mas de Gauss o python aqui les dejo algunos link:

http://www.slideshare.net/newencec/suma-de-gauss

http://www.ceibal.edu.uy/UserFiles/P0001/ODEA/ORIGINAL/100921_gauss.elp/ancdota_de_la_suma_del_1_al_100.html

http://sferrerobravo.wordpress.com/2007/11/24/gauss-y-la-suma-de-los-n-primeros/

Yo saque la información de aquí:

http://platea.pntic.mec.es/~aperez4/html/sigloxix/Carl%20Friedrich%20Gauss.htm

http://foro.cibernodo.net/tema-c%C3%B3digo-soluci%C3%B3n-de-algunos-ejercicios-en-python

Feliz dia

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s