{ "cells": [ { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "application/javascript": "IPython.notebook.set_autosave_interval(300000)" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Autosaving every 300 seconds\n" ] } ], "source": [ "from IPython.display import display, Latex\n", "from IPython.core.display import HTML\n", "%reset -f\n", "%matplotlib inline\n", "%autosave 300\n", "from matplotlib.pylab import *\n", "import sympy as sy\n", "sy.init_printing() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice Intégration\n", "\n", "On se donne une fonction $f$ de la boule unité $B$ de $\\mathbb R^3$ pour la norme Euclidienne définie par $$f(x,y,z) = x^2 + y^2 + a z^4,$$ où $a$ est un paramètre réel. Le but est de calculer l'intégrale de $f$ sur $B$.\n", "On introduit les coordonnées sphériques $(r,\\theta,\\phi)$ définies par $$x = r \\sin(\\theta) \\cos(\\phi), \\quad y = r \\sin(\\theta) \\sin(\\phi), \\quad z = r \\cos(\\theta),$$ où $r \\in [0,1]$, $\\theta \\in [0,\\pi]$ et $\\phi \\in [0,2\\pi]$. \n", "- Exercice 1\n", " - Calculer le Jacobien de ce changement de variable.\n", " - En déduire l'intégrale de $f$ sur $B$ en fonction de $a$.\n", "- Exercice 2\n", " - Intégrer $f$ sur le tétraèdre de sommets $(0,0,0)$, $(1,0,0)$, $(0,1,0)$ et $(0,0,1)$." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "r,th,phi,a=sy.symbols('r theta phi a',real=True)\n", "x=r*sy.sin(th)*sy.cos(phi)\n", "y=r*sy.sin(th)*sy.sin(phi)\n", "z=r*sy.cos(th)\n", "J=sy.Matrix([[sy.diff(x,r),sy.diff(x,th),sy.diff(x,phi)],[sy.diff(y,r),sy.diff(y,th),sy.diff(y,phi)],[sy.diff(z,r),sy.diff(z,th),sy.diff(z,phi)]])\n", "#...." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Algèbre linéaire\n", "### Résolution de systèmes linéaires\n", "Pour éviter les calculs inutiles, on s'interdira de faire appel à la matrice inverse lorsque l'on résoudra un système linéaire. On utilisera plutôt la méthode de résolution par pivot de Gauss, qui correspond à la factorisation PLU de la matrice du système.\n", "On note $A$ la matrice carrée de taille $n$ du système, $b$ le vecteur colonne de taille $n$ du second membre, et $x$ le vecteur colonne de taille $n$ des inconnues. On cherche à résoudre le système linéaire $Ax = b$.\n", "La factorisation $P^TLU$ de $A$ est donnée par $PA = LU$, où $P$ est une matrice de permutation associée aux pivots utilisés, $L$ est une matrice triangulaire inférieure avec des uns sur la diagonale, et $U$ est une matrice triangulaire supérieure, celle obtenue à la fin du processus de transformation par méthode de pivot de Gauss. Si on dispose de la factorisation, on peut alors résoudre le système linéaire en trois étapes :\n", "1. On résout le système linéaire $Ly = P b$ pour $y$.\n", "2. On résout le système linéaire $Ux = y$ pour $x$.\n", "3. On a trouve la solution du système linéaire $Ax = b$.\n", "\n", "- Exercice 3\n", " - Expliquer pourquoi les étapes 1 et 2 sont simples à réaliser.\n", "\n", "On note que la méthode du pivot de Gauss suppose simplement que la matrice $A$ est inversible. \n", "La méthode de Gauss (sans pivot) revient à choisir $P=I$, mais cette factorisation n'est pas toujours possible pour conduire à des coefficients diagonaux non nuls dans $U$. Il faut que toutes les sous-matrices principales de $A$ soient inversibles. Lorsque c'est le cas, la factirisation LU existe et est unique.\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1 & 2 & 0\\\\3 & 2 & 2\\\\2 & 0 & 0\\end{matrix}\\right]$" ], "text/plain": [ "⎡1 2 0⎤\n", "⎢ ⎥\n", "⎢3 2 2⎥\n", "⎢ ⎥\n", "⎣2 0 0⎦" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAYAAAD010ABAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEkklEQVR4Ae2d/00VQRDHwfi3IZpYAHYAWoHQgdiBWgb8Z7ADtQIDHWgHBjrAAkwkxAr8fuEGj3Xfu+Fm583dczY59vbn7Hxu3+zd7iRsHh4e7mxsbJzhqoXTo6Ojg1pB5t0QAJ8L3G3XeKBs82Gv4APuWbkffvQTeV8lcFzJ3UfeK+b3AX8E8QRaobUsC8w+leXIY9Y/gMt61TQa06Sc4NrF/VW1kkMmZMlM+YXun+E6Rt5KJoRFdn8GL8QCAVso/IzrEtdzXFWbg3yXAPlcI94jPqWAbjxniPdxuUJG/ybZDzREIOQK1wGud6j/RdOmVR3IfIu+thBfw2W/uOcvh+mPTHuFFrJVgL0UUPbLt5jzSt3vyNsDBP66vIJZ9hwA74EeTVMZxDSw3CuYZU8asHJ2Pvag20r2pAEDnMBb9rbiZSKayJ46YM3kfKKp5FRnUPbUAddsr7CSGcb3Yo/QRPakAcMOimmomQHJk8WuKeRWsicNuCP2DfF2hZ7MYJZ7BbPsOQDmZzm/Hsuwi4zz3kwry1ukzbLHABbDLjOohSIL+wBAbqZcIr7ePGFF3NM8vMb1hmmv0EK2ai+CCkAYnyaDvNifII/272s3kOtCpz+crdzceYGYixrjl0jXvvBQ1DSYZN8HMD8bQwJAcrHjPsjKg1X2GBOxciXnLDABOz+9BJyAnQk4d58zOAE7E3DuPmdwAnYm4Nx9zuAE7EzAuXv1pzLHgc/GMOePTv4OYu6JzMbpRQ0YcE0OGAQ0JkAud85m6/SissFQMtL5Y9ZOLyrAmEFmB4wxs3cCbcx6awFzD7h2CCjnYSxfx2DWexBwZwOH4K3kdGNoEC3LW+k9CBiDFnjc9F4UuBCtW2iitwawBpyc02nqrlOdQb01gGu2VyDJU/Zy/hA5EXETvQn4UTd6ie8oA1skpqFmBiRPFrs7beecMOr9VHQn4N9dQmIp68dmB4x+ZzO6H6v3T9FRYyJY1+yAIQJnFpv1VgHGzyXM+aN4ILKoiO0vitsmW+it3ovA0E0OGBbVoehsnV7UgDujH+X8MVunF5WJsMy+/71tAnaeAQk4ATsTcO4+Z3ACdibg3H3O4ATsTMC5+5zBCdiZgHP36k9ljgOfy2GOJ5GyO913EN/b6UUNGAqGOJ50yoXIhs48UDA5vahsMARFOp5EyjY7vagA4ymaHTA4E0eGSNkjh/y3mRbwHprUDgHlLI7lXiFStlmnQcCdHRoS5HLCECl7SGFt+SBgdCTw5HS51recLtfKLHmRsi3jvm2rAXxbecmNnJUtqeJWFCl7UCkN4JrtlY5lhnk5nkTKFh1N8SBg2EExDTUzIHmy2JkGUzaOlF2OZWx6EHDX8VgHjLHj6reLlN0fx6h7LWCzA8ao0d00ipRtGPZNUxVg/FTDHE8iZRd0ZTGVdacorifVexFoHuZ4EikbD9jk9KIG3C04UY4nXGijZJucXlQmoj75M1dDIAFrKBnqJGADPE3TBKyhZKiTgA3wNE37bxEXeFMo2+Q/KimJFGkwW/iPSliVgLmPsOgVyGWPgYLXKMhBcFWlP/gz38bXcncWAAAAAElFTkSuQmCC", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{matrix}\\right]$" ], "text/plain": [ "⎡1 0 0⎤\n", "⎢ ⎥\n", "⎢0 1 0⎥\n", "⎢ ⎥\n", "⎣0 0 1⎦" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAYAAAD010ABAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFbklEQVR4Ae2dUZITNxCGTSrPFCFVOYC5wZI9QZYbZLkBcAMonnbfUnCDDSeg4AZwg2T3BnAAqrJF5QT83zC9aMcau21Njz22ukorjSSrrW/aPRpN23vn7OzsaDabXSrl5P35+flprqHWfScgPp9Umud4qO3Oz0nDa5XpnMrn9KCWswReZWofqe5P6lPAFyJegWZoLasSs7+77aqjagFwt1/2WC/GpbxTeqjy12yngErpMkv5T8M/UHqlulEMokR3asG9WKTgnhrfKF0r/a6U9TmqDxHp5xrxl/L3KGjfz6XyR0qhkDV+ke6fPESk5KvSqdIz9X/rec1QfaTzqca6p7yBy7gq88nh+ILjKBlCtwtw1ASc47KKucr0/Ud1J4LApytKinVPAfCJ6OGaumKugfYoKda904Cd1nk/gu5QuncasMAZvGWrlSgXMYjuXQfsMc5fPZ2C+qzUveuAc77XWJmFsS6OkEF07zRg+UFzDTk3YHV2sRsU8lC6dxpwS+yj8nmGnlkw7VFSrHsKgLkt5+6xKw9VcZVYWrd9iONi3ZsANsduFjTERHrHEEA2U66VN5sndFQZ9/BY6QnHUTKEbtdeBBOQMs4mYgv7d6rD/31o30jTGPQHa2Vz51g5FzXyP3Scu8NT06BSpHsdwNw2bkUEkosd+yCjS6nuTVzE6JOcssIKOPjsVcAVcDCB4OGrBVfAwQSCh68WXAEHEwgevlpwBRxMIHj4dW6V53ovdrvKZgvH7A9Ebhfemr50HamCPZHJBL24AGtiAH2h3ADPVGZ3i40e4iVuYhZUN6hobHRPNujF64MJ/njaQjWAZrkvrSIil85JB714AbMtyI4WqREmbuU9zosDT7wuAmv9JQWZWHNo+FKqcwvlE+lciJ5UnT0HpH2pe/Ra8K25CS4DE+34TOXcG7jVf4oHmhe+f5WsfKrjsmDTIqVcxYHLEwXcxr9K+yoGb5krXHkS1gUM1OYxjWCziiCENHQVseNnz55P9r7NjVwEowksvoezy7O5lWeS10xMrpe8X7PulUEvAL7bDmT5wrgCeERaaPjhInAbeyWar7mGnPFYnV3sunP/zSoA/H97YLm1pTlR3rgDGzht2+fypoEnXwyK10VwNvlKF3kqFhBiNx1p2z6URws8eSFaH1Jigs1FDotmqdYFn3YdsmwXFfOBQ469MJbmVRz04lpFoEiJcP30pmKud8SXUMKtVzomG/TiAsypbUGGw1wwo++6Jxv04vXBuXnXOgeBCtgBqaRLBVxCz/HaCtgBqaRLBVxCz/HaCtgBqaRLBVxCz/HaCtgBqaRLBVxCz/HaCtgBqaTLOrfKcyli0wdhF40NaWIlrqgYQ6SLPenRA0+Y26a6XYA1OHD5TR9+7KcRlXnoab86ErZHIT3s2G0l8GQI3S7AmmDzBLkh2/6RcqyXgBQs6tYj/bRfaVk62AptNntUfq4yVjyKDKHb64NPNKNPUog1pYLl8nMvWHiVDAEvYEB+bs9oZphm4z1Xf/B1LhchsH37sc3HVe2jXeimdsa8FrwwL0EFLq7BVhYLfWrFbLYxYMHj4saDUH6SsUoPgY0ACyrP5vDJfa6jR93hVa8NWFBZmt1XfrMmPjxs/hmvBVhQeVT/ILVcleckv8rD6ukGLIhc1I6Vdy9qQOe2uUqGgHeZhoVyUfsowGlsBEMSLzHWhS4NPBkr2IU5IhvpdgHW4ET1ABn/25XwNbBOICcX4Y4SGe3XVkp1uwBLCb/XuzWR/q2tVkp1u33w1uhOXHEFHHwCK+AKOJhA8PDVgoMBp6sINtS76uo/KukS6RyLWe8/KqErgPkix82XvKlMpO9LHkmXgy/yOK1XvgGmM9sh7RKzXwAAAABJRU5ErkJggg==", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0\\\\3 & 1 & 0\\\\2 & 1 & 1\\end{matrix}\\right]$" ], "text/plain": [ "⎡1 0 0⎤\n", "⎢ ⎥\n", "⎢3 1 0⎥\n", "⎢ ⎥\n", "⎣2 1 1⎦" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1 & 2 & 0\\\\0 & -4 & 2\\\\0 & 0 & -2\\end{matrix}\\right]$" ], "text/plain": [ "⎡1 2 0 ⎤\n", "⎢ ⎥\n", "⎢0 -4 2 ⎥\n", "⎢ ⎥\n", "⎣0 0 -2⎦" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1 & 2 & 0\\\\3 & 2 & 2\\\\2 & 0 & 0\\end{matrix}\\right]$" ], "text/plain": [ "⎡1 2 0⎤\n", "⎢ ⎥\n", "⎢3 2 2⎥\n", "⎢ ⎥\n", "⎣2 0 0⎦" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A=sy.Matrix([[1, 2, 0],[3, 2, 2],[2, 0, 0]])\n", "\n", "display(A)\n", "L,U,perm=A.LUdecomposition()\n", "P = sy.eye(A.rows).permuteFwd(perm)\n", "display(P)\n", "display(L)\n", "display(U)\n", "display(L*U)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut utiliser la méthode sympy LUsolve pour résoudre un système linéaire par pivot de Gauss qui s'appuie sur la décomposition précédente. \n", "Il existe d'autres décomposition ($LDL^T$ pour les matrices symétriques réelles,QR, etc.) qui peuvent être utilisées pour résoudre des systèmes linéaires et peuvent faire l'objet d'approfondissement.\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAC0AAABMCAYAAAD5sj5lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADc0lEQVRoBe2b3W3UQBRGd1GeUcQDBTgdkBJYOiB0wKYDIt72DYUOQg0pASoA0kFSABJSRAPL+bwzq9mRHdvrz0ZGHsk7f97rM9d378zcTJbb7XbhTJvN5hR577guKZ87ZUdZJwh+ReVnbMjyW/ovsrbaapC1CjcI/qiEnHu+WFR9mb7lSdLxmbJuTtNDWmkqI/COe+7I3zbd29B/XdH/hrZSbgp9w8M6QVYItjTB8SUXRJuaSuhneecU6jP0WG9p1vRYmk69R+9n8guXb73kWnEV1OW6fpPLndqSG1ou88pGVyNotukaxdibbeaB3TauvLhn6RiBE9oC1GZQk7Rpm6alIV6/lqMfg7bk/pTe0/64K3o+rdAgXQMoP10myjcUtFY/27V4Pt3msQZ0laBpctEko42GLbmhpeUfNroaQVbzQKP54l2DeKBdOxpbcmt6DxZMQjsN++Z2EGiAC2Blz+eUrZ5DWrGahwQG4CtybURjXblt/2mFBkwalpsTdPQYsmvrys8KDZx8siaYgzgKA9j7bvp6Jzf0a4hWgUoRJuukEkdrhQbSFayJfJX5IN6j8knGxhnaqMwnRc2aflI9xs5Jatrt8goUqolEvnoO1qTWNUnzmCS0bPp5UH3M0zfRuswUPnSw5mWEEfSfUIl57OuUAz10sOZXBJqkeQwKjfYP1tVRU33zwaAB/gBc3L305Tz4/iDQAGtyse0JD4ip2KEB1nZLGv6aP8xVt0MDtgbc+jeWfLBWaGAVnLnNH+Ku26ABLoB7QT6YLcfBa3JxJdnyGdDxBIHqi1D/Tm57AzZooMqdeNQAdWl+zfWJ8mNsd+Q280hhgBRs1LgC7eWRB91D+VT9XEdPPDZNZ9AK+eZhXwHLFcqHK5Xmsyt2+xwEug4BaEswZxDzqIN2tc/QLk02yZk13aQhV/8kNT22yyvQdu9gztjQlpM3kzSPSUK3Mg+mX60TvnF1WS9chGm7dBqUbcGcttBaWvb6czHQtmDO/2se5fs1fAQz633yppV5GHijCMvJm7HNQzuWVRwB+VEnb8aG1mzY++TNqOaBlvMtmAbR+eTN2JreWwYD0H7xqJM3/wQa4ALgo0/ejGoeUnMA7nXyJoW+R6DkpqnTP+ekX6wqB+DGkzfcV/vPOZIraC0X9YOoSu64XNuTNzHQU8W0+As+iv78TrPdPQAAAABJRU5ErkJggg==", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2}\\\\\\frac{1}{4}\\\\- \\frac{1}{2}\\end{matrix}\\right]$" ], "text/plain": [ "⎡1/2 ⎤\n", "⎢ ⎥\n", "⎢1/4 ⎥\n", "⎢ ⎥\n", "⎣-1/2⎦" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABoAAABLCAYAAABumJecAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABi0lEQVRYCe1Z0U3EMAzNIb4RAokBGAEYATaAGdiA3/YXNgBGODZgBka4G4APhJiA90Ic+XI5NS79OFW2FNmxHbt5dd2oXXRddxFC+MCo0Vvf93c1Q6mD3wq681LPOWyLQ2V4gkxnTWs9GZAfK/Yb6G6p14mekdkSeCMu1r5sKDCBjqqtRFQOEhYT6iXGJeTvwQXJQe9o5xoEPIbxFeML4wqjei+g30mtiXjlsSiQ9AEyd2WiA5P3P5w90WjwHDqHLiMwphhO0+qTHKVBaGpBjIPWw0ZKuv5jYQkdu/07+FbnTj6ZWRI1vQBz5EIYA10Rom3qidpwqng5dBVQ2lQOXRtOFa/mFiRr0df8ABnB8KqTmjBzh84MmSwgdEdpIlxsU/AzCcJEP2kiXGxT8E8JstfF4AfIeJv2+h5JIZm478gEl3Z26DQaJnl+0PkBMuBI7F8g42Mwv/L2HZn6m3Z26IiGHyBjTXgx6EfDJM8POn1mWOHtWcIxyQ9fBmUifo2/56RClv+ytR++OeQv+HNn92+gknEAAAAASUVORK5CYII=", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1\\\\1\\\\1\\end{matrix}\\right]$" ], "text/plain": [ "⎡1⎤\n", "⎢ ⎥\n", "⎢1⎥\n", "⎢ ⎥\n", "⎣1⎦" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "b=sy.ones(3,1)\n", "x=A.LUsolve(b)\n", "display(x)\n", "display(A*x)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Exercice 4\n", " - Résoudre le système linéaire suivant par pivot de Gauss : $$\\begin{pmatrix} 11 & 2 & 3 \\\\ 4 & 15 & 6 \\\\ 7 & 8 & 19 \\end{pmatrix} \\begin{pmatrix} x \\\\ y \\\\ z \\end{pmatrix} = \\begin{pmatrix} 1 \\\\ 2 \\\\ 3 \\end{pmatrix}.$$\n", " - Vérifier la solution en calculant le produit de la matrice du système par la solution trouvée.\n", " - Expliciter $P$, $L$ et $U$ et vérifier que $PA = LU$.\n", "- Exercice 5\n", " -\n", "Soit la matrice $A = \\begin{pmatrix} 1 & 2 & 0 \\\\ 3 & 2+b & 2 \\\\ 2 & 0 & a \\end{pmatrix}$, où $a$ et $b$ sont des paramètres réels. \n", " - Pour quelles valeurs de $a$ et $b$ la matrice $A$ est-elle inversible ?\n", " - Lorsqu'elle n'est pas inversible, calculer le noyau de $A$.\n", " - Calculer la factorisation PLU de $A$.\n", " - Résoudre lorsque c'est possible le système linéaire $Ax = y$ pour $y = \\begin{pmatrix} 1 \\\\ 2 \\\\ 3 \\end{pmatrix}$.\n", " - Vérifier la solution en calculant le produit de la matrice du système par la solution trouvée." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polynôme caractéristique\n", "On peut calcler en sympy un polynôme caractéristique d'une matrice carrée $A$ en utilisant la méthode charpoly. On pourra chercher les zéros de ce polynôme pour obtenir les valeurs propres de $A$. On pourra vérifier que les valeurs propres trouvées sont bien solutions celles trouvées par la méthode eigenvals.\n" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left\\{ 10 : 1, \\ 6 - \\sqrt{29} : 1, \\ \\sqrt{29} + 6 : 1\\right\\}$" ], "text/plain": [ "{10: 1, 6 - √29: 1, √29 + 6: 1}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A=sy.Matrix([[10, 3, 0],[3, 2, 2],[0, 2, 10]])\n", "lmbda = sy.symbols('lambda')\n", "char_poly = A.charpoly(lmbda) # Polynôme caractéristique\n", "p_expr = char_poly.as_expr() # Forme symbolique du polynôme\n", "sy.plot(p_expr,(lmbda,-5,20))\n", "display(sy.roots(p_expr))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Exercice 6\n", " - Calculer le polynôme caractéristique de la matrice $A = \\begin{pmatrix} 1 & 2 & 0 \\\\ 3 & 2 & 2 \\\\ 2 & 0 & 1 \\end{pmatrix}$.\n", " - Calculer les valeurs propres de $A$ comme racine du polynôme caractéristique.\n", " - Vérifier les valeurs propres en utilisant la méthode eigenvals." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matrices monotones\n", "- Exercice 7\n", "\n", "Soit la matrice réelle $A$ de taille $10\\times 10$ constituée de $3$ sur la diagonale principale et de $-1$ sur la première diagonale supérieure et la première diagonale inférieure.\n", " - Renseigner cette matrice avec la librairie sympy et calculer son inverse. \n", " - Qu'observe-t-on sur le signe des éléments de la matrice inverse? \n", " - Démontrer mathématiquement, dans une cellule Markdown, ce que vous avez observer. Indication : \n", " - vérifier que cela revient à montrer que pour tout $x\\in \\R^{10}$ tel que $Ax\\ge 0$ (au sens del'inégalité pour chaque composante) alors $x\\ge 0$\n", " - travailler alors sur la relation $(Ax)_i$ où $i$ est l'indice de ligne telle que $x_i$ est minimal pour en déduire que $x_i\\ge 0$.\n", " - Calculer les valeurs propres de $A$ et observer que celles-ci sont réelles et strictement positives.\n", " - Montrer que la matrice $A$ est inversible et que ses valeurs propres sont réelles et strictement positives." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Itérations de Jacobi\n", "- Exercice 8\n", "\n", "On considère la matrice $A$ de l'exercice précédent. \n", "- Décomposer la matrice $A$ sous la forme $A=D-M$ où $D$ est la matrice diagonale de $A$.\n", "- Calculer la matrice $D^{-1}$ sans faire appel à la matrice inverse.\n", "- Coder la suite $(x^{(k)})_k$ de $\\mathbb R^{10}$ des itérations de Jacobi:\n", "$$x^{(k+1)} = D^{-1}(Mx^{(k)} + b),$$\n", "où $b$ est un vecteur de taille $10$ constitué de $1$, jusqu'à l'itéré où l'écart entre deux itérés successifs est inférieur à $10^{-6}$ pour la norme Eucldienne.\n", "- Vérifier que la solution trouvée est proche de la solution du système linéaire $Ax = b$.\n", "- Le démontrer mathématiquement." ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }