Practica Python

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Universidad de Buenos Aires - Facultad de Ciencias Exactas y Naturales - Depto.

de Matemática

Elementos de Cálculo Numérico / Cálculo Numérico


Primer Cuatrimestre 2020

Introducción a Python.

Software: Dadas las condiciones actuales, usaremos python para la parte computacional
de la materia. Hay dos opciones para correr los programas en sus computadoras:

• Para poder instalar python3 en sus computadoras, la opción más sencilla es instalar
Anaconda, y spyder3. Encontrarán Anaconda en este link. En windows, Anaconda
instala también spyder3, y en Ubuntu, puede que tengan que también hacer un sudo
apt install spyder3.

• Si nada de esto funciona, o no tienen ganas de instalar python, lo elegimos porque existen
página que nos permiten correr programas desde internet. En esta materia vamos a usar
repl.it. Haganse una cuenta y a programar!

Vamos a escribir los programas en scripts. Cada script es una serie de instrucciones que la
computadora realiza, para llegar a cierto resultado de interés. Como en la vida, puede haber
varias formas de llegar al mismo resultado, cada una con ventajas y desventajas. Checkeen los
videos introductorios en la página de la materia, y soloLearn para una intro a las sentencias
básicas de python!
Pequeño glosario:

Figura 1: Consola y panel de scripts en repl.it. A la izquierda, listado de scripts. En el centro,


script actual, a la derecha, consola.

• Programa/Script: El programa es el set de instrucciones que le damos a la computadora.


Lo podemos tener en distintos formatos (nuestra mente, papel y lapiz, un archivo de
texto). En repl tenemos el espacio central (ver Figura 1) para escribir el conjunto de
instrucciones que después indicaremos a la computadora que realice.

1
• Correr (el programa, script): Le llamamos correr al acto de enviar a la computadora el
programa para que lo procese.

• Consola: (ver Figura 1). La consola es el espacio en la pantalla en el cual se envı́an las
instrucciones para que la computadora las realice.

• Variables: Las variables son signos asociados a espacio en la memoria en las cuales
podemos asignar valores (ej: x= 5). Siempre la asignación se realiza con la variable a
la izquierda (nunca 5 = x).

Ejercicio 1. Aritmética. En el nivel más básico, python funciona como calculadora. Prueben
escribir en la consola :

• 2*3-1 • 3*2**4 • 3-2**4 • 2**3

• 8/2*4 • (3*2)**4 • 3**4-3 • 5e-3

Ejercicio 2. Variables y listas. Podemos guardar los números en variables, y realizar


cálculos con ellas. A su vez, podemos guardar secuencias de números en listas. Podemos
pensar a una lista como una bolsa llena de objetos con un indice asignado.
Para definir una lista, usamos corchetes. Por ejemplo, x=[1,2] representa una lista con
dos elementos. Para acceder a los elementos, usamos corchetes nuevamente. La indexación
en python comienza en cero. Por lo tanto x[0] será igual a 1 y x[1] será igual a 2
En python, cuando asignamos una lista a una variable, esta variable hace referencia al
lugar de la memoria en la que se encuentra la lista, y no a su contenido. Es por esto que dos
variables apuntando a la misma lista puede generar problemas. Por ejemplo, si hacemos z =
x, y cambiamos z[0]=10, ahora x[0] también valdrá 10!
Nuevamente, exploren las siguientes operaciones (ordenadamente)

a) x = [3, 4, 7, 11];y = [1, 5, 6] h) len(y)

b) [x, y] i) print(y)

c) x + y j) y*2

d) z = x+y k) y.append(100);y

e) x[0]=0; w=1 l) y[-1]

f) w = [x,y] m) z[2:4]

g) x[0]=0;w n) z[:5]

Ejercicio 3. Vectores. En el ejercicio anterior vimos que en muchos aspectos las listas
no se comportan como lo que querrı́amos: como vectores en RN . Si bien son buenas para
representar secuencias, no nos permiten, por ejemplo, sumar dos vectores. Para cumplir con
esta necesidad, python nos ofrece el paquete numpy, que nos permite crear arrays que funcionan
bastante acorde a lo que esperamos. Para incorporar las funciones de numpy, incorporamos
(o escribimos en la consola) la sentencia:
import numpy as np

2
y tendremos acceso a todas las funciones de numpy, agregandoles el prefijo np.. Entre
estas funciones, están las que usamos habitualmente como cos, sin, sqrt (raı́z cuadrada),
log (logaritmo en base e), ası́ como los números e o π

a) x = np.array([3, 4, 7, 11]) h) w=x;x[0]=100;print(w)

b) y = np.array([1, 5, 6, 8]) i) len(y)

c) x + y j) A = np.array([[1,2,3,4],[5,6,7,8]]);A

d) np.linspace(1,8,10) k) A*x

e) np.arange(8,1,-1) l) np.dot(A,x)

f) np.log(x) m) np.dot(x,x)

g) np.cos(np.pi) n) np.transpose(A)

Ejercicio 4. Prueben generar las siguientes secuencias, con las funciones que vimos hasta
aquı́.

a) Los números pares de 0 a 50

b) La secuencia [10, 9.5, 9, 8.5, ..., -8.5, -9, -9.5, -10]

Ejercicio 5. Ciclos y condicionales. Todos los lenguajes de programación cuentan con


tres funciones básicas, que permiten condicionar acciones, e iterar sobre secuencias. Estas son
las funciones for,if y while. Con for podemos iterar sobre una lista, realizando acciones
sobre sus elementos. Con if podemos realizar acciones únicamente cuando se cumple cierta
condicion, y while realiza una combinación de ambas, realizando una acción una y otra vez
mientras se cumpla cierta condicion.
Vale aclarar aquı́ que un tipo muy útil de variables en python son las variables booleanas,
que indican en valor de verdad de una sentencia (True o False). Algunas sentencias que
pueden probar: 5>2,6>=6,10<5,x=np.array([1,2,3]);x>2.
Prueben el ciclo for. La sintaxis es la siguiente:

