FORMAV votre partenaire Formation http://formav.eu
$\large \begin{cases}& a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1\\& a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_2\\& \ddots \qquad \qquad\ddots \qquad \qquad\ddots\\& a_{n1}x_1+a_{n2}x_2+...+a_{nn}x_n=b_n\end{cases}$
$\begin{bmatrix} a_{11}& \dots & a_{1n}\\ \vdots& \ddots& \vdots \\ a_{n1} & \dots&a_{nn} \end{bmatrix}\begin{bmatrix} x_{1}\\ \vdots\\ x_{n} \end{bmatrix}=\begin{bmatrix} b_{1}\\ \vdots\\ b_{n} \end{bmatrix}$
On pose:
$ \quad A=\begin{bmatrix} a_{11}& \dots & a_{1n}\\ \vdots& \ddots& \vdots \\ a_{n1} & \dots&a_{nn} \end{bmatrix}\qquad X=\begin{bmatrix} x_{1}\\ \vdots\\ x_{n} \end{bmatrix} \qquad B=\begin{bmatrix} b_{1}\\ \vdots\\ b_{n} \end{bmatrix}$
$\quad AX=B$
$\qquad X=A^{-1}B$
#-*- coding: utf-8 -*-
#Résolution d'un système d'équations de façon matricielle
#Programme créé par Martine Arrou-Vignod 11 Juin 2015
%matplotlib inline
from math import *
import numpy as np
import numpy.linalg as la
import matplotlib.pyplot as plt
#précision pour écriture des nombres réels dans les matrices et vecteurs
np.set_printoptions(precision=2)
#définition de la fonction de résolution rapide
def res_rapide(A,B):
#vérification de la taille des matrices
if ( A.size==A[1].size**2) and (A[1].size==B.size):
deta=la.det(A)
print('le déterminant de la matrice a est:',deta)
if deta != 0 :
print('On peut résoudre le système en utilisant la fonction solve')
X= la.solve(A, B)
print(X)
else:
print('On ne peut pas résoudre pas le système en utilisant la fonction solve')
else:
print('le système n\'est pas un système de n équations à n inconnues')
#Exemple p1_1
A1 = np.array([[2,3,3,1], [-1,1,1,1], [-1,0,0,1], [-2,-1,1,1]])
B1= np.array([4,1,5,1])
res_rapide(A1,B1)
#Exemple p1_2
A2 = np.array([[2,3,3,1], [-1,1,1,1], [-1,1,1,1], [-2,-1,1,1]])
B2= np.array([4,1,5,1])
res_rapide(A2,B2)
#Exemple p2_3
A3 = np.array([[2,3,3,1], [-1,1,1,1], [-1,0,0,1], [-2,-1,1,1]])
B3= np.array([4,1,5])
res_rapide(A3,B3)
###Définition des fonctions du programme
#Fonction pour afficher le systeme
def affichsystem(A,B):
ch=""
for i in range(1,A[1].size+1):
ch=""
for k in range(1,A[1].size):
if A[i-1][k] >=0 :
ch+=chr(ord("+"))
else:
ch+=chr(ord("-"))
if A[1].size==3:
print(A[i-1][0],'x '+ch[0],np.abs(A[i-1][1]),'y '+ch[1],np.abs(A[i-1][2]),'z =',B[i-1][0])
if A[1].size==4:
print(A[i-1][0],'x '+ch[0],np.abs(A[i-1][1]),'y '+ch[1],np.abs(A[i-1][2]),'z '+ch[2],np.abs(A[i-1][3]),'t=',B[i-1][0])
if A[1].size==5:
print(A[i-1][0],'x '+ch[0],np.abs(A[i-1][1]),'y '+ch[1],np.abs(A[i-1][2]),'z '+ch[2],np.abs(A[i-1][3]),'z '+ch[3],np.abs(A[i-1][4]),'u=',B[i-1][0])
#Fonction pour résoudre le système
def resolsystem(A,B):
det=la.det(A)
print('Résolution du système')
print('Matrice A')
print(A)
print('Vecteur B')
print(B)
print('Le déterminant de la matrice A est : ',det)
if det != 0 :
print('le système a une solution unique ')
sol=la.solve(A,B)
print('la solution est: x=',"%1.2f"%sol[0][0], '\t y=',"%1.2f"%sol[1][0],'\t z=',"%1.2f"%sol[2][0])
if det==0:
print('Le système n\'a pas de solution ou une infinité de solutions')
#Fonction pour afficher et résoudre le system
def affchresolsystem(A,B):
if ( A.size==A[1].size**2) and (A[1].size==B.size):
affichsystem(A,B)
resolsystem(A,B)
else:
print('le système n\'est pas un système de n équations à n inconnues')
#Exemple p2_1
A=np.array([[3,-1,1],[1,1,1],[1,2,4]])
B=np.array([[-1],[4],[3]])
affchresolsystem(A,B)
#Exemple p2_2
A=np.array([[1,-1,1],[1,-1,1],[1,2,4]])
B=np.array([[-1],[4],[3]])
affchresolsystem(A,B)
#Exemple p2_3
A=np.array([[3,-1,1,2],[1,1,1,1],[1,2,4,5],[1,2,0,5]])
B=np.array([[-1],[4],[3],[0]])
affchresolsystem(A,B)
#Exemple p2_4
A=np.array([[0,-1,1,2,1],[1,1,1,1,1],[1,2,4,5,1],[1,2,0,5,1],[1,2,1,5,2]])
B=np.array([[-1],[4],[3],[0],[0]])
affchresolsystem(A,B)
#Exemple p2_5
A=np.array([[3,-1,1,2],[1,1,1,1],[1,2,4,5],[1,2,0,5],[1,2,1,5]])
B=np.array([[-1],[4],[3],[0],[0]])
affchresolsystem(A,B)
#Exemple p2_6
A=np.array([[3,-1,1,2,1],[1,1,1,1,1],[1,2,4,5,1],[1,2,0,5,1],[1,2,1,5,2]])
B=np.array([[-1],[4],[3],[0]])
affchresolsystem(A,B)