diff --git "a/Chapitre 1 - Systemes equations lineaires/1.2. Nombre de solution d'un syst\303\250me.ipynb" "b/Chapitre 1 - Systemes equations lineaires/1.2. Nombre de solution d'un syst\303\250me.ipynb" index f5c55db..4278c31 100644 --- "a/Chapitre 1 - Systemes equations lineaires/1.2. Nombre de solution d'un syst\303\250me.ipynb" +++ "b/Chapitre 1 - Systemes equations lineaires/1.2. Nombre de solution d'un syst\303\250me.ipynb" @@ -1,471 +1,468 @@ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Concept(s)-clé(s) et théorie\n", "\n", "On considère un système d'équations linéaires aux inconnues $x_1,\\ldots,x_n$\n", "\n", "$$S=\\left\\{\\begin{array}{ccccccc}\n", "a_{11}x_1 &+a_{12}x_2 & + &\\cdots &+a_{1n}x_n &= &b_1 \\\\\n", "a_{21}x_1 &+a_{22}x_2 & + &\\cdots &+a_{2n}x_n &= &b_2 \\\\\n", "\\vdots & & & &\\vdots & \\vdots &\\vdots \\\\\n", "a_{m1}x_1 &+a_{m2}x_2 & + &\\cdots &+a_{mn}x_n &= &b_m\n", "\\end{array},\\right. $$\n", "\n", "où $a_{ij},b_i\\in \\mathbb{R}$ pour tout $1\\leq i\\leq m$ et tout $1\\leq j\\leq n.$ \n", "\n", "---\n", "Un système d'équations linéaires à coefficients réels satisfait à précisément une des conditions suivantes.\n", "\n", "1.Le système ne possède aucune solution.\n", "\n", "2.Le système possède une solution unique.\n", "\n", "3.Le système possède une infinité de solutions.\n" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "import Librairie.AL_Fct as al\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import plotly\n", "import plotly.graph_objs as go\n", "import pandas as pd\n", "import random\n", "from IPython.core.magic import register_cell_magic\n", "from IPython.display import HTML, display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EXEMPLE 1\n", "\n", "Nous allons travailler avec un système de $2$ inconnues, $2$ équations:\n", "\n", "$$\n", "\\begin{cases}\n", "a_{11}x_1 + a_{12}x_2=b_1\\\\\n", "a_{21}x_1 + a_{22}x_2=b_2.\n", "\\end{cases}\n", "$$\n", "\n", "On utilise *la syntaxe suivante pour entrer les coefficients du système*\n", "\n", "$$\n", "\\begin{align*}\n", "A&=\\quad [\\quad [ a_{11} , a_{12}, \\ldots, a_{1n} ], \\quad [ a_{21}, a_{22}, \\ldots, a_{2n}]\\quad, \\ldots , \\quad[a_{m1}, a_{m2}, \\ldots, a_{mn}]\\quad]\\\\\n", "b&=\\quad [\\quad b_1, b_2, \\ldots, b_m \\quad]\n", "\\end{align*}$$\n", "\n", "---\n", "Entrer le système ci-dessous - ou n'importe quel système de votre choix. Après avoir étudié les deux droites, entrer une solution du système\n", "\n", "$$\n", "\\begin{cases}\n", "-2x_1 + x_2=2\\\\\n", "2x_1 -2x_2=1.\n", "\\end{cases}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.bgc('seashell')\n", "#Par défaut, les coefficients sont fixés à 1 et n=2, m=2\n", "\n", "A = [ [-2,1] , [2,-2]]\n", "b = [2,1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.printSyst(A,b)\n", "\n", "al.Plot2DSys(-7,7,15,A,b)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.bgc('seashell')\n", "\n", - "alpha=[3,2]\n" + "alpha=[1,1]\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.SolOfSyst(alpha, A,b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **EXERCICE 1**\n", "\n", "Pour chacun des cas ci-dessous, déterminer la/les solution(s) des systèmes. \n", "\n", " $$ \n", "a)\\quad \\begin{cases}\n", "\\dfrac{3}{2}x_1 - 2x_2&=0\\\\\n", "-3x_1 + 5 x_2&=3\n", "\\end{cases} \\hspace{1cm} b) \\quad \\begin{cases}\n", "x_1 - x_2&=\\phantom{-}2\\\\\n", "-3x_1 - 2x_2&=-1\\\\\n", "2x_1 + 3x_2&=\\phantom{-}4\n", "\\end{cases}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.bgc('seashell')\n", "#Par défaut, les coefficients sont fixés à 1 \n", "#Attention d'adapter les valeurs ci-dessous pour a) et b)\n", "\n", "\n", "A = [ [1,1] , [1,1] ]\n", "b =[1,1]\n", "alpha=[1,1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.printSyst(A,b)\n", "al.SolOfSyst(alpha, A,b)\n", "al.Plot2DSys(-7,7,15,A,b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **EXERCICE 2**\n", "\n", "Pour chacun des cas ci-dessous, déterminer la/les solution(s) des systèmes. \n", "\n", " $$ \n", "a)\\quad \\begin{cases}\n", "3\\times 3\n", "\\end{cases} \\hspace{1cm} b) \\quad \\begin{cases}\n", "3\\times 3\n", "\\end{cases}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.bgc('seashell')\n", "#Par défaut, les coefficients sont fixés à 1 \n", "\n", "A = [ [1,-1,2] , [-3, 0, 0] ,[2,5,0]]\n", "b=[0,1,-2]\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "al.printSyst(A,b)\n", "al.Plot3DSys(-10,10,100,A,b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "EXERCICE 3 #code 1.2.Ex3\n", + "### **EXERCICE 3**\n", + "#code 1.2.Ex3\n", "\n", "À l'aide des graphes interactifs ci-dessous, trouver les valeurs des paramètres $h$ et $k$ pour que les systèmes a), b), et c) admettent, si possible,\n", "1. aucune solution\n", "2. une unique solution\n", "3. une infinité de solution \n", "\n", "$\\color{red}{\\rm{ Comment\\, on\\, corrige?}}$\n", "\n", "$$ \n", "a)\\begin{cases}\n", "x_1 +5 x_2&=h\\\\\n", "-2x_1 -10 x_2&=18\n", "\\end{cases} \\hspace{1cm} b) \\begin{cases}\n", "hx_1 + x_2&=3\\\\\n", "-2x_1 - x_2&=-1\n", "\\end{cases}\\hspace{1cm} c) \\begin{cases}\n", "3x_1 + hx_2&=1\\\\\n", "x_1 + 3x_2&=h\n", "\\end{cases}\\hspace{1cm} d) \\begin{cases}\n", "kx_1 + x_2&=h\\\\\n", "3x_1 -5x_2&=2\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import plotly as py\n", "import numpy as np\n", "plotly.offline.init_notebook_mode(connected=True)\n", "import plotly.graph_objs as go\n", "from ipywidgets import interactive, HBox, VBox, widgets, interact, FloatSlider\n", "\n", "#THIS IS WORKING\n", "\n", "A=[[1, 5], [-2,-10]] # we initialize the problem. Not what we plot, the one plotted is at zero.\n", "b=[3,18]\n", "\n", "al.printSyst(A, b)\n", "\n", "data=[]\n", "x=np.linspace(-5,5,11)\n", "m=len(A)\n", "MatCoeff = [A[i]+[b[i]]for i in range(0,m)] #becomes augmented matrix\n", "MatCoeff=np.array(MatCoeff)\n", "\n", "for i in range(1,len(MatCoeff)+1):\n", " trace=go.Scatter(x=x, y= (MatCoeff[i-1,2]-MatCoeff[i-1,0]*x)/MatCoeff[i-1,1], name='a) Droite %d'%i)\n", " data.append(trace)\n", "\n", "f=go.FigureWidget(data=data,\n", " layout=go.Layout(xaxis=dict(\n", " range=[-5, 5]\n", " ),\n", " yaxis=dict(\n", " range=[-10, 10]\n", " ) )\n", "\n", ")\n", "#def update_y(coeff, cof):\n", " # MatCoeff= [[coeff, 1, cof]]\n", " # MatCoeff=np.array(MatCoeff)\n", " # f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", "def update_y(h):\n", " MatCoeff= [[1, 5, h]]\n", " MatCoeff=np.array(MatCoeff)\n", " f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", " \n", "freq_slider = interactive(update_y, h=(-15, 15, 1/2)) #,cof=(-10, 10, 1))\n", "\n", "vb = VBox((f, freq_slider))\n", "vb.layout.align_items = 'center'\n", - "vb\n", - "\n", - "\n" + "vb\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#THIS IS WORKING\n", "MatCoeff=[[1, 1, 3], [-2,-1,-1]] # we initialize the problem. Not what we plot, the one plotted is at zero.\n", "data=[]\n", "x=np.linspace(-5,5,11)\n", "MatCoeff=np.array(MatCoeff)\n", "for i in range(1,len(MatCoeff)+1):\n", " trace=go.Scatter(x=x, y= (MatCoeff[i-1,2]-MatCoeff[i-1,0]*x)/MatCoeff[i-1,1], name='b) Droite %d'%i)\n", " data.append(trace)\n", " \n", "f=go.FigureWidget(data=data,\n", " layout=go.Layout(xaxis=dict(\n", " range=[-5, 5]\n", " ),\n", " yaxis=dict(\n", " range=[-10, 10]\n", " ) )\n", " \n", ")\n", "#def update_y(coeff, cof):\n", " # MatCoeff= [[coeff, 1, cof]]\n", " # MatCoeff=np.array(MatCoeff)\n", " # f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", "#coefficients=[[h,1,3]]\n", "def mat(k):\n", " h=k\n", " MatCoeff=[[h,1,3]]\n", " return MatCoeff\n", "def update_y(h):\n", " MatCoeff= mat(h)\n", " MatCoeff=np.array(MatCoeff)\n", " f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", " \n", "freq_slider = interactive(update_y, h=(-10, 10, 1/2)) #,cof=(-10, 10, 1))\n", "\n", "vb = VBox((f, freq_slider))\n", "vb.layout.align_items = 'center'\n", "vb" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#THIS IS WORKING\n", "MatCoeff=[[3, 1, 1], [1,3,1]] # we initialize the problem. Not what we plot, the one plotted is at zero.\n", "data=[]\n", "x=np.linspace(-25,25,101)\n", "MatCoeff=np.array(MatCoeff)\n", "for i in range(1,len(MatCoeff)+1):\n", " trace=go.Scatter(x=x, y= (MatCoeff[i-1,2]-MatCoeff[i-1,0]*x)/MatCoeff[i-1,1], name='c) Droite %d'%i)\n", " data.append(trace)\n", " \n", "f=go.FigureWidget(data=data,\n", " layout=go.Layout(xaxis=dict(\n", " range=[-25, 25]\n", " ),\n", " yaxis=dict(\n", " range=[-50, 50]\n", " ) )\n", " \n", ")\n", "#def update_y(coeff, cof):\n", " # MatCoeff= [[coeff, 1, cof]]\n", " # MatCoeff=np.array(MatCoeff)\n", " # f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", "def mat(h):\n", " MatCoeff= [[h, 3, 1],[3, 1, h] ]\n", " return MatCoeff\n", "\n", "def update_y(h):\n", " MatCoeff= mat(h)\n", " MatCoeff=np.array(MatCoeff)\n", " f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", " f.data[1].y=(MatCoeff[1,2]-MatCoeff[1,0]*x)/MatCoeff[1,1]\n", "\n", "freq_slider = interactive(update_y, h=(-20, 20, 1)) #,cof=(-10, 10, 1))\n", "\n", "vb = VBox((f, freq_slider))\n", "vb.layout.align_items = 'center'\n", "vb" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#THIS IS WORKING\n", "MatCoeff=[[3, 1, 1], [1,3,1]] # we initialize the problem. Not what we plot, the one plotted is at zero.\n", "data=[]\n", "x=np.linspace(-15,15,101)\n", "MatCoeff=np.array(MatCoeff)\n", "for i in range(1,len(MatCoeff)+1):\n", " trace=go.Scatter(x=x, y= (MatCoeff[i-1,2]-MatCoeff[i-1,0]*x)/MatCoeff[i-1,1], name='d) Droite %d'%i)\n", " data.append(trace)\n", " \n", "f=go.FigureWidget(data=data,\n", " layout=go.Layout(xaxis=dict(\n", " range=[-15, 15]\n", " ),\n", " yaxis=dict(\n", " range=[-10, 10]\n", " ) )\n", " \n", ")\n", "#def update_y(coeff, cof):\n", " # MatCoeff= [[coeff, 1, cof]]\n", " # MatCoeff=np.array(MatCoeff)\n", " # f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", "def update_y(h, k):\n", " MatCoeff= [[h, 1, k],[2, -5, 5] ]\n", " MatCoeff=np.array(MatCoeff)\n", " f.data[0].y=(MatCoeff[0,2]-MatCoeff[0,0]*x)/MatCoeff[0,1]\n", "\n", " \n", " f.data[1].y=(MatCoeff[1,2]-MatCoeff[1,0]*x)/MatCoeff[1,1]\n", "\n", "freq_slider = interactive(update_y, h=(-10, 10, 1/10),k=(-10, 10, 1))\n", "\n", "vb = VBox((f, freq_slider))\n", "vb.layout.align_items = 'center'\n", "vb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice XX\n", "\n", "Systeme de 3 droites en 2D: en changeant $h$, on passe d'une solution à une infinité ou à zéro solutions" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.8" + "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }