{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ec09d889",
   "metadata": {},
   "source": [
    "# Feuille d'exercices 9 -- avancé\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "```{admonition} Objectifs\n",
    "* Expressions symboliques\n",
    "* Fonctions : dérivation, intégration, limites\n",
    "* Sommes, produits et séries\n",
    "```\n",
    "\n",
    "\n",
    "\n",
    "```{warning} \n",
    "Ces exercices sont prévus pour les étudiant·e·s ayant déjà réussi la feuille d'exercices \"classiques\".\n",
    "```\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "## Exercice 6 : aire d'une ellipse\n",
    "\n",
    "Généralement, une ellipse a pour équation cartésienne :\n",
    "\n",
    "$$\n",
    "    \\left(\\frac{x}{a}\\right)^2 + \\left(\\frac{y}{b}\\right)^2 = 1\n",
    "$$\n",
    "\n",
    "où $a$ et $b$ sont deux paramètres de l'ellipse (grand coté et petit coté).\n",
    "\n",
    "\n",
    "\n",
    "**Question 1.** Définir l'équation de l'ellipse comme une expression symbolique en les variables $x, y, a, b$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94c0e879",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5f46c46",
   "metadata": {},
   "source": [
    "**Question 2.** En effectuant les substitutions adéquates, vérifier que l'ellipse admet deux symétries axiales, selon l'axe des abscisses et selon l'axe des ordonnées."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6545ca66",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7559d162",
   "metadata": {},
   "source": [
    "**Question 3.** À partir des questions précédentes, et à l'aide des fonctions d'intégration de sagemath, calculer l'aire de l'ellipse en fonction de $a$ et $b$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e574ed5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8edb4212",
   "metadata": {},
   "source": [
    "## Exercice 7 : méthode des trapèzes\n",
    "\n",
    "Un trapèze rectangle a la forme suivante :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e42fe469",
   "metadata": {},
   "outputs": [],
   "source": [
    "polygon([[0,0], [1,0], [1,3], [0,4]], axes=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1eecad0",
   "metadata": {},
   "source": [
    "Il est formé de deux côtés parallèles et de deux angles droits.\n",
    "\n",
    "\n",
    "**Question 1.** Écrire une fonction ``aire_trapeze(base, cote1, cote2)`` qui calcule l'aire d'un trapèze dont la base (le côté ayant deux angles droits) a longueur ``base`` et dont les deux côtés parallèles ont longueur ``cote1`` et ``cote2``."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "530387f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d2c7ad8",
   "metadata": {},
   "source": [
    "La méthode des trapèzes permet de calculer une valeur approchée d'une intégrale. Supposons que l'on souhaite calculer\n",
    "\n",
    "$$\n",
    "    I = \\int_a^b f(t) dt\n",
    "$$\n",
    "\n",
    "L'idée est la suivante :\n",
    "- on fixe un paramètre entier $n \\ge 1$, destiné à devenir grand,\n",
    "- on découpe l'intervalle $[a,b]$ en $n$ sous-intervalles réguliers $[t_i, t_{i+1}]$, autrement dit $t_0 = a$ et $t_{i+1} = t_i + (b-a)/n$\n",
    "- on calcule l'aire $A_i$ du trapèze dont les $4$ sommets ont pour coordonnées dans le plan :\n",
    "\n",
    "$$\n",
    "    (t_i, 0), \\quad (t_{i+1}, 0), \\quad (t_{i+1}, f(t_{i+1})), \\quad (t_i, f(t_i))\n",
    "$$\n",
    "\n",
    "- la valeur approchée de l'intégrale est alors la somme des aires des trapèze :\n",
    "\n",
    "$$\n",
    "    S_n = \\sum_{i=0}^{n-1} A_i\n",
    "$$\n",
    "\n",
    "On estime alors que $S_n \\to I$ lorsque $n \\to \\infty$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "38d1d7b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "var('x')\n",
    "f = (1/10)*x**3 + (1/2)*x + 1\n",
    "p = plot(f, color=\"red\", xmin=-2, xmax=2)\n",
    "for i in range(-2,2):\n",
    "    p += polygon([[i,0], [i+1,0], [i+1,f(x=i+1)], [i,f(x=i)]], color=\"lightskyblue\") \n",
    "p.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e134ef83",
   "metadata": {},
   "source": [
    "**Question 2.** Écrire une fonction ``integrale_approchee(f, a, b, n)`` qui exécute la méthode des trapèzes et retourne la valeur approchée $S_n$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f5694c6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5f9a416c",
   "metadata": {},
   "source": [
    "On note $E(n) = |I -  S_n|$ l'erreur d'approximation de la méthode des trapèzes.\n",
    "\n",
    "**Question 3.** Tracer la courbe de $E(n)$ en fonction de $n$, pour la fonction $f = \\sin(x)$ dans l'intervalle $[a, b] = [0, \\pi]$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bdc7b671",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5364afca",
   "metadata": {},
   "source": [
    "**Question 4.** Écrire une fonction ``integrale_approchee_symbolique(f, a, b)`` qui retourne une **expression symbolique** représentant $S_n$. On rappelle que pour déclarer une variable $n$ destinée à être entière et strictement positive, il faut ajouter les commandes :\n",
    "```\n",
    "assume(n>0)\n",
    "assume(n, 'integer')\n",
    "```\n",
    "après la déclaration de la variable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "eb723473",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8cd6e669",
   "metadata": {},
   "source": [
    "**Question 5.** À l'aide de la fonction ``taylor``, donner un équivalent asymptotique en fonction de $n$ de la vitesse de convergence de la méthode des trapèzes, pour la fonction $f(x) = \\sin(x)$ dans l'intervalle $[0, \\pi]$. \n",
    "\n",
    "*Indication : en tapant ``taylor?``, on cherchera comment utiliser cette fonction.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "39409ba2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Sagemath",
   "language": "python",
   "name": "sagemath"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
