Exercices corrigés sur les matrices en Python, Java et langage C - TD 2
C'est la deuxième série d'exercices corrigés sur les matrices, nous continuons à effectuer des opérations intéressantes de 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 d'une matrice et vérifiez s'il s'agit d'une matrice triangulaire supérieure ou non.
Une matrice triangulaire supérieure est une matrice carrée spéciale dont tous les éléments en dessous de la diagonale principale sont nuls, ce qui signifie que \(a_{i,j}=0, \hspace{0.2cm}\forall i \ge j \)
Exemple :
$$ A= \begin{pmatrix} 1 & 2 & 3 \\ 0 & 3 & -1 \\ 0 & 0 & 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[][]; int M = 2, N = 2, i, j; boolean estTriang; // 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(); } } // Nous supposons que c'est une matrice triangulaire supérieure */ estTriang = true; for (i = 0; i < M; i++) { for (j = 0; j < i; j++) { /* Si les éléments en dessous de la diagonale principale ne sont pas égaux à zéro, alors cette matrice n'est pas une matrice triangulaire supérieure */ if (A[i][j] != 0) { estTriang = false; break; } } } if (estTriang == true) { System.out.println("\nLa matrice est une matrice triangulaire supérieure.\n"); } else { System.out.println("\nLa matrice n'est pas une matrice triangulaire supérieure."); } // 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, i, estTriang; /* 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]); } } /* Nous supposons que c'est une matrice triangulaire supérieure */ estTriang = 1; for(i=0; i<LIGNES; i++) { for(j=0; j<i; j++) { /* * Si les éléments en dessous de la diagonale principale ne sont pas égaux à zéro, * alors cette matrice n'est pas une matrice triangulaire supérieure */ if(A[i][j]!=0) { estTriang = 0; break; } } } if(estTriang == 1) { printf("\nLa matrice est une matrice triangulaire supérieure.\n"); } else { printf("\nLa matrice n'est pas une matrice triangulaire supérieure."); } 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))) # Nous supposons que c'est une matrice triangulaire supérieure */ estTriang = True for i in range(M): for j in range(i): if(A[i][j] != 0): estTriang = False break if(estTriang == True): print("\nLa matrice est une matrice triangulaire supérieure.") else: print("\nLa matrice n'est pas une matrice triangulaire supérieure.")
Exercice 2
Écrivez un programme pour lire les éléments d'une matrice et trouver la somme de la matrice triangulaire supérieure.
$$ \forall i,j : S=\sum a_{i,j}, \hspace{0.3cm}avec \hspace{0.1cm}j \gt i $$
Exemple :
$$ A= \begin{pmatrix} 1 & 2 & 3 \\ 4 & 3 & -1 \\ 4 & 7 & 9 \end{pmatrix} \hspace{1cm} S = 2 + 3 + (-1) = 4 $$
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int A[][]; int M = 3, N = 3, i, j, somme; // 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(); } } somme = 0; for (i = 0; i < M; i++) { for (j = i + 1; j < N; j++) { somme += A[i][j]; } } System.out.println("La somme est " + 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, i, 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<LIGNES; i++) { for(j=0; j<COLS; j++) { scanf("%d", &A[i][j]); } } somme = 0; for(i=0; i<LIGNES; i++) { for(j=i+1; j<COLS; j++) { somme+=A[i][j]; } } printf("\nLa somme est %d. \n",somme); return 0; }
# Taille de la matrice M = 3 N = 3 # 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))) somme = 0 for i in range(M): for j in range(i+1, N): somme += A[i][j] print("La somme est ", somme)
Exercice 3
Écrivez un programme pour lire les éléments d'une matrice et trouver sa matrice transposée.
En mathématiques, la matrice transposée d'une matrice A de taille (m,n) est une matrice notée \(A^t\) de taille (n,m), obtenue en échangeant les lignes et les colonnes de A.
Si on note B la matrice transposée de A, on a \(b_{i,j}=a_{j,i}\)
Exemple :
$$ A= \begin{pmatrix} 1 & 2 & 3 \\ 4 & 3 & -1 \end{pmatrix} $$ $$ A^t= \begin{pmatrix} 1 & 4 \\ 2 & 3 \\ 3 & -1 \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[][]; int M = 3, N = 2, i, j; // intialiser la taille de A et B A = new int[M][N]; B = new int[N][M]; // 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(); } } for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { B[i][j] = A[j][i]; } } // Afficher la matrice transposée for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { System.out.print(B[i][j] + " , "); } System.out.println(); } // 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]; // matrice originale int B[COLS][LIGNES]; // matrice transposée 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]); } } /* * Trouver la matrice transposée */ for(i=0; i<COLS; i++) { for(j=0; j<LIGNES; j++) { B[i][j] = A[j][i]; } } /* Afficher la matrice transposée */ for(i=0; i<COLS; i++) { for(j=0; j<LIGNES; j++) { printf("%d ", B[i][j]); } printf("\n"); } return 0; }
# Taille de la matrice M = 3 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(M)] for j in range(N)] # 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))) for i in range(N): for j in range(M): B[i][j] = A[j][i] # Afficher la matrice transposée for i in range(N): for j in range(M): print(B[i][j], end=", ") print()