Está en la página 1de 8

1

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

. De la misma forma si

; i.e. la matriz 2 x 2

, 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.

matplotlib: librera para la creacin de grficas. Permite utilizarTeX /LaTeX.

http://www.scipy.org/

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

También podría gustarte