Intro

Este es el primer taller de informática 3, que cubre conceptos básicos de Python, gráficos y ajustes, use este notebook para resolver el taller y, por favor use tantas celdas como necesite pero use las celdas marcadas como primera celda para cada ejercicio, en orden, para que sea más fácil calificar.


In [1]:
# Ejecute esta celda para importar las librerías y funciones necesarias

%matplotlib notebook
from IPython.display import set_matplotlib_formats
set_matplotlib_formats('png', 'pdf')

import numpy as np
import matplotlib.pyplot as plt

from numpy import polyfit, polyval
from scipy.stats import linregress
from scipy.optimize import curve_fit

Gráficos

Realice los gráficos del pdf adjunto graficos.pdf, los gráficos deben tener todos los detalles (colores, grillas, y ordenamiento multigráfico).


In [2]:
# Empiece a construir los gráficos en esta celda, use una celda por gráfico

Ajustes

Ajustes lineales

Utilizando la función linregress, ajuste los siguíentes datos, produzca un gráfico con los datos originales y la regresión lineal, haga que el label del ajuste sea la ecuación de la recta que encontró incluyendo el valor del coeficiente de correlación r.


In [3]:
x = np.linspace(0, 10)
y = 3.0 * x - 5
y += np.random.normal(0, 0.1, size=y.shape)

In [4]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [5]:
x = np.linspace(0, 10)
y = 3.0 * x - 5
y += np.random.normal(0, 1.0, size=y.shape)

In [6]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [7]:
x = np.linspace(0, 10)
y = 3.0 * x - 5
y += np.random.normal(0, 10.0, size=y.shape)

In [8]:
# Empiece a construir el gráfico y el ajuste en esta celda

Ajustes linealizados

Usando linealización y la función linregress ajuste los siguientes datos, recuerde recuperar los factores y datos originales al terminar el ajuste lineal, realize el gráfico lado a lado con el ajuste lineal y el ajuste de los datos originales.


In [9]:
x = np.linspace(0, 10)
y = 3.0 * x ** 2
y += np.random.normal(0, 0.1, size=y.shape)

In [10]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [11]:
x = np.linspace(0, 10)
y = 3.0 * np.sqrt(x)
y += y * np.random.normal(0, 0.05, size=y.shape)

In [12]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [13]:
x = np.linspace(0, 10)
y = 3.0 * x ** 0.75
y += np.random.normal(0, 0.1, size=y.shape)

In [14]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [15]:
x = np.linspace(0, 10)
y = np.sqrt(5 * x)
y += y * np.random.normal(0, 0.05, size=y.shape)

In [16]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [17]:
x = np.linspace(0.1, 10)
y = np.log(5 * x)
y += y * np.random.normal(0, 0.05, size=y.shape)

In [18]:
# Empiece a construir el gráfico y el ajuste en esta celda

Ajustes polinomiales

Usando la función polyfit ajuste los siguientes polinomios, produzca un gráfico con los datos originales y el ajuste del polinomio, escriba el polinomio resultante para cada caso.


In [19]:
x = np.linspace(-10, 10)
y = polyval(np.random.normal(0, 3, size=2), x)
y += np.random.normal(0, 0.5, size=y.shape)

In [20]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [21]:
x = np.linspace(-10, 10)
y = polyval(np.random.normal(0, 3, size=3), x)
y += np.random.normal(0, 0.5, size=y.shape)

In [22]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [23]:
x = np.linspace(-50, 50, 1000)
y = polyval(np.random.normal(0, 10, size=4) / np.exp(np.linspace(1, 10, 4))[::-1], x)
y += np.random.normal(0, 0.5, size=y.shape)

In [24]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [25]:
x = np.linspace(-50, 50, 1000)
y = polyval(np.random.normal(0, 10, size=5) / np.exp(np.linspace(1, 10, 5))[::-1], x)
y += np.random.normal(0, 0.5, size=y.shape)

In [26]:
# Empiece a construir el gráfico y el ajuste en esta celda

Ajustes arbitrarios

Usando la función curve_fit ajuste las siguientes funciones, recuerde incluir un gráfico de los datos originales, así como el ajuste obtenido, e incluya en los gráficos una referencia la la función objetivo usada así como los parámetros optimos obtenidos con el ajuste.


In [ ]:
x = np.linspace(-50, 50, 1000)
y = np.exp(-(x - 10) ** 2 / 3)
y += np.random.normal(0, 0.01, size=y.shape)

In [22]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [ ]:
x = np.linspace(-50, 50, 1000)
y = np.exp(-(x - 10) ** 2 / 3) + np.exp(-(x + 20) ** 2 / 3)
y += np.random.normal(0, 0.01, size=y.shape)

In [22]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [ ]:
x = np.linspace(-50, 50, 1000)
y = 4 * np.exp(-(x - 10) ** 2 / 3) + 0.5 * np.exp(-(x + 20) ** 2 / 3)
y += np.random.normal(0, 0.01, size=y.shape)

In [22]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [ ]:
x = np.linspace(-50, 50, 1000)
y = np.exp(-(x - 10) ** 2 / 3) + np.exp(-(x + 20) ** 2 / 3) + 0.1 * np.sqrt(np.abs(x))
y += np.random.normal(0, 0.01, size=y.shape)

In [22]:
# Empiece a construir el gráfico y el ajuste en esta celda

In [40]:
x = np.linspace(-10, 10, 1000)
y = 100 * np.exp(-(x) ** 2 / 3) + x ** 2
y += np.random.normal(0, 0.01, size=y.shape)

In [22]:
# Empiece a construir el gráfico y el ajuste en esta celda