Exercices corrigés sur les matrices en Python, Java et langage C - TD 1

Do you want to read our courses in English? please visit our new website cs-teachers.com Click here

Exercices corrigés sur les matrices en Python, Java et langage C - TD 1

Une matrice est un tableau à deux dimensions, qui contient des éléments du même type.

Dans les exercices suivants, nous essaierons de vous initier à la façon de gérer un tableau 2D en résolvant des problèmes liés au calcul matriciel.

Tous les exercices sont résolus en utilisant la programmation Python, Java et C

Exercice 1

Écrivez un programme pour lire les éléments de deux matrices et ajoutez les deux matrices dans la troisième.

La somme de deux matrices de taille (m,n), \((A_{i,j})\) et \((B_{i,j})\) notée \(A+B\) est à nouveau une matrice \((C_{i,j})\) de taille (m,n), obtenue en additionnant les éléments correspondants:
pour tous i, j : \(c_{i,j}=a_{i,j}+b_{i,j}\)

Exemple : 

$$ \begin{pmatrix} 2 & 3 & 5 \\ 6 & 8 & 9 \end{pmatrix} + \begin{pmatrix} -1 & 1 & 2 \\ 7 & 2 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 4 & 7 \\ 13 & 10 & 10 \end{pmatrix} $$

Corrigé
import java.util.Scanner;

public class Test {
    public static void main(String[] variables) {
        Scanner clavier = new Scanner(System.in);

        int A[][], B[][], C[][];
        int M = 2, N = 2, i, j;

        // intialiser la taille des matrices A et B
        A = new int[M][N];
        B = new int[M][N];
        C = new int[M][N];

        // Saisir les éléments de la matrice A
        for (i = 0; i < M; i++) {
            for (j = 0; j < M; j++) {
                System.out.print("A[" + i + "][" + j + "] : ");
                A[i][j] = clavier.nextInt();
            }

        }

        // Saisir les éléments de la matrice B
        for (i = 0; i < M; i++) {
            for (j = 0; j < M; j++) {
                System.out.print("B[" + i + "][" + j + "] : ");
                B[i][j] = clavier.nextInt();
            }

        }

        // Ajoutez les deux matrices A et B par élément et stockez le résultat dans la matrice C
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                /* Cij = Aij + Bij */
                C[i][j] = A[i][j] + B[i][j];
            }
        }

        // Afficher le résultat 
        System.out.println("\nLa somme de A+B = \n");
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                System.out.print(C[i][j] + " \t");
            }
            System.out.println();
        }

        // fermer les ressources
        clavier.close();
    }
}

                                        
#include <stdio.h>

#define LIGNES 3 // Nombre de lignes
#define COLS 4 // Nombre de colonnes

int main()
{
    int A[LIGNES][COLS]; // Matrice 1
    int B[LIGNES][COLS]; // Matrice 2
    int C[LIGNES][COLS]; // Résultat

    int i, j;

    /* Saisir les éléments de la matrice A */
    printf("Saisir les éléments de la matrice A de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            scanf("%d", &A[i][j]);
        }
    }

    /* Saisir les éléments de la matrice B */
    printf("Saisir les éléments de la matrice B de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            scanf("%d", &B[i][j]);
        }
    }

    /*
     * Ajoutez les deux matrices A et B par élément et stockez le résultat dans la matrice C
     */
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            /* Cij = Aij + Bij */
            C[i][j] = A[i][j] + B[i][j];
        }
    }


    /* Afficher le résultat */
    printf("\nLa somme de A+B = \n");
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; col<COLS; j++)
        {
            printf("%d ", C[i][j]);
        }
        printf("\n");
    }

    return 0;
}
                                        
# Taille de la matrice
M = 2
N = 2

# intialiser la taille des matrices
A = [[0 for i in range(N)] for j in range(M)]
B = [[0 for i in range(N)] for j in range(M)]
C = [[0 for i in range(N)] for j in range(M)]

