Métodos Numéricos con Python y los Super Amigos

Documentos relacionados
Informe de Segunda Presentación

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Principios de Computadoras II

GUÍA BÁSICA DE SCHEME v.4

Computación II. Introducción a Visual Basic

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Lección 2 Introducción al lenguaje C

PHP: Lenguaje de programación

Introducción a Python (3.x)

El lenguaje C. 1. Identificadores, constantes y variables

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Desarrollo de un intérprete del lenguaje Python

MANUAL DE USUARIO PYTHON-PROYECTO: BOLICHE INDICE DESCRIPCIÓN DEL PROGRAMA

Elementos de un programa en C

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Elementos léxicos del lenguaje de programación Java

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Introducción a los Computadores (CNM-130) Estructuras selectivas en Matlab

Preliminares. Tipos de variables y Expresiones

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

1 ELEMENTOS BASICOS DEL LENGUAJE

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Ficha de Aprendizaje N 13

Presentación del curso

Shell Script Sistemas Operativos III - ITS EMT - CETP

4. Operadores Operador asignación

Introducción a PYTHON. Cesar Husillos & Víctor Terrón. Abril de 2014

El lenguaje de programación PHP Tipos de Datos. Semestre: A-2010

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Java para programadores

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Programación en java. Estructuras algorítmicas

Curso de Programación Avanzada en C

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Programando con Pl/Python

Datos y tipos de datos

Introducción al lenguaje de programación java

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

PHP HypertextPreProcessor

Tema IV El lenguaje de programación PHP Tipos de Datos

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

1 Estructura básica de un programa C++

Álgebra y Matemática Discreta Sesión de Prácticas 1

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Lección: Lenguaje de Programación JULIA

Curso de Java Introducción a la Programación III

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Manual de turbo pascal

Objetivo de aprendizaje del tema

Tema 2. El lenguaje de programación Java (Parte 1)

U i n d id d a 3. El Element os á bá i s cos de un programa

Características de Lenguajes de Scripts

PROGRAMACIÓN EN PYTHON 2. Clara Higuera Laboratorio Integrado de Biofísica y Bioinformática Nov-2015

Estructuras básicas de la programación en Java

Programación. Test Autoevaluación Tema 3

Introducción a la programación en R

Tema: Entorno a C# y Estructuras Secuenciales.

INICIACIÓN A LA PROGRAMACIÓN II

Tema 3.- Predicados y sentencias condicionales

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Tema 2. El lenguaje JAVA

Lenguaje de programación C. Introducción

Curso Introducción JAVA Pág.: 1

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

PRÁCTICA MANEJO INTERNO DE DATOS

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

El lenguaje Python. Programación Declarativa Avanzada. Curso

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Tema: Tipos de datos y conversiones

SAGE es un programa de software matemático libre de usar, modificar y distribuir.

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Programación En Lenguaje C

Representación de la información

OPERADORES Y EXPRESIONES

Métodos Estadísticos de la Ingeniería Práctica 1: Introducción a R

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Tema 7: Programación con Matlab

Algorítmica. Curso 2009/2010. Seminario de Python 3 y El problema del Río Congo

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Expresiones y sentencias

Tipos de Datos de python (1ª parte):

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

FUNDAMENTOS DE INFORMÁTICA

Transcripción:

Métodos Numéricos con Python y los Super Amigos Departamento de Matemáticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft 2010. Reproducción permitida bajo los términos de la licencia de documentación libre GNU.

Contenido 1 Introducción 2 Operadores 3 Variables y formatos 4 Scripts y funciones

Aspectos generales http://www.python.org/ Lenguaje de programación de alto nivel, interpretado Creado por Guido van Rossum a principios de los años 90 Multiplataforma (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) Software libre: Python Software Foundation License (PSFL) Tipado dinámico Fuertemente tipado Orientado a objetos

