Cette deuxième série d’exercices corrigés sur les matrices poursuit l’étude de quelques opérations classiques de calcul matriciel.
Les exercices ci-dessous sont résolus en Python, Java et C.
Vérifier si une matrice est triangulaire supérieure
Écrire un programme qui lit les éléments d’une matrice carrée puis vérifie si cette matrice est triangulaire supérieure.
Une matrice triangulaire supérieure est une matrice carrée dont tous les éléments situés en dessous de la diagonale principale sont nuls.
A = (ai,j) est triangulaire supérieure si tous les coefficients sous la diagonale principale sont nuls.Exemple
A = | 1 2 3 |
| 0 3 -1 |
| 0 0 9 |- Principe : on parcourt uniquement les cases situées sous la diagonale principale, c’est-à-dire celles pour lesquelles
j < i. Si l’une d’elles est non nulle, la matrice n’est pas triangulaire supérieure. - Implémentation en Java :
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; A = new int[M][N]; for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { System.out.print("A[" + i + "][" + j + "] : "); A[i][j] = clavier.nextInt(); } } estTriang = true; for (i = 0; i < M; i++) { for (j = 0; j < i; j++) { 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."); } clavier.close(); } } - Implémentation en C :
#include <stdio.h> #define LIGNES 3 #define COLS 3 int main() { int A[LIGNES][COLS]; int i, j, estTriang; 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]); } } estTriang = 1; for(i = 0; i < LIGNES; i++) { for(j = 0; j < i; j++) { 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.\n"); return 0; } - Implémentation en Python :
M = 2 N = 2 A = [[0 for i in range(N)] for j in range(M)] for i in range(M): for j in range(N): A[i][j] = int(input("Saisir l'élément A[{0}][{1}] : ".format(i, j))) 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.")
Calculer la somme des éléments de la partie triangulaire supérieure
Écrire un programme qui lit les éléments d’une matrice puis calcule la somme des éléments situés au-dessus de la diagonale principale.
Exemple
A = | 1 2 3 |
| 4 3 -1 |
| 4 7 9 |
S = 2 + 3 + (-1) = 4- Principe : pour chaque ligne
i, on additionne les éléments dont l’indice de colonnejvérifiej > i. - Implémentation en Java :
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; A = new int[M][N]; 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); clavier.close(); } } - Implémentation en C :
#include <stdio.h> #define LIGNES 3 #define COLS 3 int main() { int A[LIGNES][COLS]; int i, j, somme; 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; } - Implémentation en Python :
M = 3 N = 3 A = [[0 for i in range(N)] for j in range(M)] for i in range(M): for j in range(N): A[i][j] = int(input("Saisir l'élément 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)
Calculer la matrice transposée
Écrire un programme qui lit les éléments d’une matrice puis calcule sa matrice transposée.
Si B est la transposée de A, alors :
A est notée At et vérifie : $$ b_{i,j} = a_{j,i} $$Exemple
A = | 1 2 3 |
| 4 3 -1 |
Aᵗ = | 1 4 |
| 2 3 |
| 3 -1 |- Principe : on échange les lignes et les colonnes. L’élément
A[j][i]devientB[i][j]. - Implémentation en Java :
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; A = new int[M][N]; B = new int[N][M]; 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]; } } for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { System.out.print(B[i][j] + " , "); } System.out.println(); } clavier.close(); } } - Implémentation en C :
#include <stdio.h> #define LIGNES 3 #define COLS 3 int main() { int A[LIGNES][COLS]; int B[COLS][LIGNES]; int i, j; 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]); } } for(i = 0; i < COLS; i++) { for(j = 0; j < LIGNES; j++) { B[i][j] = A[j][i]; } } for(i = 0; i < COLS; i++) { for(j = 0; j < LIGNES; j++) { printf("%d ", B[i][j]); } printf("\n"); } return 0; } - Implémentation en Python :
M = 3 N = 2 A = [[0 for i in range(N)] for j in range(M)] B = [[0 for i in range(M)] for j in range(N)] for i in range(M): for j in range(N): A[i][j] = int(input("Saisir l'élément A[{0}][{1}] : ".format(i, j))) for i in range(N): for j in range(M): B[i][j] = A[j][i] for i in range(N): for j in range(M): print(B[i][j], end=", ") print()
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.