Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica...

133
Introducci´on a la Inform´ atica Grado en F´ ısica 2020-2021 October 8, 2020

Transcript of Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica...

Page 1: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Introduccion a la InformaticaGrado en Fısica 2020-2021

October 8, 2020

Page 2: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

profesores

Prof. Alberto RuizDepartamento de Informatica y Sistemashttp://dis.um.es/profesores/[email protected]

Prof. Javier BussonsDepartamento de Fı[email protected]

Prof. Juan [email protected]

Informatica - Grado en Fısica - UMU 2

Page 3: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

→ gravity simulator

Informatica - Grado en Fısica - UMU 3

Page 4: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

→ circuit simulator

Informatica - Grado en Fısica - UMU 4

Page 5: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

objetivo de la asignatura

I conocer herramientas informaticas imprescindibles para uncientıfico

I aprender a escribir programas sencillos

Informatica - Grado en Fısica - UMU 5

Page 6: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

contenidos

1. introduccion

2. fundamentos de programacion

3. herramientas de calculo cientıfico

4. otros temas (graficos, edicion documentos cientıficos, etc.)

Informatica - Grado en Fısica - UMU 6

Page 7: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

practicas

I ejercicios semanales

I cuaderno de la asignatura

I practicas en aula de ordenadores (Querequete, Fac. Quımica)

online, dependiendo de la evolucion de la pandemia

asistencia obligatoria

Informatica - Grado en Fısica - UMU 7

Page 8: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

evaluacion

examen teorico-practico:

ejercicios parecidos a los que haremos en clase

Informatica - Grado en Fısica - UMU 8

Page 9: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

bibliografıa

I basica: apuntes de los profesores

dis.um.es/profesores/alberto ← aula virtual

I complementaria: material de internet

Informatica - Grado en Fısica - UMU 9

Page 10: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

horario

I teorıa: 13:00-14:00 lunes, miercoles y (algunos) jueves

I practicas: 15:00-17:00 lunes, miercoles o jueves segun elgrupo asignado.

→ calendario

El grupo 1 empieza esta tarde

Informatica - Grado en Fısica - UMU 10

Page 11: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

grupos de practicas

Asignacion de alumnos: en los recursos del aula virtual.

I grupo 1: lunes

I grupo 2: miercoles

I grupo 3: jueves

Informatica - Grado en Fısica - UMU 11

Page 12: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

contacto primera parte

Prof. Alberto Ruiz GarcıaDepartamento de Informatica y Sistemas

http://dis.um.es/profesores/[email protected]

Facultad de Informatica2a planta, despacho 2.09

tutorıas: email / aula virtual.

Informatica - Grado en Fısica - UMU 12

Page 13: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

apuntes

Estan disponibles en la pagina web de la asignatura, accesibledesde el Contenido Web del aula virtual.

Hay dos “materiales’:

I esta presentacion

I un conjunto de “notebooks jupyter”

Son documentos interactivos que combinan texto, programas ylos resultados de los calculos.

Aprenderemos a usarlos en la clase de practicas.

Informatica - Grado en Fısica - UMU 13

Page 14: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

conceptos fundamentales

En informatica hay dos tipos de conceptos:

I Conceptos fundamentales que hay que aprender de memoria.

I Convenios para expresar esos conceptos. Se buscan en google.

Informatica - Grado en Fısica - UMU 14

Page 15: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

lenguajes de programacion

Hay muchısimos. . .

Nosotros usaremos Python y R,

y sus herramientas de calculo cientıfico.

Informatica - Grado en Fısica - UMU 15

Page 16: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

como se estudia esta asignatura

1. Atender en clase

2. Leer cuidadosamente los apuntes.

3. Reproducir los ejemplos de programacion y experimentarcambiando cosas para ver lo que ocurre.

4. Preguntar lo antes posible todas las dudas. No avanzar sinentender bien los conceptos esenciales que iremos estudiando.

5. Practicar, practicar, practicar: el papel se lo traga todo peroel ordenador no admite ningun error.

Informatica - Grado en Fısica - UMU 16

Page 17: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

informatica

procesamiento automatico de informacion

programacion: redactar instrucciones para resolver un problema

computador: maquina que obedece instrucciones (“ejecuta”programas)

Informatica - Grado en Fısica - UMU 17

Page 18: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

programacion

un lenguaje matematico ampliado

formulas normales junto con instrucciones para:

I tomar decisiones

I repetir calculos

I poner nombres

Escribiendo las formulas usando solo los sımbolos del teclado

Informatica - Grado en Fısica - UMU 18

Page 19: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

toma de decisiones

f =

