PYTHON. 2 INFO FEUILLE D'EXERCICES n°18 MAI 2012
Thème:
Les produits de matrices carrées d'ordre 2.
----------------------------------------------------------------------------------------------
EXERCICES 1
Ecrire un programme qui, quand l'utilisateur
entre quatre listes a , b , c , d, chacune de deux valeurs,
retourne le produit A× B des matrices A=[a,b] et B=[c,d].
Il s'agit d'avoir le produit de deux matrices de type ( 2 ; 2).
---------------------------------------------------------------------------------------------------------
Réponse:
On peut proposer:
def prodmat(a,b,c,d):
A=[a,b]
B=[c,d]
AxB= [ [a[0]*c[0]+a[1]*d[0],a[0]*c[1]+a[1]*d[1]],[b[0]*c[0]+b[1]*d[0],b[0]*c[1]+b[1]*d[1]]]
return AxB
#PROGRAMME PRINCIPAL#
##################
a=input("Entrer une liste a de deux valeurs: La première ligne de A est ")
b=input("Entrer une liste de b deux valeurs: La seconde ligne de A est ")
c=input("Entrer une liste c de deux valeurs: La première ligne de B est ")
d=input("Entrer une liste d de deux valeurs: La seconde ligne de B est ")
print " La matrice A = ",[a,b]
print " La matrice B = ", [c,d]
print " La matrice A x B = ",prodmat(a,b,c,d)
Par exemple:
>>> prodmat(a,b,c,d)
Entrer une liste a de deux valeurs: La première ligne de A est [1,2]
Entrer une liste de b deux valeurs: La seconde ligne de A est [0,3]
Entrer une liste c de deux valeurs: La première ligne de B est [2,1]
Entrer une liste d de deux valeurs: La seconde ligne de B est [5,1]
La matrice A = [[1, 2], [0, 3]]
La matrice B = [[2, 1], [5, 1]]
La matrice A x B = [[12, 3], [15, 3]]
>>>
----------------
Autre variante possible:
On demande directement à l'utilisateur d'entrer
les deux matrices carrées d'ordre 2 que sont A et B.
def prodmat(A,B):
a=A[0]
b=A[1]
c=B[0]
d=B[1]
AxB= [ [a[0]*c[0]+a[1]*d[0],a[0]*c[1]+a[1]*d[1]],[b[0]*c[0]+b[1]*d[0],b[0]*c[1]+b[1]*d[1]]]
return AxB
#PROGRAMME PRINCIPAL#
##################
A=input("Entrer une matrice A carrée d'ordre 2: A = ")
B=input("Entrer une matrice B carrée d'ordre 2: B = ")
print " La matrice A x B = ",prodmat(A,B)
On obtient par exemple :
>>> prodmat(A,B)
Entrer une matrice A carrée d'ordre 2: A = [[1,2],[0,3]]
Entrer une matrice B carrée d'ordre 2: B = [[2,1],[5,1]]
La matrice A x B = [[12, 3], [15, 3]]
>>>
------------------------------------------------------------------------------------------------------
EXERCICE 2
Faire un programme qui donne le carré d'une matrice A
de type (2;2).
----------------------------------------------------------------------------------------------
Réponse:
def prodmat(A):
a=A[0]
b=A[1]
AxA = [ [a[0]*a[0]+a[1]*b[0],a[0]*a[1]+a[1]*b[1]],[b[0]*a[0]+b[1]*b[0],b[0]*a[1]+b[1]*b[1]]]
return AxA
#PROGRAMME PRINCIPAL#
##################
A=input("Entrer une matrice A carrée d'ordre 2: A = ")
print " La matrice A x A = ",prodmat(A)
Par exemple on obtient:
>>>
Entrer une matrice A carrée d'ordre 2: A = [[1,2],[0,3]]
La matrice A x A = [[1, 8], [0, 9]]
>>>
On peut demander une disposition verticale.
----------------------------------------------------------------------------------
EXERCICE 3
G est un graphe de sommets E et F.
La matrice d'ajacence de G est : M =[ [1,1],[1,0]]
1. Faire un programme qui permet d'affîcher la matrice M2 .
2. Donner un script pour qui indique également le nombre de
chemins de longueur2 dans le graphe.
3.Donner un script pour qui indique également le nombre de
chemins de longueur 2 de E à F.
---------------------------------------------------------------------------------------
REPONSE:
1. Utiliser le programme de l'exercice précédent .
On peut proposer :
def prodmat(M):
a=M[0]
b=M[1]
MxM = [ [a[0]*a[0]+a[1]*b[0],a[0]*a[1]+a[1]*b[1]],[b[0]*a[0]+b[1]*b[0],b[0]*a[1]+b[1]*b[1]]]
return MxM
#PROGRAMME PRINCIPAL#
##################
M=input("Entrer la matrice M carrée d'ordre 2: M = ")
print " La matrice M x M est ",prodmat(M)
On obtient :
>>> prodmat(M)
Entrer la matrice M carrée d'ordre 2: M = [[1,1],[1,0]]
La matrice M x M est:
[[2, 1], [1, 1]]
>>>
2. La somme des termes de M x M est 5.
On peut proposer plus simplement:
from random import*
def prodmat2():
M=input("Entrer la matrice M carrée d'ordre 2: M = ")
a=M[0]
b=M[1]
N= [ [a[0]*a[0]+a[1]*b[0],a[0]*a[1]+a[1]*b[1]],[b[0]*a[0]+b[1]*b[0],b[0]*a[1]+b[1]*b[1]]]
m=N[0][0]+N[1][0]+N[1][1]+N[0][1]
print "La matrice M x M est "
for line in N:
print line
print " Le nombre de chemins de longueur 2 dans le graphe est: ",m
On obtient par exemple:
>>> prodmat2()
Entrer la matrice M carrée d'ordre 2: M = [[1,1],[1,0]]
La matrice M x M est:
[2, 1]
[1, 1]
Le nombre de chemins de longueur 2 dans le graphe est: 5
>>>
3. On peut proposer le script suivant pour l'obtenir.
from random import*
def prodmat3():
M=input("Entrer la matrice M carrée d'ordre 2: M = ")
a=M[0]
b=M[1]
N= [ [a[0]*a[0]+a[1]*b[0],a[0]*a[1]+a[1]*b[1]],[b[0]*a[0]+b[1]*b[0],b[0]*a[1]+b[1]*b[1]]]
m=N[0][0]+N[1][0]+N[1][1]+N[0][1]
print "La matrice M x M est ",N
print " Le nombre de chemins de longueur 2 dans le graphe est: ",m
print "Le nombre de chemins de longueur 2 de E à F est",N[0][1],"."
On obtient :
>>>prodmat3():
Entrer la matrice M carrée d'ordre 2: M = [[1,1],[1,0]]
La matrice M x M est:
[[2, 1], [1, 1]]
Le nombre de chemins de longueur 2 dans le graphe est:5
Le nombre de chemins de longueur 2 de E à F est 1.
>>>
--------------------------------------------------------------------------------------