Los Super Amigos (software adicional para Python) NumPy: paquete fundamental para computación científica SciPy: librería para computación científica (extiende a NumPy) matplotlib: librería para gráficos 2D (soporta gráficos 3D también) Mayavi: librería para gráficos y visualización de datos 3D ipython: consola interactiva para python

Lenguajes de programación más populares Imagen tomada de http://www.tiobe.com/

Instalación de la Liga de la Justicia GNU/Linux (distribuciones basadas en debian): sudo apt-get install ipython python-scipy python-matplotlib mayavi2 \ python-sympy cython python-networkx python-pexpect python-nose \ python-setuptools python-sphinx python-pygments \ python-twisted python-foolscap sudo apt-get build-dep python python-scipy python-matplotlib mayavi2 \ cython Windows y Mac OSX: Enthought Python Distribution http://www.enthought.com/products/epd.php (distribución gratuita para fines académicos)

Iniciando sesión en GNU/Linux Sesión de Python $ python Python 2.5.2 (r252:60911, Jan 20 2010, 23:33:04) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Sesión de ipython $ ipython Python 2.5.2 (r252:60911, Jan 20 2010, 23:33:04) Type "copyright", "credits" or "license" for more information. IPython 0.8.4 -- An enhanced Interactive Python.? -> Introduction and overview of IPython s features. %quickref -> Quick reference. help -> Python s own help system. object? -> Details about object.?object also works,?? prints more. In [1]:

Iniciando sesión de ipython en Windows

Operadores aritméticos Operador Operación Ejemplo Resultado ** Potencia 2 3 8 * Multiplicación 7 3 21 / División 10.5/2 5.25 // División entera 10.5//2 5.0 + Suma 3 + 4 7 - Resta 6 8 2 % Módulo (residuo) 15%6 3 Operador Jerarquía () (mayor) ** *, /, //,% +, - (menor) In [1]: 3+4 Out[1]: 7 In [5]: 5.0/(10*2+5) Out[5]: 0.20000000000000001 In [2]: 3/4 Out[2]: 0 In [6]: 2**3**2 Out[6]: 512 In [3]: 3.0/4.0 Out[3]: 0.75 In [7]: (2**3)**2 Out[7]: 64 In [4]: 5.0/10*2+5 Out[4]: 6 In [8]: 17%3%2 Out[8]: 0

Operadores relacionales (de comparación) Tipos de datos lógicos: False (0) True (1) Operador Operación Ejemplo Resultado == Igual a 4 == 5 False!= Diferente de 2!=3 True < Menor que 10 < 4 False > Mayor que 5>-4 True <= Menor o igual que 7<=7 True >= Mayor o igual que 3.5 >= 10 False In [9]: 1+2>7-3 Out[9]: False In [13]: 3>4<5 Out[13]: False In [10]: 1<2<3 Out[10]: True In [14]: 1.0/3<0.33333 Out[14]: False In [11]: 1>2==2<3 Out[11]: False In [15]: 5.0/3>=11/7.0 Out[15]: True In [12]: 1>(2==2)<3 Out[12]: True In [16]: 2**(2/3)<3**(3/4) Out[16]: True

Operadores lógicos (booleanos) Operador Operación Ejemplo Resultado and conjunción False and True False or disyunción False or True True not negación not True False A B A and B A or B not A True True True True False True False False True False False True False True True False False False False True Operador Jerarquía () (mayor) ** *, /, //,% ==,!=, <, >, <=, >= not and or (menor) In [17]: False and True or True Out[17]: True In [20]: 5*4 > 4 and 0 < 3 Out[20]: True In [18]: 0 and 1 or 1 Out[18]: 1 In [21]: True or (2 == 1+2) == True Out[21]: True In [19]: 0 and (1 or 1) Out[19]: 0 In [22]: 2**(3 and 0/5)>45%6 Out[22]: False

