{"cells":[{"metadata":{},"cell_type":"markdown","source":"# TD 1 — Révisions Python et étude de placements financiers\n\nCe TD a pour objectifs de revoir quelques éléments de  Python utiles aux concours et de les utiliser dans des situations financières simples.\n\nOn travaillera notamment sur :\n- les tableaux `numpy` ;\n- les boucles `for` ;\n- les représentations graphiques ;\n- les boucles `while` ;\n- les suites arithmétiques, géométriques et récurrentes.\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"## 0. Révisions préliminaires"},{"metadata":{},"cell_type":"markdown","source":"### 0.1 Tableaux `numpy`\n\nAvant d'exécuter la cellule suivante, essayer de prévoir le contenu des tableaux `A`, `B` et `C`.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import numpy as np\n\nA = np.zeros(4)\nB = np.arange(2, 10, 1)\nC = np.arange(2, 10, 0.5)\n\nprint(\"A =\", A)\nprint(\"B =\", B)\nprint(\"C =\", C)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Étude 1 — Manipulation de tableaux\n\n1. Expliquer le fonctionnement des commandes `np.zeros` et `np.arange`.\n\n2. Créer le tableau\n\n$$\nT=\t[2,2.1,2,2,\\cdots 199.9, 200]\n$$\n\nAfficher la valeur de la **150e case** de \\(T\\).\n\n> Attention : en Python, la première case d'un tableau porte l'indice 0.\n\n3. Créer à l'aide de `np.arange` le tableau des multiples de 7 strictement inférieurs à 100, puis afficher le plus grand d'entre eux.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"T = \n\n# Afficher la valeur de la 150e case :\n# À compléter\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Tableau des multiples de 7 strictement inférieurs à 100 :\n# À compléter\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Étude 2 — Boucle `for`\n\nCréer un tableau `numpy` de 20 cases contenant initialement la valeur 0.\n\nCompléter ensuite ce tableau afin qu'il contienne\n\n$$\n\\sqrt{0},\\sqrt{1},\\sqrt{2},\\ldots,\\sqrt{19}.\n$$\n\nOn utilisera une boucle `for`.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"tableau = ...\n\nfor n in range(20):\n    # À compléter\n    \n\nprint(tableau)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 0.2 Représentations graphiques"},{"metadata":{},"cell_type":"markdown","source":"Exécuter les deux cellules suivantes et observer la différence entre `plt.plot` et `plt.bar`.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nabscisses = np.arange(5)\nordonnees = np.array([2, -1, 4, 1, 1])\n\nplt.plot(abscisses, ordonnees)\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"plt.bar(abscisses, ordonnees)\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Étude 3 — Une suite et son graphique\n\nOn considère la suite\n\n$$\nr_n=\\frac{n}{\\ln(n)},\\qquad n\\geq 1.\n$$\n\n\n1. Représenter les 50 premiers termes de \\((r_n)\\).\n\n2. Quelle conjecture peut-on faire concernant les suites $(n)$ et $\\ln(n)$ ?\n\n3. Recommencer avec 500 termes. La conjecture semble-t-elle confirmée ?\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"abs = np.arange(1, 51)\nord = np.zeros(50)\n\nfor k in range(50):\n    # À compléter\n    \n\nplt.plot(abs, ord, '+')\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 1. Intérêts simples et intérêts composés"},{"metadata":{},"cell_type":"markdown","source":"## Qu'est-ce qu'un intérêt ?\n\nLorsqu'une personne emprunte de l'argent, elle dispose aujourd'hui d'une somme qu'elle ne remboursera que plus tard. En contrepartie, le prêteur reçoit généralement une rémunération : **l'intérêt**.\n\nInversement, lorsqu'une personne place de l'argent, elle accepte de ne pas disposer immédiatement de cette somme et reçoit généralement des intérêts en contrepartie.\n\nLe **taux d'intérêt** permet de calculer le montant de cette rémunération.\n\nPar exemple, si une somme de 10 000 € est placée pendant un an au taux de 5 %, les intérêts produits au cours de l'année sont\n\n$$\n10\\,000\\times\\frac{5}{100}=500\\text{ €}.\n$$\n\nLa somme disponible au bout d'un an est donc\n\n$$\n10\\,000+500=10\\,500\\text{ €}.\n$$\n\nQue se passe-t-il maintenant si le placement dure plusieurs années ? Cela dépend de la manière dont les intérêts sont calculés. On distingue notamment **les intérêts simples** et **les intérêts composés**.\n"},{"metadata":{},"cell_type":"markdown","source":"## 1.1 Intérêts simples\n\nJean place **10 000 €** à un taux annuel d'intérêts simples de **5 %**.\n\nAvec des intérêts simples, les intérêts de chaque année sont calculés **uniquement sur le capital initial**.\n\nOn note $V_n$ la valeur acquise après $n$ années.\n"},{"metadata":{},"cell_type":"markdown","source":"### Étude 4\n\n1. Calculer à la main  $V_0,V_1,V_2$.\n\n2. Quelle somme est ajoutée chaque année ?\n\n3. En déduire une relation entre $V_{n+1}$ et $V_n$.\n\n4. Quelle est la nature de la suite $(V_n)$ ?\n\n5. Exprimer $V_n$ en fonction de $n$.\n\n6. Écrire un programme affichant les valeurs acquises pendant les 10 premières années.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"V = 10000\n\nfor n in range(11):\n    # À compléter\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 1.2 Intérêts composés\n\nBernard place maintenant **10 000 €** au même taux annuel de **5 %**, mais les intérêts sont capitalisés : chaque année, ils sont calculés sur la totalité de la somme présente sur le compte.\n"},{"metadata":{},"cell_type":"markdown","source":"### Étude 5\n\n1. Calculer $V_0,V_1,V_2,V_3$.\n\n2. Montrer que\n\n$$\nV_{n+1}=1,05V_n.\n$$\n\n3. Quelle est la nature de la suite $(V_n)$ ?\n\n4. En déduire $V_n$ en fonction de $n$.\n\n5. Programmer le calcul des 10 premières valeurs.\n\n6. Expliquer avec vos propres mots la différence entre **intérêts simples** et **intérêts composés**.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"V = 10000\n\nfor n in range(11):\n    # À compléter\n    \n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 2. Comparaison de deux placements"},{"metadata":{},"cell_type":"markdown","source":"Jean place **50 000 €** à un taux annuel d'intérêts **simples de 8 %**.\n\nBernard place **50 000 €** à un taux annuel d'intérêts **composés de 7 %**.\n"},{"metadata":{},"cell_type":"markdown","source":"### Étude 6 — Qui fait le meilleur placement ?\n\n1. Lequel des deux placements vous semble le plus avantageux ? Formuler une conjecture.\n\n2. Compléter le programme suivant afin de représenter les deux valeurs acquises pendant \\(n\\) années.\n\n3. Que constate-t-on ?\n\n4. À partir de quelle année le placement de Bernard devient-il plus avantageux ?\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"n = int(input(\"Nombre d'années ? \"))\n\nVJ = np.zeros(n + 1)\nVB = np.zeros(n + 1)\n\nVJ[0] = 50000\nVB[0] = 50000\n\nfor k in range(n):\n    VJ[k + 1] = # À compléter\n    VB[k + 1] = # À compléter\n\nabs = np.arange(n + 1)\n\nplt.plot(abs, VJ, label=\"Jean\")\nplt.plot(abs, VB, label=\"Bernard\")\nplt.legend()\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 3. Première utilisation de `while`"},{"metadata":{},"cell_type":"markdown","source":"### Étude 7 — Quand Bernard dépasse-t-il Jean ?\n\nOn souhaite déterminer automatiquement la première année pour laquelle la valeur acquise par Bernard est supérieure à celle de Jean.\n\nCompléter le programme suivant puis interpréter le résultat obtenu.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"n = 0\nVJ = 50000\nVB = 50000\n\nwhile ...:\n    # Modifier la condition de la boucle\n    \n\n# À compléter\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Étude 8 — Objectif 300 000 €\n\nBernard conserve son placement à \\(7\\%\\) d'intérêts composés.\n\n1. Écrire un programme utilisant une boucle `while` donnant le nombre d'années nécessaires pour que la valeur acquise soit supérieure ou égale à **300 000 €**.\n\n2. Retrouver le résultat mathématiquement .\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"annee = 0\nVB = 50000\n\nwhile ...:\n    # À compléter\n    \n\n# Afficher le nombre d'années\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 4. Une situation financière conduisant à une suite récurrente"},{"metadata":{},"cell_type":"markdown","source":"### Étude 10 — Dette d'une entreprise\n\nUne entreprise doit initialement **100 000 €** à une banque.\n\nOn note \\(u_n\\) le montant de sa dette au début de l'année \\(n\\), **exprimé en milliers d'euros**. Ainsi,\n\n$$\nu_0=100.\n$$\n\nChaque année, l'entreprise refinance sa dette. La banque fixe le taux d'intérêt en fonction du niveau d'endettement : plus la dette est importante, plus le prêt est considéré comme risqué.\n\nOn suppose que, lorsque la dette vaut \\(u_n\\) milliers d'euros, le taux annuel, exprimé en pourcentage, est\n\n$$\n4+0,1u_n.\n$$\n\nÀ la fin de chaque année, l'entreprise rembourse **8 000 €**, c'est-à-dire \\(8\\) milliers d'euros.\n"},{"metadata":{},"cell_type":"markdown","source":"#### 1. Comprendre le modèle\n\nSi $u_n=100$, quel taux la banque applique-t-elle ?\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"#### 2. Obtenir la relation de récurrence\n\nAu début de l'année, la dette est égale à\n\n$$\nu_n.\n$$\n\nLes intérêts représentent\n\n$$\nu_n\t\\times\\dfrac{4+0,1u_n}{100}.\n$$\n\nAvant le remboursement, la dette devient donc\n\n$$\nu_n+u_n \\frac{4+0,1u_n}{100}.\n$$\n\nL'entreprise rembourse ensuite \\(8\\) milliers d'euros. Ainsi,\n\n$$\nu_{n+1}\n=\nu_n+u_n\\frac{4+0,1u_n}{100}-8.\n$$\n\nDévelopper cette expression et vérifier que\n\n$$\n\\boxed{u_{n+1}=1,04u_n+0,001u_n^2-8.}\n$$\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"#### 3. Expérimentation numérique\n\nCompléter le programme afin d'afficher les 10 premiers termes de la suite.\n\nQue semble-t-il se passer ?\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"u = 100\n\nfor n in range(10):\n    print(n, u)\n    u = # À compléter\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### 4. Étude mathématique\n\nOn pose\n\n$$\nf(x)=1,04x+0,001x^2-8\n$$\n\nde sorte que\n\n$$\nu_{n+1}=f(u_n).\n$$\n\n1. Étudier les variations de $f$ sur $[0,+\\infty[$.\n\n2. Résoudre l'équation $f(x)=x$. On notera $\\alpha$ l'unique point fixe positif.\n\n3. Vérifier que\n\n$$\n\\alpha=20(\\sqrt{21}-1)\\simeq71,65.\n$$\n\n4. Comparer $f(x)$ et $x$ selon les valeurs de $x$.\n\n5. Montrer que l'intervalle $]\\alpha,+\\infty[$ est stable par $f$.\n\n6. Sachant que $u_0=100>\\alpha$, montrer par récurrence que\n\n$$\n\\forall n\\in\\mathbb N,\\qquad u_n>\\alpha.\n$$\n\n7. En déduire que \\((u_n)\\) est croissante.\n\n8. Étudier la convergence de \\((u_n)\\).\n\n9. Interpréter financièrement le nombre $\\alpha\\simeq71,65$.\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3"}},"nbformat":4,"nbformat_minor":2}