Matemáticas &&Python

download Matemáticas &&Python

of 8

Transcript of Matemáticas &&Python

  • 7/31/2019 Matemticas &&Python

    1/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 1

    Revista 360 / N o.7/ 2012

    Matemticas &&PythonPor: Csar A. Giraud Prez

    Stop teaching calculating; start teaching math -- Conrad WolframStay 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.

  • 7/31/2019 Matemticas &&Python

    2/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 2

    Revista 360 / N o.7/ 2012

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

    http://www.python.org/http://numpy.scipy.org/http://numpy.scipy.org/http://www.python.org/
  • 7/31/2019 Matemticas &&Python

    3/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 3

    Revista 360 / N o.7/ 2012

    # 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 utilizarfrom 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 = . De la misma forma si

    tuviramos una matriz ; 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.

  • 7/31/2019 Matemticas &&Python

    4/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 4

    Revista 360 / N o.7/ 2012

    # 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 matricesA = 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]]

  • 7/31/2019 Matemticas &&Python

    5/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 5

    Revista 360 / N o.7/ 2012

    # 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 incorrectoA = 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 55.4 38.87]

    [ 106.56 87.78 104.52]]

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

  • 7/31/2019 Matemticas &&Python

    6/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 6

    Revista 360 / N o.7/ 2012

    # 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

  • 7/31/2019 Matemticas &&Python

    7/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 7

    Revista 360 / N o.7/ 2012

    # Matriz cero o nula se puede crear con la funcin zeros((a,b))# La matriz identidad s e puede crear con la funcin eye(a)

    print "Por ejemplo una matriz nula 4 x 4" print zeros (( 4 , 4 ))

    print "La matriz identi dad 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/

    http://www.scipy.org/http://www.scipy.org/http://matplotlib.sourceforge.net/index.htmlhttp://matplotlib.sourceforge.net/index.htmlhttp://www.scipy.org/http://matplotlib.sourceforge.net/index.htmlhttp://code.google.com/p/sympy/http://code.google.com/p/sympy/http://matplotlib.sourceforge.net/index.htmlhttp://www.scipy.org/
  • 7/31/2019 Matemticas &&Python

    8/8

    Universidad Interamericana de Puerto Rico - Recinto de Ponce 8

    Revista 360 / N o.7/ 2012

    Para concluir, veamos una implementacin bsica del Algoritmo de Euclides en Python.

    # coding: utf-8 # Algoritmo de Euclides # Calcular el MCD (mximo co mn 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 dehttp://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 dehttp://docs.python.org/library/index.html

    Csar A. Giraud Prez , [email protected] Especialista en Sistemas de Informacin. UniversidadInteramericana de Puerto Rico Recinto de Ponce.

    mailto:[email protected]:[email protected]:[email protected]