Skip to content
Snippets Groups Projects
21.straight-line-equation.ipynb 6 KiB
Newer Older
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1ffc41af-64bc-4816-9712-7e1c309ce303",
   "metadata": {},
   "source": [
    "# L’équation réduite d’une droite"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96863e53-700d-4eb3-87a6-5ab659eb391a",
   "metadata": {},
   "source": [
    "L’objectif de cet exercice est de simplement calculer l’équation réduite d’une droite à partir de deux points connus."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ee244f7-e0ae-493c-88b4-c35b9edc200a",
   "metadata": {},
   "source": [
    "## Les formules à connaître"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70d4797a-53c7-4e19-9560-4f89723a1721",
   "metadata": {},
   "source": [
    "**L’équation réduite d’une droite :**\n",
    "$$y = b + mx$$\n",
    "\n",
    "**Le calcul du coefficient directeur :**\n",
    "$$m = \\frac{\\Delta y}{\\Delta x}$$\n",
    "\n",
    "**Le calcul de l’ordonnée à l’origine :**\n",
    "$$b = y - mx$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aaba8c55-4864-4034-9eff-5a35662975dc",
   "metadata": {},
   "source": [
    "## Visualisation du problème"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "284863a0-9d22-405e-b6d9-42f0fa0b6d10",
   "metadata": {},
   "source": [
    "Avant de commencer, chargez les librairies nécessaires :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "312ef59e-94fc-4149-a672-ee52b165b8ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ada3d82-9e66-4fa3-8623-944f7ce8a4ab",
   "metadata": {},
   "source": [
    "Soient deux points $P$ et $P'$ de coordonnées $(9;-2)$ et $(-4;5)$. Définissez-les dans deux variables `X` et `Y` :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e2b76a11-633b-494d-8829-4635c03768ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "# your code here\n",
    "\n",
    "X = [9, -4]\n",
    "Y = [-2, 5]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6b252e9-6119-4d32-9782-3b59c5bf3ad0",
   "metadata": {},
   "source": [
    "Affichons-les dans un repère puis traçons une droite pour les relier :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9a274f99-5dc2-4951-aafe-ffd9458f0890",
   "metadata": {},
   "outputs": [],
   "source": [
    "# two plots\n",
    "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,5))\n",
    "\n",
    "# spines first ax\n",
    "ax1.set_xlim([-5, 10])\n",
    "ax1.set_ylim([-5, 10])\n",
    "\n",
    "# spines second ax\n",
    "ax2.set_xlim([-5, 10])\n",
    "ax2.set_ylim([-5, 10])\n",
    "\n",
    "# plots\n",
    "sns.scatterplot(x=X, y=Y, ax=ax1)\n",
    "sns.lineplot(x=X, y=Y, ax=ax2)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5d6f4ec-d5a9-4e22-975e-d17ec23cd63d",
   "metadata": {},
   "source": [
    "## Calcul de l’équation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d1d450f-315e-4088-8424-bf236f6caf29",
   "metadata": {},
   "source": [
    "### Le coefficient directeur"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2dcc2b3e-51e5-4898-9656-dfcd9f6ec849",
   "metadata": {},
   "source": [
    "Instanciez une variable `m` à laquelle vous affecterez le coefficient directeur de la droite :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b64a7eb5-336e-48fe-8352-dd6b0ffa9268",
   "metadata": {},
   "outputs": [],
   "source": [
    "# your code here\n",
    "\n",
    "m = (Y[0] - Y[1]) / (X[0] - X[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3a2d31a-5fcf-41a4-96d1-05b750a59327",
   "metadata": {},
   "source": [
    "### L’ordonnée à l’origine"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eaf041d3-8361-4142-bfda-00991abaed73",
   "metadata": {},
   "source": [
    "Procédez de la même manière pour l’ordonnée à l’origine avec une variable `b` :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4afad24b-1f63-49e8-9918-f1196cf2bd01",
   "metadata": {},
   "outputs": [],
   "source": [
    "# your code here\n",
    "\n",
    "b = Y[0] - m * X[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a920f84-31a9-46b4-9937-8dc8b0e638ec",
   "metadata": {},
   "source": [
    "## Vérification de la solution"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cbe2d953-ae80-4b28-b89c-0f98afd67e9b",
   "metadata": {},
   "source": [
    "Prenez maintenant une valeur de $x$ dans un intervalle $[-3;8]$ et ajoutez-la à la liste `X`. Calculez ensuite $y$ pour cette valeur de $x$ et ajoutez-la à la liste `Y`.\n",
    "\n",
    "**Rappel :** la méthode `.append()` permet d’ajouter un élément à la fin d’une liste."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "43fb2212-4d18-4e52-84f1-77ed36f6f47c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# your code here\n",
    "\n",
    "x = -2\n",
    "X.append(x)\n",
    "\n",
    "y = b + m * x\n",
    "Y.append(y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c200c9b-ede1-4de7-97f9-36cb0384c482",
   "metadata": {},
   "source": [
    "Il ne vous reste plus qu’à vérifier que la droite passe bien par tous les points :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "249e8103-37f2-463b-aae0-e9412bbaf7ee",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.xlim = [-5, 10]\n",
    "plt.ylim = [-5, 10]\n",
    "\n",
    "sns.regplot(x=X, y=Y, ci=None)\n",
    "\n",
    "sns.despine()\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}