Tipos de datos Tipo Descripción bits Rango Ejemplo bool booleano 8 sin rango True o False h i int entero 16 2 15,2 15 1 327 long int entero largo 32 float real (punto flotante) 32 complex complejo 32 str string (cadena) 32 tuple tupla 32 list lista 64 dict diccionario 80 h i 0, 2 32 1 24334253234L h i 2 31,2 31 1 3.1416 h i 0, 2 32 1 3.0 + 4.0j h i 2 31,2 31 1 hola h 3.4 10 38, 3.4 10 38i (1, aja, 2.0) h 1.7 10 308, 1.7 10 308i [1, aja, 2.0] h 3.4 10 4932, 3.4 10 4932i a :7.0, 23: True

Identificadores y palabras reservadas Palabras reservadas and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def finally in print del Identificadores Nombres que hacen referencia a los objetos que componen un programa: constantes, variables, funciones, etc. Reglas para construir identificadores: El primer carácter debe ser una letra o el carácter de subrayado El primer carácter puede ir seguido de un número variable de dígitos numéricos, letras o carácteres de subrayado No pueden utilizarse espacios en blanco, ni símbolos de puntuación Python distingue mayúsculas y minúsculas No pueden utilizarse palabras reservadas del lenguaje

Variables In [23]: base = 2 In [30]: a=2*a In [24]: print base 2 In [31]: area == 2*a Out[31]: True In [25]: print "base" Out[25]: base In [32]: x = "uno"; y = "dos" In [26]: base = base + 1 In [33]: x Out[33]: uno In [27]: base Out[27]: 3 In [34]: print x uno In [28]: alt = 4 In [35]: x+y Out[35]: unodos In [29]: area = base*alt; a=3 In [36]: print x+y unodos

Listas y tuplas In [37]: milista=[a, "hola", 3.0, True] In [38]: milista Out[38]: [3, hola, 3.0, True] In [39]: milista[0] Out[39]: 3 In [44]: milista Out[44]: [2.0, hola, 3.0, True] In [45]: milista[-1] Out[45]: True In [46]: milista.append("otro") In [40]: milista[1] Out[40]: hola In [47]: milista Out[47]: [2.0, hola, 3.0, True, otro ] In [41]: milista[2] Out[41]: 3.0 In [48]: milista[:2] Out[48]: [2.0, hola ] In [42]: milista[1:3] Out[42]: [ hola, 3.0] In [49]: milista[1:] Out[49]: [ hola, 3.0, True, otro ] In [43]: milista[0] = 2.0 In [50]: lista2[]

Listas y tuplas In [51]: milista=[a, "hola", 3.0, True] In [52]: lista2 Out[52]: [] In [53]: lista2.insert(1,"a") In [58]: lt Out[58]: (1, 2, True, python ) In [59]: lt[0]=3 ----------------------------------------------------- TypeError Traceback (most recent call last) TypeError: tuple object does not support item assignment In [54]: lista2 Out[54]: [ a ] In [55]: lista2.insert(2,"b") In [60]: 3 in lt Out[60]: False In [61]: range(8) Out[61]: [0, 1, 2, 3, 4, 5, 6, 7] In [56]: lista2 Out[56]: [ a, b ] In [62]: range(3,7) Out[62]: [3, 4, 5, 6] In [57]: lt = (1, 2, True, "python") In [63]: range(4,10,2) Out[63]: [4, 6, 8]

Conversiones de tipo, funciones básicas Operación Descripción Función Descripción int(x) Convierte x a entero abs(x) Valor absoluto de x long(x) Convierte x a entero largo max(sucesion) Mayor elemento de sucesion float(x) Convierte x a punto flotante min(sucesion) Menor elemento de sucesion complex(x) Convierte x al complejo x+0j round(x,n) Redondea al decimal n complex(x,y) Convierte al complejo x+yj cmp(x,y) Retorna -1, 0, 1 si x<y, x==y, x>y In [64]: x = -5 In [65]: y = 4 In [66]: p = 3.1416 In [67]: z = 6.3 In [68]: print int(p) 3 In [69]: abs(x) 5 In [70]: print float(z) 6.0 In [71]: complex(x) Out[60]: (-5+0j) In [72]: complex(x,y) Out[72]: (-5+4j) In [73]: print round(p,2) 3.14 In [74]: cmp(x,y) Out[74]: -1