{1 +√x, si x ≥ 0

cos(2x), en caso contrario

if x>=0:

f = 1 + sqrt(x)

else:

f = cos(2*x)

Informatica - Grado en Fısica - UMU 19

Page 20: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

repeticion

x0 = 3

xk+1 = 5xk − 2, para k = 1, 2, . . .

¿ x9 ?

x[0] = 3

for k in range (9):

x[k+1] = 5*x[k] - 2

3, 13, 63, 313, 1563, 7813, 39063, 195313, 976563, 4882813

Informatica - Grado en Fısica - UMU 20

Page 21: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Ecuacion de Kepler

En esta ecuacion no podemos despejar x

x− ε sin(x) = M

pero para unos datos concretos, p.ej.

M =π

2' 1.5708 ε = 0.2

podemos construir una secuencia de aproximaciones cada vez mejores

x0 = M

xk+1 = M + ε sin(xk), para k = 1, 2, . . .

x = 1.5708, 1.7708, 1.7668, 1.7670, 1.7670, . . .

Informatica - Grado en Fısica - UMU 21

Page 22: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

computacion

computacion: formula matematica que incluye repeticiones ytoma de decisiones (= programa)

algoritmo: computacion que resuelve un determinado problema(= receta)

ejecucion: realizar fısicamente la computacion (a mano o conordenador)

Informatica - Grado en Fısica - UMU 22

Page 23: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Mr Shanks, an English “computer”. . .

(Traduccion de los Elementos de Euclides, 1885.)

se equivoco en el dıgito no 507

Page 24: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

relacion con otras ciencias

relacion con la Fısica:

I herramienta de computo

I soporte de la computacion

relacion con las Matematicas

I la Teorıa de la Computacion es una rama de lasmatematicas

I la programacion esta basada en la Logica

Informatica - Grado en Fısica - UMU 24

Page 25: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Breve historia

I -150 Mecanismo de Antikythera

I 1640s Maquina de Pascal

I 1800s Tarjetas perforadas

I 1830s Analytical Engine, telegrafo, fotografıa

I 1890s coche, tabulador Hollerith, telefono, electron

I 1910s avion, Torres Quevedo, Einstein

I 1920s radio, calculadoras electromecanicas

I 1930s Turing, TV

Informatica - Grado en Fısica - UMU 25

Page 26: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Breve historia

I 1940s Von Neumann, Shannon, transistor, ENIAC, EDSAC

I 1950s Fortran, Lisp, IBM 704, circuito integrado, Sputnik

I 1960s Algol, Basic, mainframes, 74xx, Apollo

I 1970s microprocesador, calculadoras, email

I 1980s ordenadores domesticos

I 1990s WWW, deep blue, windows, linux, portatiles

I 2000s wikipedia, google maps, youtube, SSD

I 2010s tablets, smartphones, redes sociales, deep learning,alphaGo, rpi

Informatica - Grado en Fısica - UMU 26

Page 27: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Informatica - Grado en Fısica - UMU 27

Page 28: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Calcula la superficie de un polıgono irregular

Informatica - Grado en Fısica - UMU 28

Page 29: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Datos experimentales:

corriente - voltaje

Informatica - Grado en Fısica - UMU 29

Page 30: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Recta de regresion

la pendiente es un estimador de la resistencia

Informatica - Grado en Fısica - UMU 30

Page 31: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Calcula la media de los siguientes numeros:

224, 700, 592, 13, 576, 151, 866, 940, 172, 468, 537, 647, 199,383, 239, 123, 877, 965, 181, 881, 491, 650, 364, 319, 213, 404,448, 619, 421, 881, 421, 148, 246, 989, 158, 529, 776, 113, 669,694, 506, 907, 524, 480, 534, 13, 519, 277, 90, 847, 433, 834, 239,72, 444, 374, 121, 991, 754, 659, 148, 289, 265, 115, 88, 992, 987,239, 313, 389, 740, 721, 428, 862, 914, 52, 507, 185, 505, 597,306, 339, 635, 608, 101, 846, 216, 507, 935, 98, 840, 519, 236,401, 196, 510, 55, 510, 161, 383, 849, 182, 447, 999, 762, 323,712, 911, 284, 754, 806, 41, 69, 568, 135, 157, 23, 894, 708, 657,23, 697, 132, 437, 136, 364, 35, 414, 417, 528, 778, 109, 643, 254,389, 164, 456, 269, 357, 31, 154, 633, 997, 50, 761, 598, 491, 541,615, 764, 458, 509, 17, 324, 821, 936, 692, 742, 60

Informatica - Grado en Fısica - UMU 31

Page 32: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Calcula la mediana de los siguientes numeros:

224, 700, 592, 13, 576, 151, 866, 940, 172, 468, 537, 647, 199,383, 239, 123, 877, 965, 181, 881, 491, 650, 364, 319, 213, 404,448, 619, 421, 881, 421, 148, 246, 989, 158, 529, 776, 113, 669,694, 506, 907, 524, 480, 534, 13, 519, 277, 90, 847, 433, 834, 239,72, 444, 374, 121, 991, 754, 659, 148, 289, 265, 115, 88, 992, 987,239, 313, 389, 740, 721, 428, 862, 914, 52, 507, 185, 505, 597,306, 339, 635, 608, 101, 846, 216, 507, 935, 98, 840, 519, 236,401, 196, 510, 55, 510, 161, 383, 849, 182, 447, 999, 762, 323,712, 911, 284, 754, 806, 41, 69, 568, 135, 157, 23, 894, 708, 657,23, 697, 132, 437, 136, 364, 35, 414, 417, 528, 778, 109, 643, 254,389, 164, 456, 269, 357, 31, 154, 633, 997, 50, 761, 598, 491, 541,615, 764, 458, 509, 17, 324, 821, 936, 692, 742, 60

Informatica - Grado en Fısica - UMU 32

Page 33: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Calcula la probabilidad de obtener una suma mayor o igual que 10al lanzar 2 dados.

Informatica - Grado en Fısica - UMU 33

Page 34: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejemplos

Calcula la probabilidad de que al lanzar 3 dados no se repitaninguna puntuacion.

→ enumeracion

Informatica - Grado en Fısica - UMU 33

Page 35: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Resuelve el siguiente sistema de ecuaciones:

x1 + x2 + x3 = 5

x1 − x2 + 2x3 = 1

5x1 + x2 − x3 = 17

Informatica - Grado en Fısica - UMU 34

Page 36: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

En forma matricial: halla el vector x tal que:

Ax = b

donde A =

1 1 11 −1 25 1 −1

y b =

5117

Informatica - Grado en Fısica - UMU 35

Page 37: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Resuelve el sistema

−6 −19 −8 −1 8−14 −13 −20 −20 −7−17 8 18 −1 514 3 6 2 −11−20 −18 −16 3 −15

x =

−38−356135−32−268]

Informatica - Grado en Fısica - UMU 36

Page 38: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Resuelve un sistemaAx = b

donde A tiene dimension 1000× 1000 . . .

from numpy.linalg import solve

x = solve(A,b)

Informatica - Grado en Fısica - UMU 37

Page 39: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Simplifica la siguiente expresion:

(1 + x)(1− x2) + (x3 − x)

Informatica - Grado en Fısica - UMU 38

Page 40: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Simplifica

p(x)

q(x)

donde

p(x) =− x16 + 7x15 − 15x14 + 5x13 + 5x12 + 31x11−− 27x10 − 35x9 − 25x8 + 45x7 + 51x6 + 23x5−− 25x4 − 35x3 − 25x2 − 9x− 2

y

q(x) =− x15 + 5x14 − 5x13 − 5x12 − 5x11 + 21x10 + 15x9−− 5x8 − 35x7 − 25x6 + x5 + 25x4 + 25x3 + 15x2 + 5x+ 1

Informatica - Grado en Fısica - UMU 39

Page 41: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Expresa de forma irreducible:

77

143

Informatica - Grado en Fısica - UMU 40

Page 42: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Expresa de forma irreducible:

8 377 851 883

18 939 210 449

Informatica - Grado en Fısica - UMU 41

Page 43: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Calcula los factores primos de

1234567891011121314151617181920

from sympy.ntheory import factorint

factorint (1234567891011121314151617181920)

{2: 5, 3: 1, 5: 1, 323339: 1, 3347983: 1,

2375923237887317: 1}

Informatica - Grado en Fısica - UMU 42

Page 44: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Calcula los factores primos de

1234567891011121314151617181920

from sympy.ntheory import factorint

factorint (1234567891011121314151617181920)

{2: 5, 3: 1, 5: 1, 323339: 1, 3347983: 1,

2375923237887317: 1}

Informatica - Grado en Fısica - UMU 42

Page 45: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

∫e−xdx

Informatica - Grado en Fısica - UMU 43

Page 46: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

∫xe−x

2dx

Informatica - Grado en Fısica - UMU 44

Page 47: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

∫e−x

2dx

Informatica - Grado en Fısica - UMU 45

Page 48: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

∫ 1

0e−x

2dx

Informatica - Grado en Fısica - UMU 45

Page 49: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Φ(t) =1√2π

∫ t

−∞e−

12x2dx

Φ(0.46) =

Informatica - Grado en Fısica - UMU 46

Page 50: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Φ(t) =1√2π

∫ t

−∞e−

12x2dx

Φ(0.46) =

from scipy.stats import norm

norm.cdf (0.46)

0.6772418897496523

Informatica - Grado en Fısica - UMU 47

Page 51: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Φ(t) =1√2π

∫ t

−∞e−x

2dx

Φ(0.46) = 0.5+

from scipy.integrate import quad

from numpy import sqrt , pi, exp

def gauss(t):

return 1/sqrt (2*pi)*exp (-0.5*t**2)

quad(gauss ,0 ,0.46)

(0.1772418897496523 , 1.967780269281375e-15)

↑ ↑resultado error de la aproximacion

Informatica - Grado en Fısica - UMU 48

Page 52: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

elementos basicos de Python

un programa es

un conjunto de instrucciones que se evaluan sucesivamente

d = 2+2

print(’hola’)

c = 5*d + 7

print(c)

hola

27

Informatica - Grado en Fısica - UMU 49

Page 53: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

computacion

una secuencia de operaciones matematicas ampliadas

con “construcciones” para

I poner nombres (a datos y a formulas)

I repetir operaciones

I seleccionar operaciones dependiendo de condiciones

I operar “a la vez” con conjuntos de numeros

Informatica - Grado en Fısica - UMU 50

Page 54: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

elementos basicos de Python

Incluye siempre al principio:

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

Para usar las operaciones matematicas y hacer graficas.

Informatica - Grado en Fısica - UMU 51

Page 55: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

numeros

enteros, reales, complejos

17

3.5 4e7 -3.4e-6

2-3.2j

enteros exactos (dıgitos ilimitados)

reales aproximados, coma flotante (15 dıgitos)

Informatica - Grado en Fısica - UMU 52

Page 56: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

