diff --git "a/Chapitre 8 - Valeurs propres, vecteurs propres, diagonalisation /8.1 Valeurs propres et vecteurs propres, d\303\251finitions, exemples .ipynb" "b/Chapitre 8 - Valeurs propres, vecteurs propres, diagonalisation /8.1 Valeurs propres et vecteurs propres, d\303\251finitions, exemples .ipynb"
new file mode 100644
index 0000000..05a9aa7
--- /dev/null
+++ "b/Chapitre 8 - Valeurs propres, vecteurs propres, diagonalisation /8.1 Valeurs propres et vecteurs propres, d\303\251finitions, exemples .ipynb"	
@@ -0,0 +1,221 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Concept(s)-clé(s) et théorie\n",
+    "\n",
+    "#### Définition: Valeur propre et vecteur propre d'une application linéaire\n",
+    "\n",
+    "Soient $V$ un $\\mathbb{R}$-espace vectoriel et $T: V \\rightarrow V$ une transformation linéaire. On dit que $\\lambda \\in \\mathbb{R}$ est une valeur propre de $T$ s'il existe $v \\in V$ non-nul tel que $T(v)=\\lambda v$. Aussi, si $\\lambda \\in \\mathbb{R}$ est une valeur propre de $T$, alors tout vecteur non-nul $v \\in V$ tel que $T(v)=\\lambda v$ s'appelle un vecteur propre de $T$ correspondant à la valeur propre $\\lambda$.\n",
+    "\n",
+    "#### Définition: Valeur propre et vecteur propre d'une matrice\n",
+    "Soit $A \\in M_{n \\times n} \\ (\\mathbb{R})$ . On dit que $\\lambda \\in \\mathbb{R}$ est une valeur propre de $A$ s'il existe $X \\in M_{n \\times 1} (\\mathbb{R})$ non-nul tel que $A X=\\lambda X$. Aussi, si $\\lambda \\in \\mathbb{R}$ est une valeur propre de $A$, alors toute solution non-nulle de $A X=\\lambda X$ s'appelle un vecteur propre de $A$ correspondant à la valeur propre $\\lambda$."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import plotly\n",
+    "import plotly.graph_objects as go\n",
+    "import sympy as sp\n",
+    "from IPython.display import display\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def vector_plot_3D(v, b):\n",
+    "    fig = go.Figure()\n",
+    "\n",
+    "    fig.add_trace(go.Scatter3d(x=[0, v[0]], y=[0, v[1]], z=[0, v[2]],\n",
+    "                        line=dict(color='red', width=4),\n",
+    "                        mode='lines+markers',\n",
+    "                        name='$v$'))\n",
+    "\n",
+    "    fig.add_trace(go.Scatter3d(x=[0, b[0]], y=[0, b[1]], z=[0, b[2]],\n",
+    "                        line=dict(color='royalblue', width=4, dash='dash'),\n",
+    "                        mode='lines+markers',\n",
+    "                        name='$A \\ v$'))\n",
+    "\n",
+    "    fig.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def CheckEigenVector(A, v):\n",
+    "    # Check Dimensions\n",
+    "    if A.shape[0] != A.shape[1] or v.shape[0] != A.shape[1]:\n",
+    "        raise ValueError('Dimension problem, A should be square (n x n) and v (n x 1)')\n",
+    "\n",
+    "    if v==sp.zeros(v.shape[0],1):\n",
+    "        print(\"v est le vecteur nul, il ne peut pas être un vecteur propre par définition\")\n",
+    "\n",
+    "    # Matrix Multiplication\n",
+    "    b = A * v\n",
+    "    \n",
+    "    # Print some explanation about the method\n",
+    "    print(\"On voit que b = A * v donne:\")\n",
+    "    display(b)\n",
+    "    print(\"On cherche alors un nombre lambda tel que b = lambda * v\")\n",
+    "    \n",
+    "    # Symbol for lambda\n",
+    "    l = sp.symbols('l', real=True)\n",
+    "\n",
+    "    # Check if there is a solution lambda of eq: A*v = lambda * v\n",
+    "    eq = sp.Eq(b, l*v)\n",
+    "    sol = sp.solve(eq, l)\n",
+    "    \n",
+    "    # If there is l st b = l*v\n",
+    "    if sol:\n",
+    "        print(\"Il existe bien une solution lambda.\")\n",
+    "        print(\"Le vecteur v est donc un vecteur propre de la matrice A.\")\n",
+    "        print(\"La valeur propre associée est lambda = \", sol[l])\n",
+    "    # Otherwise\n",
+    "    else:\n",
+    "        print(\"L'equation b = lambda * v n'a pas de solution.\")\n",
+    "        print(\"Le vecteur v n'est donc pas un vecteur propre de la matrice A.\")\n",
+    "        "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### **Exemple 1**\n",
+    "\n",
+    "Pour savoir si un vecteur $v \\in M_{n \\times 1} \\ (\\mathbb{R})$ est un vecteur propre de la matrice $A\\in M_{n \\times n} \\ (\\mathbb{R})$, il suffit de vérifier que les vecteurs $v$ et $b = A \\ v$ sont colinéaires. Il est possible de visualiser cela graphiquement pour des vecteurs de dimension $n=2$ où $n=3$."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Definition de la matrice A et du vecteur v (3D)\n",
+    "v = np.array([1, 1, 1])\n",
+    "A = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])\n",
+    "\n",
+    "# Multiplication de v par A\n",
+    "b = A@v\n",
+    "\n",
+    "# Plot\n",
+    "vector_plot_3D(v, b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### **Exercice 1**\n",
+    "Etant donné une matrice carrée $A \\in M_{n \\times n} \\ (\\mathbb{R})$ et un vecteur $v \\in M_{n \\times 1} \\ (\\mathbb{R})$. Déterminez si $v$ est un vecteur propre de la matrice $A$. Si tel est le cas, trouvez la valeur propre $\\lambda \\in \\mathbb{R}$ associée. \n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Les matrices ou vecteurs peuvent dépendre du paramètre x\n",
+    "x = sp.symbols('x')\n",
+    "\n",
+    "# a)\n",
+    "A_1 = sp.Matrix([[1, 1, 1], [1, 1, 1], [1, 1, 1]])\n",
+    "v_1 = sp.Matrix([1, 1, 1])\n",
+    "\n",
+    "display(A_1, v_1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Print the solution for A_1 and v_1\n",
+    "CheckEigenVector(A_1, v_1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# b)\n",
+    "A_2 = sp.Matrix([[4*x, 8*x], [1, 2]])\n",
+    "v_2 = sp.Matrix([2, -1])\n",
+    "\n",
+    "display(A_2, v_2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Print the solution for A_2 and v_2\n",
+    "CheckEigenVector(A_2, v_2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# c)\n",
+    "A_3 = sp.Matrix([[1, 2], [1, 2]])\n",
+    "v_3 = sp.Matrix([0, 0])\n",
+    "\n",
+    "display(A_3, v_3)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Print the solution for A_3 and v_3\n",
+    "CheckEigenVector(A_3, v_3)"
+   ]
+  }
+ ],
+ "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.7.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}