{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Auxiliar 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Numpy y trabajo con vectores" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5]\n", "\n", "1\n", "5\n" ] } ], "source": [ "python_list = [1 ,2 ,3 ,4 ,5]\n", "print(python_list)\n", "print(type(python_list))\n", "print(python_list[0])\n", "print(python_list[4])" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n" ] } ], "source": [ "# Ejemplo de una función sobre un float\n", "def f(x):\n", " 'Suma 1 al numero x'\n", " return x+1\n", "\n", "print(f(1))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "can only concatenate list (not \"int\") to list", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpython_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36mf\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m'Suma 1 al numero x'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: can only concatenate list (not \"int\") to list" ] } ], "source": [ "print(f(python_list))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 3, 4, 5, 6]\n" ] } ], "source": [ "new_list = []\n", "for i in python_list:\n", " new_list.append(f(i))\n", "\n", "print(new_list)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3 4 5]\n", "\n" ] } ], "source": [ "import numpy as np # Importamos numpy\n", "\n", "numpy_vec = np.array(python_list)\n", "print(numpy_vec)\n", "print(type(numpy_vec))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2 3 4 5 6]\n" ] } ], "source": [ "print(f(numpy_vec))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Derivada hacia adelante" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def forward_derivative(function, x, h):\n", " 'Calcula la derivada hacia adelante para una función f con respecto a la variable x con espaciado h'\n", " dx_dt = (function(x + h) - function(x)) / h\n", " return dx_dt\n", "# assert type(f) == function -> Traer un atribute error\n", "\n", "def poly(x):\n", " return x**4 - 3*x**2 + 10*x + - 1337\n", "\n", "def d_poly(x):\n", " return 4*x**3 - 6*x + 10" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.rcParams['figure.figsize'] = [15, 7.5] # Seteo global del tamaño de los plots\n", "\n", "# Parámetros iniciales\n", "x_0 = 0\n", "x_t = np.linspace(0, 10, 100) # linspace admite linspace(start, stop, num)\n", "\n", "# Ejecución de la derivada\n", "d_poly_forward_0 = forward_derivative(poly, x_0, 10**-3)\n", "d_poly_forward_t = forward_derivative(poly, x_t, 10**-3)\n", "\n", "# Checkeo del tipo de variable\n", "print(type(d_poly_forward_0))\n", "print(type(d_poly_forward_t))\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Parámetros de la figura\n", "fig = plt.figure()\n", "ax = plt.axes()\n", "plt.grid(b=True, color='aqua', alpha=0.25, linestyle='--', linewidth=1)\n", "plt.tick_params(axis='both', direction='out', length=6, width=2, labelcolor='b', colors='r')\n", "\n", "# Ploteo en la figura\n", "plt.plot(x_t, d_poly_forward_t, color = 'magenta', linewidth=2, label = 'Valor numérico calculado')\n", "plt.plot(x_t, d_poly(x_t), color = 'yellow', linestyle = '-.', linewidth=2, label = 'Valor analítico')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Derivada centrada y programación en base a vectores" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n" ] } ], "source": [ "# Programaremos una derivada centrada en base a algun problema físico\n", "\n", "def center_derivative(function, t_0, t_f, dt):\n", " \n", " t = np.arange(t_0, t_f, dt) # arange admite arange(start, stop, step)\n", " df_dt = (function(t + dt) - function(t - dt)) / 2*dt\n", " return t, df_dt\n", "\n", "poly_center_derivative = center_derivative(poly, 0, 10, 10**-5)\n", "print(type(poly_center_derivative))\n", "print(type(poly_center_derivative[0]))\n", "print(type(poly_center_derivative[1]))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }