Upload
kennethmath
View
2.312
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
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
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”.
Sistemas operativos
El programa Python está disponible paravarios sistemas operativos entre los cuales seencuentran: UNIX Solaris LinuxWindows
¿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
Suponga que quiere calcular la temperaturade grados Celsius a grados Fahrenheitutilizando el programa Python, ¿cómo loharíamos?
Tomando la fórmula de grados Fahrenheit, ¿cómohacemos que el programa corra sin escribir el valorde entrada?
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.
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
>>> f(0)0.0>>> f(pi)2.8338239229952166e-15>>> f(log(1))0.0
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.
Los errores más comunes en Python
Ejemplo:if z < 0:raise ValueError, ’z=%s is negative - cannot do log(z)’ % z
• 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.
• 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
• 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.
• 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).
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
• 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.
• 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
• Dos vectores se consideran iguales si tienen igual magnitud y la misma dirección. Así todos los vectores de la derecha son iguales.
• 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)
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
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
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
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
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
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
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
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
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
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
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
32