# Saisir les éléments de A
for i in range(M):
    for j in range(N):
        A[i][j] = int(input("Saisir l'élement A[{0}][{1}] : ".format(i, j)))

# Saisir les éléments de B
for i in range(M):
    for j in range(N):
        B[i][j] = int(input("Saisir l'élement B[{0}][{1}] : ".format(i, j)))


# Ajoutez les deux matrices A et B par élément et stockez le résultat dans la matrice C
for i in range(M):
    for j in range(N):
        C[i][j] = A[i][j]+B[i][j]


# Afficher le résultat
for i in range(M):
    for j in range(N):
        print(C[i][j], end=" , ")
    print("")

                                        

Exercice 2

Écrivez un programme pour lire les éléments d'une matrice et d'un scalaire puis effectuez une multiplication scalaire de la matrice.

La multiplication scalaire de la matrice \((A_{i,j})\) de taille (m,n) et d'un scalaire c est la matrice \((B_{i,j})\) définie par :
pour tous i, j : \(b_{i,j}=c*a_{i,j}\)

Exemple : 

$$ 3 * \begin{pmatrix} 2 & 3 & 5 \\ 6 & 8 & 9 \end{pmatrix} = \begin{pmatrix} 3 & 9 & 21 \\ 18 & 24 & 27 \end{pmatrix} $$

Corrigé
import java.util.Scanner;

public class Test {
    public static void main(String[] variables) {
        Scanner clavier = new Scanner(System.in);

        int A[][], C[][];
        int M = 2, N = 2, c, i, j;

        // intialiser la taille de A
        A = new int[M][N];
        C = new int[M][N];

        // Saisir les éléments de la matrice A
        for (i = 0; i < M; i++) {
            for (j = 0; j < M; j++) {
                System.out.print("A[" + i + "][" + j + "] : ");
                A[i][j] = clavier.nextInt();
            }

        }

        System.out.print("Saisir un scalaire : ");
        c = clavier.nextInt();

        // Effectuer la multiplication scalaire de la matrice
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                // Cij = c * Aij
                C[i][j] = c * A[i][j];
            }
        }

        // Afficher le résultat */
        System.out.println("\n cA = \n");
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                System.out.print(C[i][j] + " \t");
            }
            System.out.println();
        }

        // fermer les ressources
        clavier.close();
    }
}

                                        
#include <stdio.h>

#define LIGNES 3 // Nombre de lignes
#define COLS 4 // Nombre de colonnes

int main()
{
    int A[LIGNES][COLS]; 
    int num, i, j;

    /* Saisir les éléments de la matrice A */
    printf("Saisir les éléments de la matrice A de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            scanf("%d", &A[i][j]);
        }
    }

    /* Saisir un scalaire */
    printf("Saisir un scalaire ");
    scanf("%d", &num);

    /* Effectuer la multiplication scalaire de la matrice */
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            /* (cAij) = c . Aij */
            A[i][j] = num * A[i][j];
        }
    }

    /* Afficher le résultat */
    printf("\n c.A = \n");
    for(i=0; i<SIZE; i++)
    {
        for(j=0; j<SIZE; j++)
        {
            printf("%d ", A[i][j]);
        }
        printf("\n");
    }

    return 0;
}
                                        
# Taille de la matrice
M = 2
N = 2

# intialiser la taille des matrices
A = [[0 for i in range(N)] for j in range(M)]
C = [[0 for i in range(N)] for j in range(M)]

num = int(input("Saisir un scalaire : "))

# Saisir les éléments de A
for i in range(M):
    for j in range(N):
        A[i][j] = int(input("Saisir l'élement A[{0}][{1}] : ".format(i, j)))


# Effectuer la multiplication scalaire de la matrice
for i in range(M):
    for j in range(N):
        C[i][j] = num*A[i][j]


# Afficher le résultat
for i in range(M):
    for j in range(N):
        print(C[i][j], end=" , ")
    print("")

                                        