for(i in [1,2,3]):
print(i)

Otro aspecto importante a notar aquı́ es la identación. En python, indicamos el subconjunto


de instrucciones que corresponden a una función mediante identación. Comparen estos dos
códigos:

k=0
for i in [1,2,3]:
k = k + i
if k>2:
print(k)

3
k=0
for i in [1,2,3]:
k = k + i
if k>2:
print(k)

El ciclo while combina ambas funcionalidades. Por ejemplo (x=[] genera una lista vacı́a):
k=0
x= []
while k < 10:
k = k + 1
x.append(k)
print(x)
Basandose en estas herramientas, construyan un código que:
• a) Encuentre los números cuyas raices cuadradas son enteras y menores que 10.

• b) Encuentre los números primos menores a 100 (ayuda: la función np.mod(x,y) calcula
el resto de la división entre x e texttty).
Ejercicio 6. Funciones definidas por el usuario Todo lenguaje de programación ra-
zonable tiene una manera de permitir al usuario definir una función. Podemos pensar esta
funcion como un pequeño conjunto de instrucciones que anotamos, para no tener que repetir
su escritura futuras veces. La sintaxis es la siguiente:
def nombre_de_la_funcion(arg1,arg2,...):
primer instruccion
segunda instruccion
...
donde son fundamentales la identacion y los dos puntos. Para que la función retorne un valor,
debemos indicar un retorno:
def dos_equis(x):
resultado = 2*x
return(resultado)
Luego de su definición, podemos usarlas como usamos la función cos, u otras.
• a) Construya una función que reciba los lados de un triángulo, y calcule los ángulos que
forman.

• b) Reciba un número, y devuelva todos los números primos hasta ese número.
Ejercicio 7. Veamos como graficar en python. Partimos de:
import numpy as np
x= np.linspace(0,10,20)
y = x**2

4
En python, las funciones para graficar las encontramos en matplotlib.pyplot. Lo importa-
mos: import matplotlib.pyplot as plt Con los siguientes comandos graficamos x contra
y, ponemos nombre a los ejes, un limite, y guardamos la figura:

plt.plot(x,y)
plt.xlabel('Equis')
plt.ylabel('Ye')
plt.xlim(0,10)
plt.ylim(0,100)
plt.savefig('equisye.png')

Ahora, usando estos comandos, graficar:

a) La función seno entre −2π y 2π.

b) La función raı́z cuadrada entre 0 y 100.

c) La función y = 3x2 + 5 entre −5 y 5.

Ejercicio 8. Matrices. Previamente, vimos que numpy nos permite construir una matriz con
el comando np.array(), y dandole como argumento listas con listas: A=np.array([[1,2],[3,4]].
Para acceder a los elementos de una matriz en python podemos usar las tuplas, que se rep-
resentan por una serie de números entre paréntesis. Por ejemplo, A[(1,1)] es 1, y A[(2,1)]
es 3. Algunas otras funciones útiles:

• Si A es un array, A.shape es una tupla con las dimensiones de A (filas y columnas).

• np.identity(n) devuelve la matriz identidad de tamaño n.

• np.transpose(A) devuelve la matriz traspuesta de A.

• np.ones(q) donde q puede ser un entero o una n-tupla, devuelve una matriz con filas y
columnas según q. Por ejemplo, np.ones((2,2)) devuelve una matriz de 2x2 llena de
unos.

• np.zeros(q) funciona igual a np.ones, pero con ceros en vez de unos.

• np.full(q,value) funciona igual a np.ones pero llena la matriz con el valor value.

• Pueden encontrar más rutinas acá.

Prueben hacer, y comparen:

• Una funcion que calcule la matriz traspuesta de otra.

• Una función que genere la matriz identidad, a partir de una dada dimension.

Ejercicio 9. Estudiar los siguientes programas y decidir qué hacen:

5
a) def y(x):
result = 1
for i in range(1,x+1,1):
result=result*i
return(result)

b) def y(x):
if np.floor(x)-x<0:
print('X no es entero.')
result = NaN
else:
if x==0:
result = 1
else:
result=1
for i in range(1,x+1,1):
result = result*i
return(result)

Nota: floor(x) devuelve la parte entera de x.

c) def m(x):
n = len(x)
a = x[0]
for i in range(2,n):
if x[i]<a:
a = x[i]
return(a)

6
d) def A(n):
A = []
for i in range(n):
a = []
for j in range(n):
if i==j:
a.append(1)
else:
a.append(0)
A.append(a)
A = np.asarray(A)
return(A)

e) a = 1
while not (a+1)==1:
a = a/2
a

f) def g(x):
y = 1
z = 0
i = 1
while not y==z:
z = y;
y = y+x^i/f(i);
i = i+1;
return(y)
Nota: f(i) es la función del item a).

Ejercicio 10. Escribir un programa que reciba como input una lista y calcule su elemento
máximo.

Ejercicio 11. Modificar el programa del ı́tem anterior para que devuelva el elemento máximo
pero también el primer ı́ndice en el que este máximo se realiza.

Ejercicio 12. Escribir un programa que reciba como input una matriz (array de dos dimen-
siones) y calcule su elemento máximo. ¿Funciona este programa si en lugar de una matriz se
ingresa un vector?

Nota: Conviene estudiar los comandos np.max(A) y np.argmax(A), para A una matriz.
Comparen los resultados con lo que obtendrian estirando la matriz como un vector de nm
componentes, con n el numero de filas y m el de columnas de A

También podría gustarte