Exercices corrigés sur les matrices
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.
Addition de deux matrices
É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} $$
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;
// initialiser 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 < 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 < M; i++) {
for (j = 0; j < N; j++) {
System.out.print("B[" + i + "][" + j + "] : ");
B[i][j] = clavier.nextInt();
}
}
// Ajouter les deux matrices A et B
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
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();
}
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]);
}
}
/* Addition des deux matrices */
for(i=0; i<LIGNES; i++)
{
for(j=0; j<COLS; j++)
{
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; j<COLS; j++)
{
printf("%d ", C[i][j]);
}
printf("\n");
}
return 0;
}# Taille de la matrice
M = 2
N = 2
# initialiser 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'élément 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'élément B[{0}][{1}] : ".format(i, j)))
# Addition des matrices
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("")Multiplication scalaire d'une matrice
É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 \times a_{i,j}\)
Exemple :
$$ 3 \times \begin{pmatrix} 2 & 3 & 5 \\ 6 & 8 & 9 \end{pmatrix} = \begin{pmatrix} 6 & 9 & 15 \\ 18 & 24 & 27 \end{pmatrix} $$
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;
// initialiser 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 < N; 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
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
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();
}
clavier.close();
}
}#include <stdio.h>
#define LIGNES 3
#define COLS 4
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 */
for(i=0; i<LIGNES; i++)
{
for(j=0; j<COLS; j++)
{
A[i][j] = num * A[i][j];
}
}
/* Afficher le résultat */
printf("\n c.A = \n");
for(i=0; i<LIGNES; i++)
{
for(j=0; j<COLS; j++)
{
printf("%d ", A[i][j]);
}
printf("\n");
}
return 0;
}# Taille de la matrice
M = 2
N = 2
# initialiser 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'élément A[{0}][{1}] : ".format(i, j)))
# Effectuer la multiplication scalaire
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("")Multiplication de deux matrices
É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} \times b_{kj} $$
Exemple :
$$ \begin{pmatrix} 1 & 2 & 0 \\ 4 & 3 & -1 \end{pmatrix} \times \begin{pmatrix} 5 & 1\\ 2 & 3\\ 3 & 4 \end{pmatrix} = \begin{pmatrix} 9 & 7\\ 23 & 9 \end{pmatrix} $$
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;
// initialiser la taille des matrices
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();
}
}
// Multiplication des matrices
for (i = 0; i < M; i++) {
for (j = 0; j < P; j++) {
somme = 0;
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();
}
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 i, 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", M, N);
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", N, P);
for(i=0; i<N; i++)
{
for(j=0; j<P; j++)
{
scanf("%d", &B[i][j]);
}
}
/* Multiplication */
for(i=0; i<M; i++)
{
for(j=0; j<P; j++)
{
somme = 0;
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 des matrices
M = 2
N = 2
P = 2
# initialiser les 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'élément A[{0}][{1}] : ".format(i, j)))
# Saisir les éléments de B
for i in range(N):
for j in range(P):
B[i][j] = int(input("Saisir l'élément B[{0}][{1}] : ".format(i, j)))
# Multiplication
for i in range(M):
for j in range(P):
somme = 0
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(P):
print(C[i][j], end=" , ")
print("")Somme des éléments de la diagonale principale
É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 $$
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;
// initialiser 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);
clavier.close();
}
}#include <stdio.h>
#define LIGNES 3
#define COLS 3
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; i++)
{
somme += A[i][i];
}
printf("\n Somme des éléments diagonaux = %d\n", somme);
return 0;
}# Taille de la matrice
M = 2
N = 2
# initialiser la matrice
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'élément 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)Somme des éléments de chaque ligne et colonne
É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} $$
Somme des lignes :
- Ligne 1 = 6
- Ligne 2 = 6
- Ligne 3 = 20
Somme des colonnes :
- Colonne 1 = 9
- Colonne 2 = 12
- Colonne 3 = 11
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;
// initialiser 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 des éléments de chaque ligne
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);
}
// Somme des éléments de chaque colonne
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);
}
clavier.close();
}
}#include <stdio.h>
#define LIGNES 3
#define COLS 3
int main()
{
int A[LIGNES][COLS];
int i, j, 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 des éléments de chaque ligne */
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);
}
/* Somme des éléments de chaque colonne */
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
# initialiser la matrice
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'élément A[{0}][{1}] : ".format(i, j)))
# Somme des éléments de chaque ligne
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)
# Somme des éléments de chaque colonne
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)- Une matrice est un tableau à deux dimensions.
- L'addition de matrices se fait élément par élément.
- La multiplication scalaire multiplie chaque élément par un scalaire.
- La multiplication de matrices nécessite que le nombre de colonnes de A = nombre de lignes de B.
- La diagonale principale est formée des éléments A[i][i].
- Les boucles imbriquées sont essentielles pour parcourir les matrices.
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.