calculadora

operaciones aritmeticas

+ - * / **

cociente y resto de la division entera

// %

funciones trigonometricas, exponenciales, etc.

np.sin(), np.cos(), np.tan(), np.log(), np.exp(), ...

np.arcsin (), np.arccos (), np.arctan2(y,x), ...

np.pi, np.radians (), np.degrees (), ...

comparaciones

< <= > >= == !=

and or not

Informatica - Grado en Fısica - UMU 53

Page 57: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

precedencia

d =3x+ a

2b

d = 3x+a/2b MAL

d = 3*x+a/2*b MAL

d = (3*x+a)/2*b MAL

d = (3*x+a)/(2*b) OK

d = (3*x+a)/2/b OK

Informatica - Grado en Fısica - UMU 54

Page 58: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

raız cuadrada

numeros reales:

I 2**0.5

I np.sqrt(2)

I np.sqrt(-2) → NaN

numeros complejos

I (-2)**0.5

I np.sqrt(-2+0j)

Informatica - Grado en Fısica - UMU 55

Page 59: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

¡¡OJO!!

No confundir = con ==

a = 2

if a==2:

bla bla

Informatica - Grado en Fısica - UMU 56

Page 60: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

¡cuidado!

3,5 → (3, 5)

(se interpreta como un par ordenado o “tupla”)

La coma sirve para separar numeros en una secuencia

Los decimales se indican con un punto:

3.5

cuando tengais tiempo buscad en wikipedia floating point arithmetic

Informatica - Grado en Fısica - UMU 57

Page 61: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

secuencias

programar: crear y transformar secuencias

[5.2, -7.4, 100.32 , 0, 42 ]

np.arange (20)

np.linspace(a,b,n)

np.random.randn(n)

[ 3*k**2 - 1 for k in range (10) ]

Informatica - Grado en Fısica - UMU 58

Page 62: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

linspace

np.linspace(1,5,9)

1 2 3 4 5

[ 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 ]

Informatica - Grado en Fısica - UMU 59

Page 63: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

range

np.arange(7)

0 1 2 3 4 5 6

[0, 1, 2, 3, 4, 5, 6]

Informatica - Grado en Fısica - UMU 60

Page 64: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

range

np.arange(2, 8, 0.4)

2 3 4 5 6 7 8

[2.0 2.4 2.8 3.2 3.6 4.0 4.4 4.8 5.2 5.6 6.0 6.4 6.8 7.2 7.6]

Informatica - Grado en Fısica - UMU 61

Page 65: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

random

np.random.rand(20)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19k

0.2

0.4

0.6

0.8

1.0

x k

[0.88731441 0.50000184 0.05722593 0.20895773 0.95041584 0.58817358

0.43823722 0.95436973 0.41268205 0.09126576 0.78811276 0.59018398

0.88699176 0.81361323 0.36222857 0.19685292 0.70095276 0.19702364

0.79414344 0.85533817]

np.random.randint(a,b,n)

np.random.randn(n)

Informatica - Grado en Fısica - UMU 62

Page 66: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

random

Simulamos el lanzamiento de 10 dados:

np.random.randint (1,7,10)

array([5, 2, 3, 2, 3, 2, 4, 6, 6, 3])

Informatica - Grado en Fısica - UMU 63

Page 67: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

random

Simulamos repetir 10 veces el lanzamiento de 5 dados:

np.random.randint (1,7,(10,5))

array([[4, 2, 6, 3, 5],

[2, 5, 4, 3, 6],

[1, 5, 1, 4, 2],

[4, 2, 2, 2, 1],

[2, 2, 4, 1, 2],

[1, 3, 4, 4, 6],

[2, 2, 6, 3, 4],

[6, 4, 1, 4, 1],

[1, 2, 4, 1, 1],

[4, 6, 3, 4, 3]])

Informatica - Grado en Fısica - UMU 64

Page 68: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

operaciones con secuencias

elemento a elemento:

+ - * / ** // %

np.sqrt np.sin np.cos np.exp np.log abs

reduccion:

np.sum np.mean np.median np.std

np.max np.argmax

np.linalg.norm

trocear y combinar

(veremos todos los detalles mas adelante)

Informatica - Grado en Fısica - UMU 65

Page 69: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

np.dot

@

“dot product” (producto escalar)

I producto escalar de vectores: u @ v → numero

I producto matriz - vector M @ v → vector

I producto de matrices A @ B → matriz

en general: contraccion de “tensores”

Informatica - Grado en Fısica - UMU 66

Page 70: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

sumatorio

combinando lo anterior ya podemos calcular facilmente expresiones como:

22∑k=5

(2k3 − 5k2 + 3

)

k = np.arange (5 ,22+1)

[ 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22]

2*k**3 - 5*k**2 + 3

[ 128 255 444 707 1056 1503 2060 2739 3552 4511

5628 6915 8384 10047 11916 14003 16320 18879]

np.sum( 2*k**3 - 5*k**2 + 3 )

109047

Informatica - Grado en Fısica - UMU 67

Page 71: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

cuidado

10∑k=1

(k2 + 1) 6=10∑k=1

k2 + 1

Informatica - Grado en Fısica - UMU 68

Page 72: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

“ceros numericos”

sin 30o =1