Exercice 3

Écrivez un programme pour lire les éléments de deux matrices, puis multipliez les deux matrices dans la troisième.

Deux matrices ne peuvent être multipliées que si le nombre de colonnes de la première matrice est le même que le nombre de lignes de la seconde matrice.

Si \(A=(a_{i,j})\) est une matrice de taille (m,n), et \(B=(b_{i,j})\) est une matrice de taille (n,p), alors leur produit, noté \(AB=(c_{i,j})\) est une matrice de taille (m,p) définie par :

$$ \forall i,j : c_{i,j}=\sum_{k=1}^{n} a_{ik}*b_{kj} $$

Exemple : 

$$ \begin{pmatrix} 1 & 2 & 0 \\ 4 & 3 & -1 \end{pmatrix} * \begin{pmatrix} 5 & 1\\ 2 & 3\\ 3 & 4 \end{pmatrix} = \begin{pmatrix} 9 & 7\\ 23 & 9 \end{pmatrix} $$

Corrigé
import java.util.Scanner;

public class Test {
    public static void main(String[] variables) {
        Scanner clavier = new Scanner(System.in);

        int A[][], B[][], C[][];
        int M = 2, N = 2, P = 2, i, j, k, somme = 0;

        // intialiser la taille des matrices A et B
        A = new int[M][N];
        B = new int[N][P];
        C = new int[M][P];

        // Saisir les éléments de la matrice A
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                System.out.print("A[" + i + "][" + j + "] : ");
                A[i][j] = clavier.nextInt();
            }

        }

        // Saisir les éléments de la matrice B
        for (i = 0; i < N; i++) {
            for (j = 0; j < P; j++) {
                System.out.print("B[" + i + "][" + j + "] : ");
                B[i][j] = clavier.nextInt();
            }

        }

        /*
          Ajoutez les deux matrices A et B par élément et stockez le résultat dans la
          matrice C
         */
        for (i = 0; i < M; i++) {
            for (j = 0; j < P; j++) {
                somme = 0;
                /*
                  Multipliez la ligne de la première matrice par la colonne de la deuxième
                  matrice et stockez la somme du produit des éléments dans somme.
                 */
                for (k = 0; k < N; k++) {
                    somme += A[i][k] * B[k][j];
                }

                C[i][j] = somme;
            }
        }

        // Afficher le résultat */
        System.out.println("\n A*B = \n");
        for (i = 0; i < M; i++) {
            for (j = 0; j < P; j++) {
                System.out.print(C[i][j] + " \t");
            }
            System.out.println();
        }

        // fermer les ressources
        clavier.close();
    }
}

                                        
#include <stdio.h>

#define M 3
#define N 4
#define P 2

int main()
{
    int A[M][N];
    int B[N][P]; 
    int C[M][P];
    
    int j, j, k, somme;


    /* Saisir les éléments de la matrice A */
    printf("Saisir les éléments de la matrice A de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<M; i++)
    {
        for(j=0; j<N; j++)
        {
            scanf("%d", &A[i][j]);
        }
    }

    /* Saisir les éléments de la matrice B */
    printf("Saisir les éléments de la matrice B de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<N; i++)
    {
        for(j=0; j<P; j++)
        {
            scanf("%d", &B[i][j]);
        }
    }

    /*
     * A*B
     */
    for(i=0; i<M; i++)
    {
        for(j=0; j<P; j++)
        {
            somme = 0;
            /*
             * Multipliez la ligne de la première matrice par la colonne de la 
             * deuxième matrice et stockez la somme du produit des éléments dans somme.
             */
            for(k=0; k<N; k++)
            {
                somme += A[i][k] * B[k][j];
            }

            C[i][j] = somme;
        }
    }

    /* Afficher le résultat */
    printf("\nA * B = \n");
    for(i=0; i<M; i++)
    {
        for(j=0; j<P; j++)
        {
            printf("%d ", C[i][j]);
        }
        printf("\n");
    }

    return 0;
}
                                        
# Taille de la matrice
M = 2
N = 2
P = 2

# intialiser la taille des matrices
A = [[0 for i in range(N)] for j in range(M)]
B = [[0 for i in range(P)] for j in range(N)]
C = [[0 for i in range(P)] for j in range(M)]

# Saisir les éléments de A
for i in range(M):
    for j in range(N):
        A[i][j] = int(input("Saisir l'élement A[{0}][{1}] : ".format(i, j)))

# Saisir les éléments de B
for i in range(M):
    for j in range(N):
        B[i][j] = int(input("Saisir l'élement B[{0}][{1}] : ".format(i, j)))


# Ajoutez les deux matrices A et B par élément et stockez le résultat dans la matrice C
for i in range(M):
    for j in range(P):
        somme = 0
        # Multipliez la ligne de la première matrice par la colonne de la deuxième
        # matrice et stockez la somme du produit des éléments dans somme.
        for k in range(N):
            somme += A[i][k] * B[k][j]
        C[i][j] = somme


# Afficher le résultat
for i in range(M):
    for j in range(N):
        print(C[i][j], end=" , ")
    print("")

                                        

Exercice 4

Écrivez un programme pour lire les éléments d'une matrice et trouver la somme des éléments de la diagonale principale de la matrice.

Si \(A=(a_{i,j})\) est une matrice de taille (m,n), alors la somme des éléments de la diagonale notée S :

$$ S=\sum_{k=1}^{m}a_{k,k}; $$

Exemple : 

$$ A= \begin{pmatrix} 1 & 2 & 3 \\ 4 & 3 & -1 \\ 4 & 7 & 9 \end{pmatrix} \hspace{1cm} S = 1 + 3 + 9 = 13 $$

Corrigé
import java.util.Scanner;

public class Test {
    public static void main(String[] variables) {
        Scanner clavier = new Scanner(System.in);

        int A[][];
        int M = 2, N = 2, i, j, somme = 0;

        // intialiser la taille de A
        A = new int[M][N];

        // Saisir les éléments de la matrice A
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                System.out.print("A[" + i + "][" + j + "] : ");
                A[i][j] = clavier.nextInt();
            }

        }

        // Trouver la somme des éléments diagonaux 
        for (i = 0; i < M; i++) {
            somme += A[i][i];
        }

        // Afficher le résultat 
        System.out.println(" Somme des éléments diagonaux = " + somme);

        // fermer les ressources
        clavier.close();
    }
}

                                        
#include <stdio.h>

#define LIGNES 3 // Nombre de lignes
#define COLS 3 // Nombre de colonnes

int main()
{
    int A[LIGNES][COLS];
    int i, j, somme = 0;

    /* Saisir les éléments de la matrice A */
    printf("Saisir les éléments de la matrice A de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            scanf("%d", &A[i][j]);
        }
    }

    /* Trouver la somme des éléments diagonaux */
    for(i=0; i<LIGNES; row++)
    {
        somme = somme + A[i][i];
    }

    printf("\n Somme des éléments diagonaux = %d", somme);

    return 0;
}
                                        
# Taille de la matrice
M = 2
N = 2

# intialiser la taille des matrices
A = [[0 for i in range(N)] for j in range(M)]

# Saisir les éléments de A
for i in range(M):
    for j in range(N):
        A[i][j] = int(input("Saisir l'élement A[{0}][{1}] : ".format(i, j)))


# Trouver la somme des éléments diagonaux
somme = 0
for i in range(M):
    somme += A[i][i]


# Afficher le résultat
print("Somme des éléments diagonaux = ", somme)

                                        

Exercice 5

Écrivez un programme pour lire les éléments d'une matrice et trouver la somme des éléments de chaque ligne et colonne de la matrice.

Exemple

$$ A= \begin{pmatrix} 1 & 2 & 3 \\ 4 & 3 & -1 \\ 4 & 7 & 9 \end{pmatrix} \hspace{1cm} \begin{array}{r} Ligne \hspace{0.1cm} 1= 6 \\ Ligne \hspace{0.1cm} 2= 6 \\ Ligne \hspace{0.1cm} 3= 30 \end{array} $$ $$ \begin{array}{r} Colonne \hspace{0.1cm} 1= 9 \\ Colonne \hspace{0.1cm} 2= 12 \\ Colonne \hspace{0.1cm} 3= 11 \end{array} $$

Corrigé
import java.util.Scanner;

public class Test {
    public static void main(String[] variables) {
        Scanner clavier = new Scanner(System.in);

        int A[][];
        int M = 2, N = 2, i, j, somme = 0;

        // intialiser la taille de A
        A = new int[M][N];

        // Saisir les éléments de la matrice A
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                System.out.print("A[" + i + "][" + j + "] : ");
                A[i][j] = clavier.nextInt();
            }

        }

        // Calculer la somme des éléments de chaque ligne de la matrice */
        for (i = 0; i < M; i++) {
            somme = 0;
            for (j = 0; j < N; j++) {
                somme += A[i][j];
            }

            System.out.println("Somme des éléments de la ligne " + (i + 1) + " = " + somme);
        }

        // Calculer la somme des éléments de chaque colonne de la matrice */
        for (j = 0; j < N; j++) {
            somme = 0;
            for (i = 0; i < M; i++) {
                somme += A[i][j];
            }

            System.out.println("Somme des éléments de la colonne " + (j + 1) + " = " + somme);
        }

        // fermer les ressources
        clavier.close();
    }
}

                                        
#include <stdio.h>

#define LIGNES 3 // Nombre de lignes
#define COLS 3 // Nombre de colonnes

int main()
{
    int A[LIGNES][COLS];
    int i, j, somme = 0;

    /* Saisir les éléments de la matrice A */
    printf("Saisir les éléments de la matrice A de taille (%d,%d) \n",LIGNES, COLS);
    for(i=0; i<LIGNES; i++)
    {
        for(j=0; j<COLS; j++)
        {
            scanf("%d", &A[i][j]);
        }
    }

    /* Calculer la somme des éléments de chaque ligne de la matrice */
    for(i=0; i<LIGNES; i++)
    {
        somme = 0;
        for(j=0; j<COLS; j++)
        {
            somme += A[i][j];
        }

        printf("Somme des éléments de la ligne %d = %d\n", i+1, somme);
    }
    
    /* Calculer la somme des éléments de chaque colonne de la matrice*/ 
    for(j=0; j<COLS; j++)
    {
        somme = 0;
        for(i=0; i<LIGNES; i++)
        {
            somme += A[i][j];
        }

        printf("Somme des éléments de la colonne %d = %d\n", j+1, somme);
    }

    return 0;
}
                                        
# Taille de la matrice
M = 2
N = 2

# intialiser la taille des matrices
A = [[0 for i in range(N)] for j in range(M)]

# Saisir les éléments de A
for i in range(M):
    for j in range(N):
        A[i][j] = int(input("Saisir l'élement A[{0}][{1}] : ".format(i, j)))

# Calculer la somme des éléments de chaque ligne de la matrice
for i in range(M):
    somme = 0
    for j in range(N):
        somme += A[i][j]
    print("Somme des éléments de la ligne ", (i + 1), " = ", somme)


# Calculer la somme des éléments de chaque colonne de la matrice
for j in range(N):
    somme = 0
    for i in range(M):
        somme += A[i][j]
    print("Somme des éléments de la colonne ", (j + 1), " = ", somme)

                                        

Partager ce cours avec tes amis :

Rédigé par M. ESSADDOUKI

Many people realize their hearts desires late in life. Continue learning, never stop striving and keep your curiosity sharp, and you will never become too old to appreciate life.

0 Commentaire(s)

Pour laisser un commentaire vous devez avoir un compte Inscription, ou Se connecter