Sei sulla pagina 1di 8

Universidad Interamericana de Puerto Rico - Recinto de Ponce

Matemticas &&Python
Por: Csar A. Giraud Prez
Stop teaching calculating; start teaching math -- Conrad Wolfram Stay hungry, stay foolish-- Steve Jobs

Introduccin

Tradicionalmente las matemticas son asociadas con papel, lpiz y sentarse a realizar procedimientos y frmulas con el fin de obtener un resultado. An en nuestra era del siglo XXI y con los avances tecnolgicos alcanzados, la percepcin de lo que son las matemticas sigue relativamente igual a lo que era en el pasado. Lo ideal sera eliminar la parte mecnica de resolver ejercicios y dar un enfoque distinto al aprendizaje; un enfoque donde se fomente ms el anlisis, la formulacin de problemas y la solucin de problemas que seran en trminos prcticos imposibles de resolver mediante mtodos tradicionales. He aqu donde entra la rama de la matemtica computacional. Existen varios programas dirigidos a la matemtica computacional, entre ellos Wolfram Mathematica, Matlab y Maple; este artculo expone al lenguaje Python como una alternativa a la entrada del mundo de la matemtica computacional.

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce Python && Algebra Lineal Python fue diseado para finales de la dcada del 1980 por Guido Van Rossum, como sucesor al lenguaje ABC.Python es un lenguaje de programacin de propsito general es decir que puede ser utilizado para varios propsitos ya sea web, bases de datos, clculos,

etc. Python se caracteriza por tener una sintaxis limpia y relativamente fcil de entender en comparacin con otros lenguajes de programacin, como por ejemplo C++. En este artculo estaremos utilizando los siguientes recursos: (*Nota: Todos estos recursos son cdigo libre y libres de costo) Python: lenguaje de programacin http://www.python.org/

Numpy: Librera para la manipulacin de matrices n - dimensionales http://numpy.scipy.org/

Se exhorta al lector a buscar la documentacin oficial que se encuentra en los enlaces dados arriba como referencia, en caso de tener duda con el cdigo presentado. A travs del documento se utilizan instrucciones similares de diferentes formas como mtodo de aprendizaje. Comenzamos con el encabezado de nuestro archivo de Python y varios ejemplos simples de lgebra lineal. Todos los fragmentos presentados tienen comentarios explicando el cdigo. (*Nota: En este caso el archivo es llamado article.py. Los archivos de Python tienen la extensin .py).

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce


# # # # #

El smbolo # se utiliza en Python para escribir comentarios article.py autor: Csar A. Giraud Esta instruccin permite tener acentos en los comentarios de Python coding: utf-8

# Primero importar las libreras que se van a utilizar from numpy import * from numpy.linalg import *

En programacin las matrices son representadas por un tipo de data llamada arreglos que se denotan como a [ ]. Por ejemplo podemos definir un arreglo A = [1, 2, 3]; este arreglo es equivalente a la matriz 1 x 3; B = tuviramos una matriz ; i.e. la matriz 2 x 2 . De la misma forma si

, la podramos representar como un arreglo de la forma D = [[7, 2], [10 ,9]]. Considerando la matriz C arriba podemos referirnos a cada elemento como

; anlogamente podemos referirnos a cada elemento del arreglo D, de la forma; D [0, 0] = 7, D [0, 1] = 2, D [1, 0] = 10, D [1,1] = 9. En los ejemplos prximos, se utiliza la funcin array( ), de la librera Numpy; ya que facilita la creacin y manipulacin de matrices.

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce


# Crear una matrix 2 X 2 y multiplicarla por un escalar # La funcin array([]) permite la creacin de matrices

# La funcin print se utiliza para mostrar resultados en la pantalla. # i.e. - print a mostrara en pantalla en valor de la variable a # print El valor de a= escribir el texto entre en la pantalla. # Suma, resta, multiplicacin y divisin se expresan: +, - , * , / # i.e. a = 2 + 2, b = 2 2, c = 2 * 2, d = 2/2 A = array([(1,2),(3,4)]) print "Ver la matriz original" print A print "Multiplicacin por un escalar" print 2*A -------------------------------------------------Ver la matriz original [[1 2] [3 4]] Multiplicacin por un escalar [[2 4] [6 8]] # Sumar y restar 2 matrices A = array([(3,7),(10,4)]) B = array([(5,14),(13,11)]) print "A= \n", A print "B= \n", B print "A+B = " print A+B print "A-B =" print A-B
Resultados -------------------------------------------------A= [[ 3 7] [10 4]] B= [[ 5 14] [13 11]] A+B = [[ 8 21] [23 15]] A-B = [[-2 -7] [-3 -7]]

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce

# Multiplicacin de matrices # Para la multiplicacin de matrices se utiliza la funcin dot() # Por ejemplo A.dot(B) donde A y B son matrices # No se utiliza la notacin A*B por que dar un resultado incorrecto A = array([(3.,6.7,0.50), (7.2,5.,10.2), (8.7,0.15,9.1)]) B = array([(5.,10.7,3.6), (9.9,8.,5.2), (7.7,0.75,9.7)]) C = array([(7.1,1.5,2.2),(8.6,5.9,4.4)]) print "A= \n", A print "B= \n", B print "C= \n", C print "Resultado incorrecto: AxB = " print A*B print "Resultado correcto: AxB = " print A.dot(B) print "CxA = " print C.dot(A) print "Obtenemos un error si tratamos de hacer una multiplicacin no definida" print A.dot(C) Resultados -------------------------------------------------A= [[ 3. 6.7 0.5 ] [ 7.2 5. 10.2 ] [ 8.7 0.15 9.1 ]] B= [[ 5. 10.7 3.6 ] [ 9.9 8. 5.2 ] [ 7.7 0.75 9.7 ]] C= [[ 7.1 1.5 2.2] [ 8.6 5.9 4.4]] Resultado incorrecto: AxB = [[ 15. 71.69 1.8 ] [ 71.28 40. 53.04 ] [ 66.99 0.1125 88.27 ]] Resultado correcto: AxB = [[ 85.18 86.075 50.49 ] [ 164.04 124.69 150.86 ] [ 115.055 101.115 120.37 ]] CxA = [[ 51.24 [ 106.56 55.4 87.78 38.87] 104.52]]

Obtenemos un error si tratamos de hacer una multiplicacin no definida print A.dot(C) ValueError: matrices are not aligned

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce


# # # # # # # # Transpuesta, determinante y sistemas de ecuaciones La transpuesta se calcula con la funcin .transpose() El determinante se calcula con la funcin det(a) La funcin solve(a,b) resuelve sistemas de ecuaciones Considere el siguiente ejemplo: 2x + y - z = 1 2y + 3z = 5 x + y + z = 7

A = array([[2,1,-1], [0,2,3], [1,1,1]]) x = array([[1],[5],[7]]) print "A = \n", A print "La transpuesta de A = " print A.transpose() print "El determinante de A =", det(A) print "La solucin al sistema de ecuaciones sera:" S = solve(A,x) print S print "Por lo tanto x =", S[0,0], ", y =", S[1,0], ", z =", S[2,0] -------------------------------------------------A = [[ 2 1 -1] [ 0 2 3] [ 1 1 1]] La transpuesta de A = [[ 2 0 1] [ 1 2 1] [-1 3 1]] El determinante de A = 3.0 La solucin al sistema de ecuaciones sera: [[ 8.] [-8.] [ 7.]] Por lo tanto x = 8.0, y = -8.0, z = 7.0

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce


# Matriz cero o nula se puede crear con la funcin zeros((a,b)) # La matriz identidad se puede crear con la funcin eye(a) print "Por ejemplo una matriz nula 4 x 4" print zeros((4,4)) print "La matriz identidad 6 x 6" print eye(6) -------------------------------------------------Por ejemplo una matriz nula 4 x 4 [[ 0. 0. 0. 0.] [ 0. 0. 0. 0.] [ 0. 0. 0. 0.] [ 0. 0. 0. 0.]] La [[ [ [ [ [ [ matriz identidad 6 x 6 1. 0. 0. 0. 0. 0.] 0. 1. 0. 0. 0. 0.] 0. 0. 1. 0. 0. 0.] 0. 0. 0. 1. 0. 0.] 0. 0. 0. 0. 1. 0.] 0. 0. 0. 0. 0. 1.]]

Podemos darnos cuenta rpidamente de la flexibilidad y capacidad que brinda utilizar un lenguaje de programacin como Python para resolver problemas matemticos. Adems de contar con la librera Numpy para la manipulacin de arreglos/matrices, existen otras libreras enfocadas en las matemticas y computacin cientfica, entre ellas: SciPy: librera con mdulos para optimizacin, estadstica, interpolacin, entre otros. http://www.scipy.org/

matplotlib: librera para la creacin de grficas. Permite utilizarTeX /LaTeX. http://matplotlib.sourceforge.net/index.html

Sympy: librera para matemtica simblica. http://code.google.com/p/sympy/

Revista 360/ No.7/ 2012

Universidad Interamericana de Puerto Rico - Recinto de Ponce Para concluir, veamos una implementacin bsica del Algoritmo de Euclides en Python.
# coding: utf-8 # Algoritmo de Euclides # Calcular el MCD (mximo comn divisor) de dos nmeros # Los valores a los cuales se les busca el MCD a = 2812 b = 95 x = a y = b # El ciclo se ejecuta hasta que se encuentra el MCD while x != y: if x>y: x = x-y if x<y: y = y-x print "El MCD entre %s" % a + " y %s" % b + " es: %s" % x -------------------------------------------------El MCD entre 2812 y 95 es: 19

Referencias Euclidean algorithm. (2012). Recuperado de http://en.wikipedia.org/wiki/Euclidean_algorithm Langtangen, H. P. (2011). A primer on scientific programming with Python (2nd ed.). London: Springer. The Python Standard Library. (2011). Recuperado de http://docs.python.org/library/index.html

Csar A. Giraud Prez, cgiraud@ponce.inter.edu Especialista en Sistemas de Informacin. Universidad Interamericana de Puerto Rico Recinto de Ponce.

Revista 360/ No.7/ 2012

Potrebbero piacerti anche