Instrucciones de entrada/salida Entrada de datos: raw input("entrada"): lee una línea de entrada que es convertida a string eval(string): convierte string en un valor numérico In [75]: a = raw input("ingrese a: ") Ingrese a: 2 In [80]: print b, type(b) Out[80]: 2 <type int > In [76]: print a Out[76]: 2 In [81]:s=eval(raw input("ingrese s: ")) Ingrese a: 2*3 In [77]: a Out[77]: 2 In [82]: print s, type(s) Out[82]: 6 <type int > In [78]: type(a) Out[78]: <type str > In [79]: b = eval(a) In [83]:m=eval(raw input("ingrese m: ")) Ingrese a: hola ----------------------------------------------------- TypeError Traceback (most recent call last) TypeError: name hola is not defined

Instrucciones de entrada/salida Salida de datos: print objeto1, objeto2,... print "%formato1 %formato2 " % tupla Entero Punto flotante Notación exponencial d f e In [84]: u = 6543 In [88]: print "v = %7.2f" % v v = 1234.57 In [85]: v = 1234.56789 In [86]: print u, v 6543 1234.56789 In [88]: print "v = %9.2f" % v v = 1234.57 In [88]: print "v = %7.8f" % v v = 1234.56789000 In [87]: print "u = %6d" % u u = 6543 In [81]: print "v = %.2e" % v v = 1.23e+03 In [88]: print "u = %06d" % u u = 006543 In [81]: print "u=%6d y v=%8.4e" % (u,v) u= 6543 y v=1.2346e+03

Programas Scripts: Archivos de texto plano sin formato Tiene extensión.py Contienen una sucesión de comandos de Python No tienen parámetros ( argumentos ) de entrada ni de salida Las variables definidas en los scripts son globales Funciones: Secuencia de sentencias que ejecuta una operación deseada y tiene un nombre Las funciones tienen sintaxis especial Tienen parámetros ( argumentos ) de entrada y de salida Las variables definidas en funciones son locales

Editores en Linux Gedit: http://projects.gnome.org/gedit/

Editores en Linux Pymacs (Emacs + Python): http://pymacs.progiciels-bpi.ca/

Editores en Linux Geany: http://www.geany.org/

Editores en Linux SPE (Stani s Python Editor): http://pythonide.blogspot.com/

Editores en Linux Erik: http://eric-ide.python-projects.org/

Editores en Windows Gedit: http://projects.gnome.org/gedit/

Editores en Windows IDLE

HolaMundo1.py HolaMundo2.py # Progarma hola mundo, version "emo" #! /usr/bin/env python print " Hola, maldito mundo!" print " Hola, maldito mundo!" invitado@matematicas06: /scripts ls -l total 12 -rw-r--r-- 1 invitado invitado 68 2010-02-03 14:02 HolaMundo1.py -rw-r--r-- 1 invitado invitado 54 2010-02-03 14:03 HolaMundo2.py invitado@matematicas06: /scripts chmod a+x HolaMundo2.py invitado@matematicas06: /scripts ls -l total 12 -rw-r--r-- 1 invitado invitado 68 2010-02-03 14:02 HolaMundo1.py -rwxr-xr-x 1 invitado invitado 54 2010-02-03 14:03 HolaMundo2.py invitado@matematicas06: /scripts python HolaMundo1.py Hola, maldito mundo! invitado@matematicas06: /scripts./holamundo2.py Hola, maldito mundo!

