32
Introduction to Computer Programming A Python-Based Approach for Computational Science Hans Petter Langtangen Simula Research Laboratory and Department of Informatics University of Oslo Resumen del capítulo 3, 4 y5 preparado por: Kenneth Robles Ramos Osvaldo Medina Irizarry Héctor L. Rodríguez Toro Para la clase: MATH-5500 Matemáticas Discretas Avanzadas

Python

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Python

Introduction to Computer ProgrammingA Python-Based Approach for

Computational Science

Hans Petter LangtangenSimula Research Laboratory

andDepartment of Informatics

University of Oslo

Resumen del capítulo 3, 4 y5 preparado por:Kenneth Robles Ramos

Osvaldo Medina IrizarryHéctor L. Rodríguez Toro

Para la clase: MATH-5500 Matemáticas Discretas Avanzadas

Page 2: Python

Introducción

¿Qué es Python?

Python es un leguaje de programacióncreado por Guido Van Rossum a principiosde los años noventa. El nombre del programaestá inspirado en un grupo cómico deingleses “Monty Python”.

Page 3: Python

Sistemas operativos

El programa Python está disponible paravarios sistemas operativos entre los cuales seencuentran: UNIX Solaris LinuxWindows

Page 4: Python

¿Por qué utilizar Python?

Su lenguaje es simple, claro y sencillo. Estoes tan así que se cree que es uno de losmejores programas para empezar aprogramar.Algunos casos que han tenido éxito conPython son:1. Google2. Yahoo3. NASA4. Linux

Page 5: Python

Suponga que quiere calcular la temperaturade grados Celsius a grados Fahrenheitutilizando el programa Python, ¿cómo loharíamos?

Page 6: Python

Tomando la fórmula de grados Fahrenheit, ¿cómohacemos que el programa corra sin escribir el valorde entrada?

Page 7: Python

La función “Eval”

Esta función toma una cadena como argumento yla evalúa como una expresión de Python.

Cualquier expresión de texto válida para Pythony escrita como cadena puede ser evaluada.

La función “Eval” también se puede utilizar conlistas y síntaxis de tupla.

Page 8: Python

La función “String”

Escrita una fórmula matemática como unacadena podemos convertir la misma en unafunción Python.

>>> from scitools.StringFunction import StringFunction>>> formula = ’exp(x)*sin(x)’>>> f = StringFunction(formula)

Ejemplo

Page 9: Python

>>> f(0)0.0>>> f(pi)2.8338239229952166e-15>>> f(log(1))0.0

Page 10: Python

Los errores más comunes en Python

Los tipos de errores más comunes lo son:1. “Name” Error este surge cuando no hay una

variable definida.2. “Type Error” sucede por un valor en una

operación ilegal.3. “Index Error” este ocurre cuando en una lista

de índice sale fuera del campo.

Page 11: Python

Los errores más comunes en Python

Ejemplo:if z < 0:raise ValueError, ’z=%s is negative - cannot do log(z)’ % z

Page 12: Python

• Las listas se introdujeron en el capítulo 2.Éstas son útiles para almacenar datostabulados. Al realizar cálculos matemáticosterminamos con un montón de números quesi son guardados en listas pueden hacer losprogramas más lentos.

• Por otro lado, las matrices son un objetomenos flexible, pero mucho más eficientepara el almacenamiento. Esto no se verá enPython, pero si en la industria y la cienciadonde los programas de ordenadores correnpor semanas y hasta meses.

Page 13: Python

• Mi lista [2,6.0,`tmp.ps`,[0,1]]• El 2 es int• El 6.0 se conoce como flotante• El `tmp.ps` es una cadena• El [0,1] es una lista• Esta combinación se conoce como una lista

heterogénea

Page 14: Python

• Podemos también eliminar fácilmente los elementos de una lista o añadir nuevos elementos en cualquier parte de ésta. Esta flexibilidad de las listas, en general, es conveniente para el programador,pero en los casos en que los elementos son del mismo tipo y el número deelementos es fijo, las matrices se pueden utilizar en su lugar. Los beneficios que tienen las matrices se enmarcan en la velocidad de los programas ya que demanda menos memoria.

Page 15: Python

• Algunas cantidades en las matemáticas estánasociadas al conjunto de números. Ejemplo deestos son, las coordenadas en un plano. Lanotación utilizada es (x,y) para el punto. Unpunto en el espacio tridimensional se escribede la forma (x,y,z).

Page 16: Python

Vectores

• En las aplicaciones de las matemáticas hay ciertas cantidades que se determinan por completo mediante su magnitud, por ejemplo;

Longitud Masa Área Temperatura

Page 17: Python

• Para describir el desplazamiento de unobjeto se requiere dos números: la magnitudy la dirección del desplazamiento. Paradescribir la velocidad de un objeto enmovimiento se deben especificar tanto larapidez como la dirección del recorrido.

• Las cantidades como desplazamiento,velocidad, aceleración y fuerza, queimplican magnitud y también dirección, sellaman cantidades dirigidas. Una forma derepresentarlas, matemáticamente, es utilizandovectores.

Page 18: Python

• Un vector en el plano es unsegmento de recta que tiene unadirección asignada. Un vector serepresenta , como se ve en lafigura de la derecha. Este vectorse escribe AB. La magnitud olongitud del vector se representapor I AB I. Para representar losvectores también usaremosletras minúsculas en “Bold”.

u=AB

Page 19: Python

• Dos vectores se consideran iguales si tienen igual magnitud y la misma dirección. Así todos los vectores de la derecha son iguales.

Page 20: Python

• Un vector puede ser representado por un par ordenado.

• CD= (x2-x1,y2-y1)= (8-4,-2-6)= (4,-8)

Si trasladamos el vector CD, este no cambia de magnitud ni dirección por tal motivo decimos que el CD = (4,8)

Page 21: Python

Secuencia - Serie o sucesión de cosas que guardan entre sí cierta relación y orden. Una secuencia general se escribe como:

x0, x1, x2, . . . , xn, . . . ,

Un ejemplo es la secuencia de los números impares:

1, 3, 5, 7, . . . , 2n + 1, . . .

Para esta secuencia, tenemos una fórmula explícita

2n + 1 donde “n” toma los valores 1,2,3,…

ChapterChapter 5 5 -- Sequences and Difference Equations

21

Page 22: Python

Podemos escribir esta secuencia de forma más compacta como:

con xn = 2n + 1

Otros ejemplos de secuencias infinitas de matemáticas son:

1, 4, 9, 16, 25, . . . , , xn = (n + 1)2

)( 0nx n

)( 0nx n

11,),...(,,,1 04

131

21

nxx nnn

22

Page 23: Python

Las secuencias anteriores son infinitas porque son generadas para todos los números enteros n≥0. Sin embargo, la mayoría de las secuencias en aplicaciones de la vida real son finitas. Si usted deposita una cantidad de dinero (x0) en un banco a un porciento de interés, obtendrá una cantidad (x1) después de un año, (x2) después de dos años y (xN) después de (N) años. Este proceso resulta en la siguiente secuencia finita:

x0, x1, x2, . . . , xN, Nnnx 0)(

23

Page 24: Python

Para algunas secuencias, no es tan fácil establecer una fórmula general para el término (n-ésimo). En cambio, es más fácil expresar una relación entre dos o más números consecutivos. Un ejemplo es la secuencia de los números impares. Esta secuencia puede ser generada de forma alterna por la fórmula:

xn+1 = xn + 2y la secuencia se puede comenzar con una condición inicialdonde el valor del primer elemento se especifíca como

x0 = 1

24

Page 25: Python

Ecuaciones de diferencias Las relaciones, como la que se muestra en la

pantalla anterior, entre elementos consecutivos en una secuencia se llaman relaciones recurrentes o ecuaciones de diferencias . Resolver una ecuación de diferencia puede ser bastante difícil con matemáticas, pero es casi trivial resolverla en una computadora. Es por esto que las ecuaciones de diferencia son muy útiles para los programas de computadoras y este capítulo se dedica a este tópico.

25

Page 26: Python

Modelos matemáticos basados enecuaciones de diferencia

El objetivo de la ciencia es explicar los fenómenos complejos. Estos fenómenos pueden ser naturales como la fotosíntesis, sociales como la emigración, económicos, mecánicos, eléctricos, etc.

Para comprender un fenómeno podemos crear un modelo cuyas características y comportamiento copien fielmente las características y comportamiento del fenómeno real.

En matemáticas, un modelo consiste de un conjunto datos y ecuaciones que al resolverlas nos muestran o predicen el comportamiento del fenómeno.

Las ecuaciones de diferencia aparecen continuamente en muchos modelos y son fáciles de programar.

26

Page 27: Python

Series de Taylor como ecuaciones de diferenciaConsideremos el siguiente sistema de dos ecuaciones de diferencia:

, a0 = 1

en = en−1 + an , e0 = 1

Podemos comenzar a buscar la solución:

e1 = e0 + a1 = 1 + a0 = 1 + 1 = 1 + x

e2 = e1+a2 = (1+x) + a1 = (1 + x) + a0

e2 = (1 + x) + 1 = 1 + x + 27

aa nnx

1n

1x

1x

2x

1x

2x

1x

2x

2

2x

Page 28: Python

e3 = e2+ a3 = 1 + x + + a3

= 1 + x + + a2 = 1 + x + + a1

= 1 + x + + a0

e3 = 1 + x + +

e3 = 1 + + +

28

3x

2

2x

2

2x

3x

2

2x

2x

2

2x

3x

2x

1x

12

2x

123

3x

1

1x

2

2x

23

3x

Page 29: Python

La serie anterior es la serie de Taylor para (e x )

La secuencia (an ) genera los términos recursivamente,y la secuencia (en ) suma los términos.

en = en−1 + an

29

0 !n

nx

nxe

,!3!2!1!0

3210

xxxxex x

aa nnx

1n

Page 30: Python

El Programadef exp_diffeq(x, N):

n = 1an_prev = 1.0 # a_0en_prev = 0.0 # e_0while n <= N:

en = en_prev + an_prevan = an_prev*x/nen_prev = enan_prev = ann += 1

return en

30

n an_prev en_prev en an1 1.0 0.0 1.0 1.0

1.0 1.0

2 2.0 1/2

1/2 2.0

3 2.5 1/6

1/6 2.5

4 2.6667 1/24

1/24 2.6667

5 2.7083 1/120

1/120 2.7083

6 2.7167 1/720

1/720 2.7167

7 2.7181 1/5040

1/5040 2.7181

8 2.71825 1/40320

1/40320 2.71825

9 2.71828 1/362880

x = 1, N = 9

Page 31: Python

Referencias:Langtangen, P. (2008). Introduction to Computer ProgrammingA Python-Based Approach for Computational Science. González, R. Pytho para todos. Recuperado el 14 de agosto en http://mundogeek.net/tutorial-python/

Recuperado el 20 de agosto en http://www.youtube.com/watch?v=x9M3R6igH2E&p=D21DD37136A73127&index=15

Recuperado el 25 de agosto en http://www.youtube.com/watch?v=x9M3R6igH2E&p=D21DD37136A73127&index=16

Recuperado el 2 de septiembre en http://www.youtube.com/watch?v=x9M3R6igH2E&p=D21DD37136A73127&index=17

Page 32: Python

32