PYTHON.2 INFO FEUILLE n°18 D'EXERCICES

                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.

>>>

--------------------------------------------------------------------------------------