<jupyter_start><jupyter_text>Graficación 3D $$f(x, y) = z$$<jupyter_code>import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(projection='3d')

X = np.linspace(-2, 2, 1000)
Y = np.linspace(-2, 2, 1000)

X, Y = np.meshgrid(X, Y)

Z = 3*X**2+5*Y**2 # 3x^2+5y^5

ax.plot_surface(X, Y, Z, linewidth=0, antialiased=True, cmap='magma')
# ax.contour(X, Y, Z, linewidths=3)<jupyter_output><empty_output><jupyter_text>Graficando cónicas Ecuación de la parábola$$ y^2 = 4ax $$ Ecuación del círculo$$ x^2 + y^2 = 2^2 $$ Ecuación de la elipse$$ \frac{x^2}{4^2} + \frac{y^2}{2^2} = 1 $$ Ecuación de la hipérbola$$ \frac{x^2}{2^2} - \frac{y^2}{1^2} = 1 $$<jupyter_code>y = np.linspace(-5, 5, 100)

a = .3
plt.plot(y**2/4*a, y)
X = np.linspace(-9, 9, 400)
Y = np.linspace(-5, 5, 400)

X, Y = np.meshgrid(X, Y)

a = .3

plt.contour(X, Y, Y**2-4*a*X, [0])
X = np.linspace(-9, 9, 400)
Y = np.linspace(-5, 5, 400)

X, Y = np.meshgrid(X, Y)

plt.contour(X, Y, X**2 + Y**2, [2])
X = np.linspace(-9, 9, 400)
Y = np.linspace(-5, 5, 400)

X, Y = np.meshgrid(X, Y)

a = 4
b = 2

plt.contour(X, Y, X**2/a**2 + Y**2/b**2, [1])
X = np.linspace(-9, 9, 400)
Y = np.linspace(-5, 5, 400)

X, Y = np.meshgrid(X, Y)

a = 2
b = 1

plt.contour(X, Y, X**2/a**2 - Y**2/b**2, [1])<jupyter_output><empty_output><jupyter_text>Encontrar la raíz de una ecuación Método de bisección (o búsqueda binaria)Se quiere resolver la ecuación $$    f(x) = 0$$con $f$ continua en $[a,b]$, además $f(a) 0$. Lo que haremos es tomar el punto medio del intervalo y ver cuanto vale $f$ ahí, si toma el valor de 0 y acabamos, pero si no entonces el valor será mayor o menor que 0 dependiendo de eso buscaremos el cero en el intervalo correspondiente.<jupyter_code>def biseccion(func, left, right, max_iter = 100):
    """ calcula una raiz de func por el metodo de biseccion

    Args:
        func: callable la función a la que le buscaremos la raíz
        left: Number lado izquierdo del intervalo, my_func(left) < 0 
        right: Number lado derecho del intervalo, my_func(right) > 0 
        max_iter: int número de pasos que deseamos ejecutar el método

    Returns:
        float una raíz para my_func
    """
    left = np.array(left, dtype=float)
    right = np.array(right, dtype=float)
    step_ctn = 0

    while np.abs(right-left)>1e-6 and step_ctn <= max_iter:
         step_ctn = step_ctn + 1
         mid = (left+right)/2

         if func(mid) == 0:
             return mid
         elif func(mid) > 0:
             right = mid
         else:
             left = mid

    if step_ctn >= max_iter:
        print('Se alcanzó el número máximo de iteraciones.')
    
    return mid
def mi_funcion(x):
    return x**2-1/3
x = np.linspace(0, 1, 100)

plt.plot(x, mi_funcion(x))
plt.hlines(0, 0, 1, colors='red')
root = biseccion(mi_funcion, 0, 1)
print('Una raíz es:', root, 'y toma el valor', mi_funcion(root))
x = np.linspace(0, 1, 100)

plt.plot(x, mi_funcion(x), color='blue')
plt.hlines(0, 0, 1, colors='red')
plt.plot(root, mi_funcion(root), marker='*', markersize=10, color='black')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16421725239616614, 'fraction_numerical': 0.04984025559105431, 'mean_word_length': 3.4036568213783402, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '239341', 'license': 'MIT', 'n_tokens_mistral': 1448, 'n_tokens_neox': 1360, 'n_words': 371, 'path': '20211130_metodo_de_biseccion.ipynb', 'repo_name': 'jmbarrios/THC-Python', 'size': '3130'}