HolaMundo3.py #! /usr/bin/env python # Programa hola mundo version matematica import sys, math # carga sistema y modulo matematico r = float(sys.argv[1]) # extrae argumento de la linea de comandos s = math.cos(r) print "Hola, maldito Mundo! cos("+ str(r) + ")="+ str(s) invitado@matematicas06: /scripts ls -l total 12 -rw-r--r-- 1 invitado invitado 68 2010-02-03 14:02 HolaMundo1.py -rw-r--r-- 1 invitado invitado 54 2010-02-03 14:03 HolaMundo2.py -rw-r--r-- 1 invitado invitado 267 2010-02-03 14:06 HolaMundo3.py invitado@matematicas06: /scripts chmod a+x HolaMundo3.py invitado@matematicas06: /scripts ls -l HolaMundo3.py -rwxr-xr-x 1 aleph aleph 267 2010-02-03 14:06 HolaMundo3.py invitado@matematicas06: /scripts./holamundo3.py 0 Hola, maldito Mundo! cos(0.0)=1.0

Ejemplos de scripts Ejemplo 4.1 (Promedio de dos números) Escriba un programa (script) en Python que reciba como entradas dos números A y B y calcule su promedio. Solución promedio.py # Calcula el promedio de dos numeros # Lee los valores de A y B A = eval(raw input("ingrese A: ")) B = eval(raw input("ingrese B: ")) # Calcula el promedio PROM = (A+B)/2.0; # Imprime el promedio print "El promedio de %f y %f es %f" % (A, B, PROM)

Ejemplos de scripts Ejemplo 4.2 (Área y perímetro de un rectángulo) Escriba un programa (script) en Python tal que dado como datos la base y la altura de un rectángulo, calcule su perímetro y área. Solución rectangulo.py # Calcula el area y perimetro de un rectangulo % Lee los valores de la base y la altura BASE = eval(raw input("ingrese la base: ")) ALTURA = eval(raw input("ingrese la altura: ")) AREA = BASE*ALTURA; PERIMETRO = 2.0*(BASE+ALTURA); print "El área es %f y el perímetro es %f" % AREA, PERIMETRO);

Funciones Sintaxis de una función def NOMBRE( LISTA DE PARAMETROS ): SENTENCIAS In [94]: def suma(x,y):...: print x+y...:...: In [95]: suma(2,3) 5 In [96]: a = -4 In [97]: b = 5 In [98]: suma(a,b) 1 In [99]: suma(abs(-2),-3) -1 In [100]: def deja espacio():...: print # linea vacia...:...: In [101]: 8*3; deja espacio(); 2*3 Out[101]: 24 Out[101]: 6 In [102]: deja espacio(3) ----------------------------------------------------- TypeError Traceback (most recent call last) TypeError: deja espacio() takes no arguments (1 given)

Funciones definidas en scripts Ejemplo 4.3 (Promedio de dos números) Escriba una función en Python que reciba como entradas dos números A y B y calcule su promedio. Solución promedio.py # Funcion que calcula el promedio de dos numeros def prom(a,b): C = (A+B)/2.0 print "El promedio de %f y %f es %f" % (A, B, C) In [103]: from promedio import * In [104]: prom(2,3) El promedio de 2.000000 y 3.000000 es 2.500000

Ejemplos de scripts Ejemplo 4.4 (Área y perímetro de un rectángulo) Escriba un script en Python que contenga funciones que calculen el perímetro y el área de un rectángulo, dados su base y altura. Solución rectangulo.py def area(base,altura): ar = base*altura print "El area es %f" % ar def perimetro(base,altura): per = 2.0*(base+altura) print "El perimetro es %f" % per In [103]:from rectangulofun import area In [107]: ar ----------------------------------------------------- NameError Traceback (most recent call last) NameError: name ar is not defined In [108]: perimetro(2,3) ----------------------------------------------------- NameError Traceback (most recent call last) NameError: name perimetro is not defined In [103]:from rectangulofun import perimetro In [104]: area(2,3) El area es 6.000000 In [104]: perimetro(2,3) El perimetro es 10.000000

Referencias J. Elkner, A. Downey, C. Meyers How to Think Like a Computer Scientist: Learning with Python http://openbookproject.net//thinkcspy/index.html R. Gonzáles Python para todos http://mundogeek.net/tutorial-python/ J. Kiusalaas Numerical Methods in Engineering with Python Cambridge University Press, 2005