• Aucun résultat trouvé

Le Pivot de Gauss

N/A
N/A
Protected

Academic year: 2022

Partager "Le Pivot de Gauss"

Copied!
3
0
0

Texte intégral

(1)

TD n

07 : Le Pivot de Gauss

12 d´ ecembre 2017

R´ecup´erer le fichiergauss.pyqui se trouve dans l’espace de partage du r´eseau de l’´etablissement.

Copiez-le sur le bureau de votre ordinateur.

Vous y trouverez les consignes suivantes :

#################################################################################################

# Programmation de l’algorithme du Pivot de Gauss pour un syst`eme de Cramer

# On souhaite r´esoudre le syst`eme de Cramer AX=B

# La matrice A sera cod´ee sous la forme d’une liste de listes A de taille nxn

# Le terme aij sera alors obtenu grace `a la commande A[i][j] pour i et j dans [|0,n-1|]

# le vecteur B sera cod´e sous la forme d’une liste de valeurs : B = [b0,b1..., bn-1]

# On pourra tester les programmes suivants avec les matrices A et B suivantes : A = [[1,0,-1],[1,2,-1],[0,2,1]]

B = [0,2,-1]

#################################################################################################

1

(2)

MPSI - 2016/2017 Pivot de Gauss http://pascal.delahaye1.free.fr/

# I] Programmation des op´erations ´el´ementaires

# 1) Recherche d’un pivot

# Compl´eter la fonction suivante qui dans une colonne j d’une matrice A, renvoie

# l’indice du premier coefficient aij non nul pour j>=i. Ce coefficient sera le pivot.

# Le syst`eme ´etant de Cramer, on est assur´e qu’un tel coeffient existe bien def pivot(A,i):

n = len(A) # Ne sert `a rien !!

j=i

while A[j][i] == 0:

...

pivot(A,0)

# 2) Echange de lignes : Li <-> Lj

# Compl´eter la fonction suivante qui ´echange les lignes Li et Lj d’une matrice A

# Attention, l’indexation des lignes et colonnes commence `a 0 def echange_lignes (A,i,j):

n = len(A)

for k in range(...) : ...

echange_lignes(A,0,2)

# 3) Transvection : Lj <- Lj + mu.Li

# Compl´eter la fonction suivante qui dans une matrice A, remplace la ligne Lj par la ligne Lj + mu.Li def transvection(A,i,j,mu):

n = len(A)

for k in range(...) : ...

transvection(A,0,1,2)

#################################################################################################

# II] Programmation de la r´esolution du syst`eme

# 1) ETAPE 1 : Triangularisation du syst`eme

# Compl`eter la proc´edure suivante qui transforme le syst`eme AX = B en un syst`eme triangulaire

# On pensera `a bien effectuer sur le vecteur B les m^emes op´erations d’´echange et de transvection

# que sur la matrice A def triangularisation(A,B):

n = len(A)

for i in range(0,n-1): # i parcourt ici toutes les lignes de 0 `a n-2 j = pivot(...)

... # on ´echange les lignes Li et Lj puis

# on annule tous les coefficients sous a[i][i]

triangularisation(A,B)

# 2) ETAPE 2 : R´esolution du syst`eme triangulaire

2

(3)

MPSI - 2016/2017 Pivot de Gauss http://pascal.delahaye1.free.fr/

# Construire la fonction qui, `a partir d’un syst`eme triangulaire, renvoie le vecteur solution.

def soltrig(A,B):

n = ln(A)

l =[] # l est la liste dans lesquelles nous allons stocker les solutions for i in range(0,n-1): # (n-1)-i repr´esente l’indice de la solution recherch´ee

...

soltrig(A,B)

# 3) ETAPE 3 : Programme de r´esolution globale

# A l’aide des proc´edures pr´ec´edentes, construire une fonction de r´esolution du syst`eme AX = B

# par la m´ethode de Gauss.

#################################################################################################

Rappel des fonctionssolve()de sympy et numpy pour r´esoudre :

ax+by+cz= 0 ax+by+cz= 0 a′′x+b′′y+c′′z= 0

.

Python

# Avec sympy ############################

from sympy import var, solve var(’x,y,z’)

solve([a*x+b*y+c*z,a’*x+b’*y+c’*z,a"*x+b"*y+c"*z],[x,y,z])

# Avec numpy ############################

from numpy.linalg import solve from numpy import array

A = array([[a,b,c],[a’,b’,c’],[a",b",c"]]) B = array([u,v,w])

solve(A,B)

3

Références

Documents relatifs

‚ Recherche de la solution de l’équation homogène en annulant le second membre, et en exprimant les inconnues principales en fonction des inconnues secondaires, en remontant à

‚ Inconnues principales et secondaires d’un système échelonné (la définition générale d’inconnues principales et secondaires n’a pas été vue).. ‚ Recherche d’une

Écrire une fonction A, pivot,B prenant en paramètre une matrice échelonnée A, une liste pivot correspondant à la position des pivots (i.e. la position de colonne des premiers termes

[r]

´ Ecrire un programme permettant ` a un utilisateur de saisir une matrice carr´ee et un vecteur de la taille de cette matrice.. L’utilisateur devra dans un premier temps dire la

Je vais d’abord mettre L1’ au même coefficient

Programmer cet algorithme sur machine (calculatrice ou ordinateur avec le logiciel Algobox). Écrire le programme en indiquant la marque de la calculatrice dans le cas d’un programme

Pour appliquer la m´ ethode du pivot ` a un syst` eme, on commence donc par y choisir une ´ equation et une inconnue qu’on va rendre faciles en modifiant les autres ´ equations.. La