2

np.sin( np.radians (30) )

0.49999999999999994

np.sin( np.radians (30) ) == 1/2

False

abs( np.sin( np.radians (30) ) - 1/2 ) < 1e-13

True

Informatica - Grado en Fısica - UMU 69

Page 73: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

otra forma

[ 2*j**3 - 5*j**2 + 3 for j in range(5, 22+1) ]

[ 128 255 444 707 1056 1503 2060 2739 3552 4511

5628 6915 8384 10047 11916 14003 16320 18879 ]

[ k**2 for k in range (20) if k % 2 == 0 ]

[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

Esta construccion se llama list comprehension o bucle implıcito.

Informatica - Grado en Fısica - UMU 70

Page 74: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

archivos

# local

np.loadtxt("ruta/datos.txt")

# remoto

np.loadtxt("http :// maquina.dominio/ruta/datos.txt")

Informatica - Grado en Fısica - UMU 71

Page 75: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

graficas

plt.plot(x,y)

Informatica - Grado en Fısica - UMU 72

Page 76: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

plot

x = np.linspace(0, 2*np.pi , 100)

y = np.sin(x) + 1/3*np.sin(3*x) + 1/5 *np.sin(5*x)

plt.plot(x,y)

0 1 2 3 4 5 61.00

0.75

0.50

0.25

0.00

0.25

0.50

0.75

1.00

Informatica - Grado en Fısica - UMU 73

Page 77: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

plot

t = np.linspace(0, 2*np.pi , 100)

plt.plot(np.cos(t), np.sin(t))

1.00 0.75 0.50 0.25 0.00 0.25 0.50 0.75 1.001.00

0.75

0.50

0.25

0.00

0.25

0.50

0.75

1.00

Informatica - Grado en Fısica - UMU 74

Page 78: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

histogram

x = np.random.rand (1000)

plt.hist(x);

0.0 0.2 0.4 0.6 0.8 1.00

20

40

60

80

100

120

Informatica - Grado en Fısica - UMU 75

Page 79: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

histogram

x = np.random.randn (1000)

plt.hist(x, edgecolor=’black’);

3 2 1 0 1 2 30

50

100

150

200

Informatica - Grado en Fısica - UMU 76

Page 80: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

poner nombres

dos tipos de definicion: constantes y funciones

=

peso = 5*3

def

def cua(x):

return x**2

Informatica - Grado en Fısica - UMU 77

Page 81: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

variables

b = 2

r = 5*b + 3

print(r)

13

Informatica - Grado en Fısica - UMU 78

Page 82: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

variables

b = 2

r = 5*b + 3

b = 0

print(r)

13

El sımbolo =

I da nombre a un “dato” (numero, secuencia, texto, etc.)

I el nombre se puede reutilizar (redefinir)

I guarda un dato en un espacio de almacenamiento

I “variable” significa constante que se puede cambiar

Informatica - Grado en Fısica - UMU 79

Page 83: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

funciones

b = 2

def fun(z):

y = -z**2 + b

return y

print( fun )

ERROR!

Informatica - Grado en Fısica - UMU 80

Page 84: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

funciones

b = 2

def fun(z):

y = -z**2 + b

return y

print( fun )

ERROR!

Informatica - Grado en Fısica - UMU 80

Page 85: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

funciones

b = 2

def fun(z):

y = -z**2 + b

return y

print( fun(3) )

-7

Informatica - Grado en Fısica - UMU 81

Page 86: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

funciones

b = 2

def fun(z):

y = -z**2 + b

return y

b = 5

print( fun(3) )

-4

El sımbolo def

I da nombre a una formula (computacion)

I tiene argumentos

I se evalua cada vez con las definiciones mas recientes

Informatica - Grado en Fısica - UMU 82

Page 87: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Leed detenidamente:

I Tema 1 (Operaciones simples)

I Tema 4 (Funciones)

Para estudiar los notebooks es conveniente quitar los resultados

(menu Cell → All Output → Clear)

y evaluar sucesivamente las celdas intentando adivinar el resultado que va a

aparecer.

Los apartados marcados con asterisco * son mas avanzados y se pueden saltar

en una primera lectura

Informatica - Grado en Fısica - UMU 83

Page 88: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Calculemos con lapiz y papel

ln 5

Informatica - Grado en Fısica - UMU 84

Page 89: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

lnx =

∫ x

1

dt

t

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 = 1.6094379

Informatica - Grado en Fısica - UMU 85

Page 90: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

lnx =

∫ x

1

dt

t

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 1.683

aproximamos el area mediante un polıgono

Informatica - Grado en Fısica - UMU 85

Page 91: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

lnx =

∫ x

1

dt

t

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 1.622

aproximamos el area mediante un polıgono

Informatica - Grado en Fısica - UMU 85

Page 92: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

trapecios

Informatica - Grado en Fısica - UMU 86

Page 93: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

integracion

La informatica nace para automatizar la integracion numerica.

→ integrador mecanico

→ ball and disk

→ video

→ differential analyser

Informatica - Grado en Fısica - UMU 87

Page 94: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ejercicio

Con lo aprendido hasta ahora ya podemos automatizar el calculoaproximado de integrales definidas como

ln(5) =

∫ 5

1

1

xdx

Φ(t) =1√2π

∫ t

0e−x

2dx, Φ(0.46) = ??

Dividiremos el area bajo la curva en varios trozos simples, rectangulares otriangulares.

Lo haremos primero con la funcion 1/x. Cuando funcione bien podemos

cambiar como deseemos la funcion y los extremos de integracion.

Informatica - Grado en Fısica - UMU 88

Page 95: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

primera idea

def f(x):

return 1/x

x = np.linspace (1,5,7)

d = x[1]-x[0]

r = sum( f(x) ) * d

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 2.044

Informatica - Grado en Fısica - UMU 89

Page 96: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

segunda idea

n=5; a=1; b=5

d = (b-a)/(n-1)

x = np.arange(a,b,d)

r = sum( f(x) + f(x+d) )/2 * d

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 1.683

Informatica - Grado en Fısica - UMU 90

Page 97: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Excepto en los extremos, cada valor de f(xk) se cuenta dos veces.Se puede simplificar.

Si yk = f(xk), el area de cada tramo es (yk + yk+1)d/2. La sumade todos es

((y0 + y1) + (y1 + y2) + (y2 + y3) + . . .+ (yn−2 + yn−1))d

2=

= (1y0 + 2y1 + 2y2 + 2y3 + . . .+ 2yn−2 + 1yn−1)d

2

Informatica - Grado en Fısica - UMU 91

Page 98: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

mejor

x = np.linspace (1,5,5)

d = x[1]-x[0]

y = f(x)

w = [1,2,2,2,1]

r = sum( y * w )/2 * d

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 1.683

Informatica - Grado en Fısica - UMU 92

Page 99: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

con el producto escalar

x = np.linspace (1,5,5)

d = x[1]-x[0]

y = f(x) * d/2

w = [1,2,2,2,1]

r = y @ w

equivalente a la anterior

0 1 2 3 4 5 6 70.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

ln5 1.683

Informatica - Grado en Fısica - UMU 93

Page 100: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

en general

n = 10

x = np.linspace (1,5,n)

d = x[1]-x[0]

w = np.zeros(n)

w[0:n] = 2

w[0] = 1; w[n-1] = 1

y = f(x) * d/2

r = y @ w

1.6249415218949677

Hay diferentes formas de construir los coeficientes w = [1,2,2,...,2,1].

Las explicaremos en clase.

Informatica - Grado en Fısica - UMU 94

Page 101: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

quad

∫ 1

0x2 dx

from scipy.integrate import quad

def f(x):

return x**2

quad(f,0,1)

(0.33333333333333337 , 3.700743415417189e-15)

↑ ↑resultado error de la aproximacion

Informatica - Grado en Fısica - UMU 95

Page 102: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

secuencias

cerrada: x[k] solo depende de k

Puedo calcular directamente cualquier elemento, p.ej.x[7154], sin calcular los anteriores

podemos calcular facilmente muchos elementos “a la vez” ya que las

operaciones matematicas actuan automaticamente sobre secuencias. Lo

hemos hecho en el ejemplo del sumatorio y de la integral.

recursiva: x[k] depende de x[k-1], x[k-2], . . .

Hay que calcular antes todos los anteriores

Necesitamos programar la “iteracion” con instrucciones de repeticion.

Informatica - Grado en Fısica - UMU 96

Page 103: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

A continuacion vamos a practicar con las construcciones derepeticion for, break, y while.

Tambien practicaremos la definicion de funciones con def.

Para ello vamos a resolver de varias formas el problema deencontrar una solucion aproximada de una ecuacion cualquieraf(x) = 0 en la que no se puede despejar x, y por tanto tenemosque recurrir a un metodo de aproximaciones sucesivas.

Es un problema tıpico en el que cada elemento depende de losanteriores, y por tanto hay que programar expresamente laiteracion.

Informatica - Grado en Fısica - UMU 97

Page 104: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Newton’s method

Buscamos la solucion x∗ (root) de una ecuacion:

f(x) = 0

−2 −1 0 1 2 3 4 5−100

0

100

200

300

400

y = f (x)

f (x∗) = 0

x∗

Informatica - Grado en Fısica - UMU 98

Page 105: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Newton’s method

Aproximacion inicial (semilla) x0:

f(x0) 6= 0

−2 −1 0 1 2 3 4 5−100

0

100

200

300

400

y = f (x)

x0

Informatica - Grado en Fısica - UMU 98

Page 106: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Newton’s method

Resolvemos una aproximacion lineal a la ecuacion:

f(x) ' f ′(x0)x+ b

−2 −1 0 1 2 3 4 5−100

0

100

200

300

400

y = f (x)

x0x1

Informatica - Grado en Fısica - UMU 98

Page 107: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Newton’s method

Aproximaciones sucesivas:

xk+1 = xk −f(xk)

f ′(xk)

−2 −1 0 1 2 3 4 5−100

0

100

200

300

400

y = f (x)

Informatica - Grado en Fısica - UMU 98

Page 108: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Newton’s method

Ejemplo: resuelve la ecuacion 2x3 + 20x = 10.

f(x) = 2x3 + 20x− 10

f ′(x) = 6x2 + 20

xk+1 = xk −2x3k + 20xk − 10

6x2k + 20

Informatica - Grado en Fısica - UMU 99

Page 109: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Newton’s method

Codigo:

def f(x):

y = 2*x**3 + 20 *x - 10

return y

def fp(x):

return 6*x**2 + 20

x = np.zeros (10)

x[0] = 4

for k in range (9):

x[k+1] = x[k] - f(x[k]) / fp(x[k])

print(x)

[4. 2.29310345 1.12961369 0.57005995 0.4893439 0.48835345

0.48835331 0.48835331 0.48835331 0.48835331]

Informatica - Grado en Fısica - UMU 100

Page 110: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

En 6 pasos la secuencia se estabiliza: a partir de ahı lasaproximaciones se repiten.

Comprueba que f(x[6]) es (aproximadamente) cero. Hemosencontrado una solucion de la ecuacion.

Intenta encontrar mas soluciones cambiando la semilla.

Esta ecuacion tiene solo una solucion real. ¿Podemos encontrar lascomplejas mediante este metodo?

Informatica - Grado en Fısica - UMU 101

Page 111: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ecuacion de Kepler

Resuelve con el metodo de Newton

M = x− ε sin(x) para M = 3π/4, ε = 0.8

Solucion: con x0 = M las aproximaciones son

[2.356194490192345,

2.71749658570593,

2.6989297690080485,

2.698896384568338,

2.6988963844574974,

2.6988963844574974,

2.6988963844574974,

...]

¡compruebalo!

Informatica - Grado en Fısica - UMU 102

Page 112: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

ecuacion de Kepler

Para estos valores de M = 3π/4 y ε = 0.8 el metodo simple de latransparencia 21 converge muy despacio:

x0 = M

xk+1 = M + ε sin(xk)

[ 2.356194490192345, 2.921879915141583, 2.530553911204325,

2.815169333413777, 2.612720308085192, 2.759842547568407,

2.6542306198829424, 2.7308318414083494, 2.6756400655894796,

2.715613723440277, 2.686764432048095, 2.707640894534943,

2.692562131556909, 2.7034683831622406, 2.6955878080375086,

2.701286207905195, 2.697167852036122, 2.70014539328672,

2.6979932339498625, 2.699549113988344 . . .

Informatica - Grado en Fısica - UMU 103

Page 113: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

metodo de Newton

para calcular facilmente la raız cuadrada de un numero dado n.

x2 = n

0 = f(x) = x2 − n

f ′(x) = 2x

xk+1 = xk −f(xk)

f ′(xk)= xk −

x2k − n2xk

=x2k − n

2xk=

1

2

(xk +

n

xk

)

→ algoritmo babilonico

Informatica - Grado en Fısica - UMU 104

Page 114: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

√7

xk+1 =1

2

(xk +

7

xk

)X = np.zeros (10)

X[0] = 1

n = 7

for k in range (9):

X[k+1] = ( X[k] + n/X[k] )/2

print(X)

[1. 4. 2.875 2.6548913 2.64576704 2.64575131

2.64575131 2.64575131 2.64575131 2.64575131]

Informatica - Grado en Fısica - UMU 105

Page 115: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

√7

Lo mismo pero sin almacenar los pasos intermedios:

x← 1

2

(x+

7

x

)x = 1

n = 7

for k in range (9):

x = ( x + n/x )/2

print(x, x**2)

2.6457513110645907 7.000000000000001

Ahora x es una variable simple (no una secuencia) y redefinimos su valor en

cada paso.

Informatica - Grado en Fısica - UMU 106

Page 116: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

√7

Si metemos el print dentro del bucle observamos los valores sucesivos en la

pantalla, pero no se guardan.

x = 1

n = 7

for k in range (9):

x = (x+n/x)/2

print(x, x**2)

4.0 16.0

2.875 8.265625

2.654891304347826 7.048447837901702

2.64576704419029 7.0000832521234235

2.6457513111113693 7.00000000024753

2.6457513110645907 7.000000000000001

2.6457513110645907 7.000000000000001

2.6457513110645907 7.000000000000001

2.6457513110645907 7.000000000000001

Informatica - Grado en Fısica - UMU 107

Page 117: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

En los ejemplos anteriores estamos refinando la solucion unnumero fijo de veces.

Normalmente no sabemos cuantos pasos son necesarios.

Es mejor terminar el proceso cuando la aproximacion seasuficientemente buena. Hay dos formas: while y break.

Informatica - Grado en Fısica - UMU 108

Page 118: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

while

Primera idea: detener la iteracion cuando f(x) = 0

(o sea, cuando se cumpla la ecuacion, en este caso x2 = n)

x← 1

2

(x+

n

x

)x = 1

n = 7

while x**2 != n:

x = ( x + n/x )/2

print(x)

¡¡¡El ordenador se ”cuelga”!!! (bucle infinito)

7 != 7.000000000000001

menu kernel → interruptInformatica - Grado en Fısica - UMU 109

Page 119: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

OJO: si ponemos una condicion estricta como

while not( x**2 == n):

el ordenador se quedara “cogado” en un bucle infinito.

7 6= 7.000000000000001

Informatica - Grado en Fısica - UMU 110

Page 120: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

while

Detenemos la iteracion cuando la ecuacion se cumpla bastantebien: f(xk) ' 0, o sea, |f(xk)| < ε

x← 1

2

(x+

7

x

)x = 1

n = 7

while abs( x**2 - n ) > 1E-6:

x = ( x + n/x )/2

print(x)

2.6457513111113693

Informatica - Grado en Fısica - UMU 111

Page 121: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

break

x = 1

n = 7

for k in range (100):

x = ( x + n/x )/2

print(x)

if abs( x**2 - n ) < 1E-6:

break

4.0

2.875

2.654891304347826

2.64576704419029

2.6457513111113693

Informatica - Grado en Fısica - UMU 112

Page 122: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

while pone las condiciones de continuacion al principio del bucle.Si no se cumplen nunca el proceso se quedara en un bucle infinito.

break es mas flexible: puedes poner varias condiciones determinacion a lo largo del cuerpo del bucle. Y ademas, garantizaun numero maximo de repeticiones.

Informatica - Grado en Fısica - UMU 113

Page 123: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Las siguientes transparencias son una breve introduccion a temasavanzados que estudiaremos mas adelante. Podemos saltarlas enuna primera lectura.

Informatica - Grado en Fısica - UMU 114

Page 124: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

derivacion numerica

Para aplicar el metodo de Newton hay que calcular y programar laderivada manualmente.

Alternativa: usar una diferencia finita:

f ′(x) ' f(x+ h)− f(x)

hh = “pequeno”

En la ecuacion anterior 2x3 + 20x = 10, con h = 0.1 se obtiene:

[4., 2.32798514, 1.18227111, 0.60009897, 0.49210829,

0.4884096, 0.48835412, 0.48835332, 0.48835331. 0.48835331]

¡compruebalo!

Informatica - Grado en Fısica - UMU 115

Page 125: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

derivacion numerica

Es mejor usar una biblioteca de funciones que proporciona unaaproximacion muy precisa a la derivada:

import numdifftools as nd

def f(x):

y = 2*x**3 + 20 *x - 10

return y

df = nd.Derivative(f)

x = np.zeros (10)

x[0] = 4

for k in range (9):

x[k+1] = x[k] - f(x[k]) / df(x[k])

[4., 2.29310345, 1.12961369, 0.57005995, 0.4893439,

0.48835345, 0.48835331, 0.48835331, 0.48835331, 0.48835331]

Informatica - Grado en Fısica - UMU 116

Page 126: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

instalacion de paquetes

En una celda del jupyter notebook:

!pip install numdifftools

Collecting numdifftools

Downloading https :// files.pythonhosted.org/etc...

100%

Installing collected packages: numdifftools

Successfully installed numdifftools -0.9.39

Informatica - Grado en Fısica - UMU 117

Page 127: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

calculo simbolico

Tambien es posible manipular sintacticamente formulas matematicas, sin dar

valores numericos concretos a las variables.

import sympy as s

x = s.symbols(’x’)

s.diff( 3*x**5 - s.sin(2*x) , x)

15*x**4 - 2*cos (2*x)

x,e,M = s.symbols(’x e M’)

kepler = x - e*s.sin(x) - M

s.diff( kepler , x)

-e*cos(x) + 1

Informatica - Grado en Fısica - UMU 118

Page 128: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

condiciones logicas

expresiones que se evaluan a True o False y se se construyencombinando los operadores:

< <= > >= == != in

not and or

1 > 2

n%2 == 0

x > 0 and x**2 <= 100

( x in [10 ,20 ,30] or not (z != y) ) and c == []

Informatica - Grado en Fısica - UMU 119

Page 129: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

condiciones logicas

Se usan en las construcciones if y while.

def fun(x):

if x > 0 and x**2 < 100:

return x

else:

return -3*x

r = 5 * (b if b >= 0 else -b) + 3

n = 17

while n != 1:

print(n)

n = n//2 if n%2==0 else 3*n+1

Informatica - Grado en Fısica - UMU 120

Page 130: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

estructura de bloques

def fun(x,y):

z = x+y

for k in range(10):

print(k)

if k>z:

print('bien')

m = 2

else:

m = 3

return z**m

Informatica - Grado en Fısica - UMU 121

Page 131: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

estructura de bloques

def fun(x,y):

z = x+y

for k in range(10):

print(k)

if k>z:

print('bien')

m = 2

else:

m = 3

return z**m

4

4

4

Informatica - Grado en Fısica - UMU 122

Page 132: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

Graficas

Cada grafica permite especificar:

I una o varias curvas superpuestas, cada una con su estilo(color, grosor, etc.)

I leyenda

I seleccion del intervalo en cada eje, ticks, grid

I tıtulo, nombre de los ejes, anotaciones de texto

I dimensiones de la figura, subplots.

plt.savefig(’nombre.pdf’)

Informatica - Grado en Fısica - UMU 123

Page 133: Introducci on a la Inform atica · 2019-10-23 · I la programaci on est a basada en la L ogica Inform atica - Grado en F sica ... , tel egrafo I 1890s coche, tabulador Hollerith,

0 1 2 3 4 5 6x

1.00

0.75

0.50

0.25

0.00

0.25

0.50

0.75

1.00y hola

bonito plot

sin(x)sin(2x)cos(x)

Informatica - Grado en Fısica - UMU 124