{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "def euler(n):\n", " x = 0\n", " y = 1\n", " L = [(x, y)]\n", " for k in range(n):\n", " x = x + 1 / n\n", " y = y * (1 + 1 / n)\n", " L.append([x, y])\n", " return L" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0, 1),\n", " [0.1, 1.1],\n", " [0.2, 1.2100000000000002],\n", " [0.30000000000000004, 1.3310000000000004],\n", " [0.4, 1.4641000000000006],\n", " [0.5, 1.6105100000000008],\n", " [0.6, 1.771561000000001],\n", " [0.7, 1.9487171000000014],\n", " [0.7999999999999999, 2.1435888100000016],\n", " [0.8999999999999999, 2.357947691000002],\n", " [0.9999999999999999, 2.5937424601000023]]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "euler(10)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(6,6))\n", "points = np.array(euler(10))\n", "plt.axhline(y=0,xmin=0,xmax=1,color='black')\n", "plt.axvline(x=0,ymin=0,ymax=1, color='black')\n", "x = points[:,0]\n", "y = points[:,1]\n", "plt.plot(x, y, 'bo-')\n", "for k in range(11):\n", " plt.annotate(r\"$A_{%s}$\"%k, xycoords='data', xy=(x[k], y[k]), xytext=(x[k], y[k]-0.1), color='blue')\n", "t = np.linspace(0, 1, 1000)\n", "plt.plot(t, np.exp(t), color='black',linestyle='dashed',label=r'$y=e^{x}$')\n", "plt.legend()\n", "plt.title(r'Approximation de $y=e^{x}$ avec un pas de $0,1$')\n", "plt.show()\n", "plt.savefig('euler-10.pdf')" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "\n", "import matplotlib.animation\n", "from IPython.display import HTML\n", "\n", "NFrames = 30\n", "\n", "fig, ax1 = plt.subplots(1, 1,figsize=(15, 6))\n", "\n", "#ax1\n", "t = np.linspace(0, 1, 1000)\n", "ax1.plot(t, np.exp(t), color='black',linestyle='dashed',label=r'$y=e^{x}$')\n", "\n", "#données animation\n", "courbeSegments, = ax1.plot([],[],'.-',color=\"#1e7fcb\")\n", "ann_list = [] #liste d'annotations\n", "\n", "#Positionnement des axes\n", "ax1.spines['right'].set_color('none')\n", "ax1.spines['top'].set_color('none')\n", "ax1.xaxis.set_ticks_position('bottom')\n", "ax1.spines['bottom'].set_position(('data',0))\n", "ax1.yaxis.set_ticks_position('left')\n", "ax1.spines['left'].set_position(('data',0))\n", "ax1.set_ylim((0, 3))\n", "\n", "def init():\n", " global courbeSegments\n", " courbeSegments.set_data([], [])\n", " return (courbeSegments,) \n", "\n", "def animate(i):\n", " global courbeSegments, ann_list\n", " for a in ann_list:\n", " a.remove()\n", " ann_list[:] = []\n", " points = np.array(euler(i))\n", " lx, ly = points[:,0], points[:,1]\n", " courbeSegments.set_data(lx, ly)\n", " for k in range(i + 1):\n", " ann = ax1.annotate(r\"$A_{%s}$\"%k, xycoords='data', xy=(lx[k], ly[k]), xytext=(lx[k], ly[k]-0.01), color='blue')\n", " ann_list.append(ann)\n", " ax1.set_title('Courbe approchée - de la fonction exponentielle par la méthode d\\'Euler, nombre de subdivisions:{}'.format(i+1))\n", " fig.savefig('approx-expo-euler-{}subdivisions.pdf'.format(i))\n", " return (courbeSegments,)\n", " \n", "\n", "plt.close ()\n", "ani = matplotlib.animation.FuncAnimation(fig, animate, frames=NFrames,init_func=init,blit=False,interval=1000)\n", "# l'un ou l'autre\n", "#HTML(ani.to_jshtml())\n", "HTML(ani.to_html5_video())\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax1 = plt.subplots(1, 1,figsize=(15, 6))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax1" ] } ], "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }