Download Introducción a Python - División de Ciencias e Ingenierías
Document related concepts
no text concepts found
Transcript
Métodos Numéricos: Enero 2016 Selim Gómez Ávila División de Ciencias e Ingenierías Universidad de Guanajuato 9 de febrero de 2016 / Inicio de cursos 1 / 17 Agenda previa 1. Horario de la clase del viernes: ? 2. Evaluación: Entrega de trabajos (tareas + proyectos) 45% + Exámenes Parciales (4) 45% + Participación en Clase 10% 3. Lo que se presente 2 / 17 Brevísima introducción a Python ▶ ▶ ▶ ▶ ▶ Python es un lenguaje orientado a objetos. El lenguaje no es compilado, sino que utiliza un intérprete. (Menores tiempos de desarrollo.) Es de código abierto, y está disponible para esencialmente cualquier sistema operativo. Una de las prioridades del diseño del lenguaje es la legibilidad del código. Las variables son de tipo dinámico. 3 / 17 Brevísima introducción a Python: operadores & comandos Palabras reservadas en Python: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, with, while, yield . Operaciones aritméticas convencionales, y dos un poco menos convencionales: +, -, *, /, ** % # División modular // # División entera 4 / 17 Brevísima introducción a Python: operadores & comandos Python incluye versiones aumentadas del operador de asignación: +=, -=, *=, /=, **=, %= Por ejemplo, a+=b corresponde a a = a + b. Tenemos también los operadores de comparación convencionales: <, >, <=, >=, ==, != 5 / 17 Brevísima introducción a Python: objetos básicos Cadenas (strings), que son objetos inmutables: string = 'Diagramas de Feynman' # Esto es una cadena Tuplas (tuples), que son inmutables como las cadenas tuple = ('Cadena', 4, (1,2,3) ) # Esto es una tupla Listas (lists), que son análogas a las tuplas, pero son objetos mutables list = [1.0, .0, 3.0] # Esto crea una lista 6 / 17 Brevísima introducción a Python: print Para mostrar información en pantalla usamos print (object1, object2, . . .) Por ejemplo: a = 1234.56789 b = [2, 4, 6, 8] print(a,b) print(’a =’,a, ’\nb =’,b) resulta en las líneas 1234.56789 [2, 4, 6, 8] a = 1234.56789 b = [2, 4, 6, 8] 7 / 17 Brevísima introducción a Python: condicionales La construcción condicional es if condition1: block1 elif condition2: block2 else: block3 El primer bloque se ejecuta si condition1 es verdadera; el segundo si condition2 es verdadera, etcétera. Podemos agregar tantas cláusulas elif como deseemos. El último bloque se ejecuta si ninguna de las cláusulas if-elif. 8 / 17 Brevísima introducción a Python: condicionales Por ejemplo, este programa def sign_of_a(a): if a < 0.0: sign = ’negative’ elif a > 0.0: sign = ’positive’ else: sign = ’zero’ return sign a = 1.5 print ’a is ’ + sign_of_a(a) produce el resultado a is positive 9 / 17 Brevísima introducción a Python: control de flujo Tenemos una construcción while condition : block else: block Y otra for target in sequence: block Por último, tenemos una construcción que detiene la iteración; sirve para “saltar” el resto del bloque, normalmente cuando se satisface una condición. continue 10 / 17 Brevísima introducción a Python: control de flujo x = [] # Esto crea una lista vacía for i in range(1,100): if i%7!= 0: continue # Si i no es divisible por 7, omitir # el resto del bloque x.append(i) # Append i to the list print (x) El programa arroja como resultado [7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98] 11 / 17 Brevísima introducción a Python: ingreso de datos Esta función acepta una línea de input y la convierte a una cadena. input(prompt) Para convertir a un valur numérico, usamos eval(string) Por ejemplo: a = input('Input a: ') print (a, type(a) ) # Print a and its type b = eval(a) print (b,type(b) ) # Print b and its type 12 / 17 Brevísima introducción a Python: archivos file_object = open(filename, action) donde filename es una cadena que identifica el archivo, y acción es una de las siguientes: 'r' 'w' 'a' 'r+' 'w+' 'a+' # # # # # # # Leer un archivo existente. Escribir a un archivo; crearlo si no existe. Adjuntar a un archivo Leer y escribir de un archivo existente Igual que r+, crear archivo si no existe. Igual que w+, pero los datos se adjuntan al final. 13 / 17 Hay dos ramas en los métodos numéricos 1. Desarrollo de algoritmos - ¿cómo resolvemos el problema? 2. Análisis de algoritmos - ¿qué tan buena es nuestra solución? En particular, hay tres características de los algoritmos con números reales que en cierta medida entran en conflicto: 1. La exactitud (o consistencia) del algoritmo 2. La estabilidad del algoritmo 3. Los efectos de la aritmética de precisión finita (el redondeo). La eficiencia de un algoritmo es una combinación de las tres, junto con consideraciones de su complejidad. 14 / 17 Ideas centrales del curso A good numerical method gives you nearly the right solution to nearly the right problem. ▶ Conceptos fundamentales: errores y aproximación ▶ Truncación y redondeo Raíces de ecuaciones polinomiales Álgebra lineal y sistemas de ecuaciones ▶ ▶ ▶ ▶ Interpolación y ajuste de modelos Diferenciación e integración numérica 15 / 17 Evaluación del curso Será continua y permanente y se llevará a cabo en 3 momentos: ▶ Diagnóstica: Al inicio del curso para determinar el nivel promedio de la clase y subsanar posibles fallas. ▶ Formativa: Mediante la participación en clase, en la realización de tareas grupales y la participación en el laboratorio. ▶ Sumaria: Exámenes escritos, entrega de cuaderno de tareas, entrega de bitácora de laboratorio, autoevaluación, co-evaluación. Ponderación (Sugerida): ▶ Entrega de trabajos (tareas + proyectos) 45% ▶ Exámenes Parciales (4) 45% Participación en Clase 10% ▶ 16 / 17 ¿Cómo localizarme? [email protected] fisica.ugto.mx/~selimibn/numericos Mi oficina es la de Mauro Napsuciale, en el edificio B (aunque eso puede cambiar) y mi extensión la 8423 (ídem). 17 / 17