• Aucun résultat trouvé

Pierre-Louis CAYREL 2008-2009

N/A
N/A
Protected

Academic year: 2021

Partager "Pierre-Louis CAYREL 2008-2009"

Copied!
5
0
0

Texte intégral

(1)

Pierre-Louis CAYREL 2008-2009

Pr´ epa HEC 2 disponible sur www.cayrel.net

Lyc´ ee Lavoisier Feuille n

4

Tableaux et espaces euclidiens

Exercice 1 On peut repr´ esenter un vecteur de l’espace vectoriel R

n

` a l’aide d’un tableau de n r´ eels.

Ecrire un programme qui lit deux vecteurs de R

10

, calcule leur produit scalaire et affiche les deux vecteurs et leur produit scalaire.

Exercice 2 On peut repr´ esenter un vecteur de l’espace vectoriel R

n

` a l’aide d’un tableau de n r´ eels.

Ecrire un programme qui lit deux vecteurs de R

7

, calcule leur somme et affiche cette somme.

Exercice 3 Ecrire un programme qui donne la transpos´ ´ ee d’une matrice saisie par l’utilisateur.

Exercice 4 Ecrire des proc´ ´ edures permettant le calcul du produit scalaire, de la norme eucli- dienne ainsi que de la norme infinie.

Exercice 5 On veut r´ esoudre un syst` eme d’´ equations lin´ eaires : Ax = b

o` u A = (a

i;j

) est une matrice r´ eelle d’ordre n, et x et b sont des vecteurs colonnes. On suppose que A est de rang n.

Ecrire un programme dans le cas d’un syst` ´ eme triangulaire.

Exercice 6 Ecrire une proc´ ´ edure permettant de manipuler une matrice sym´ etrique qui aura

´

et´ e donn´ ee par l’utilisateur. L’utilisateur donnera uniquement la partie triangulaire inf´ erieure

la partie sup´ erieure sera compl´ et´ e ` a la lecture.

(2)

Pierre-Louis CAYREL 2008-2009

Pr´ epa HEC 2 disponible sur www.cayrel.net

Lyc´ ee Lavoisier Feuille n

4

Tableaux et espaces euclidiens

Correction 1

program produit_scalaire ;

{lecture de deux vecteurs de R10, calcul et}

{affichage de leur produit scalaire}

VAR

x, y : ARRAY[1..10] of REAL ; i : INTEGER ;

produit_scalaire : REAL;

BEGIN

WRITELN(’Entrez les coordonn´ ees du premier vecteur : ’);

for i := 1 TO 10 DO READLN(x[i]);

WRITELN(’Entrez les coordonn´ ees du second vecteur : ’);

for i := 1 TO 10 DO READLN(y[i]);

produit_scalaire := 0 ; for i := 1 TO 10 DO

produit_scalaire := produit_scalaire + x[i]*y[i] ; write(’Coordonn´ ees du premier vecteur : ’);

for i := 1 TO 10 DO write(x[i]:6:2);

WRITELN; WRITELN(’Coordonn´ ees du second vecteur : ’);

for i := 1 TO 10 DO write(y[i]:6:2);

WRITELN; WRITELN(’Le produit scalaire est : ’, produit_scalaire:3);

END.

Correction 2

(3)

program somme_vecteurs ;

{lecture de deux vecteurs de R7, calcul et}

{affichage du vecteur somme}

VAR

s, x, y : ARRAY[1..7] of REAL ; i : INTEGER ;

BEGIN

WRITELN(’Entrez les coordonn´ ees du premier vecteur : ’);

for i := 1 TO 7 DO READLN(x[i]);

WRITELN(’Entrez les coordonn´ ees du second vecteur : ’);

for i := 1 TO 7 DO READLN(y[i]);

for i := 1 TO 7 DO

s[i] := x[i] + y[i] ;

write(’Somme des deux vecteurs : ’);

for i := 1 TO 7 DO write(s[i]:3);

END.

Correction 3

Program Transpose;

VAR i,j,a,b : INTEGER;

Tab : ARRAY [1..20 , 1..20] of INTEGER;

Tab2 : ARRAY [1..20 , 1..20] of INTEGER;

BEGIN

WRITELN(’ Colonnes ? ’);

READLN(a);

WRITELN(’ lignes ? ’ );

READLN(b);

FOR i := 1 TO a DO BEGIN

FOR j := 1 TO b DO BEGIN

WRITELN( ’ Donner les valeurs ’, i, ’ ’ ,j, ’ de votre matrice ’);

READ(Tab[i,j]);

END;

END;

FOR i := 1 TO a DO BEGIN

FOR j := 1 TO b DO

Tab2[i,j] := Tab[j,i];

END;

(4)

FOR i := 1 TO a DO BEGIN

WRITELN;

FOR j := 1 TO b DO write(Tab2[i,j]);

END;

END.

Correction 4

FUNCTION ProduitScalaire (n: INTEGER; VAR a, b: VEC): REAL;

VAR

i: INTEGER;

somme: REAL;

BEGIN

somme := 0;

FOR i := 1 TO n DO

somme := somme + a[i] * b[i];

ProduitScalaire := somme END; { de "ProduitScalaire" }

FUNCTION Norme (n: INTEGER; VAR a: VEC): REAL;

BEGIN

norme := sqrt(ProduitScalaire(n, a, a)) END; { de "Norme" }

FUNCTION NormeInfinie (n: INTEGER; VAR a: VEC): REAL;

VAR

i: INTEGER;

r: REAL;

BEGIN r := 0;

FOR i := 1 TO n DO

r := rmax(r, abs(a[i]));

NormeInfinie := r

END; { de "NormeInfinie" } Correction 5

PROCEDURE SystemeTriangulaireSuperieur (n: INTEGER; a: MAT; b: VEC; VAR x: VEC);

VAR

k, j: INTEGER;

s: REAL;

BEGIN

(5)

FOR k := n DOWNTO 1 DO BEGIN s := b[k];

FOR j := k + 1 TO n DO s := s - a[k, j] * x[j];

x[k] := s / a[k, k]

END;

END; { de "SystemeTriangulaireSuperieur" } Correction 6

PROCEDURE EntrerMatriceSymetrique (n: INTEGER; VAR a: MAT; titre: TEXTE);

{Affichage du titre, puis lecture de la partie triangulaire inf´ erieure de la matrice sym´ etrique a d’ordre n. La partie sup´ erieure de a est compl´ et´ ee ` a la lecture.}

VAR

i, j: INTEGER;

BEGIN

WRITELN;

WRITELN(titre);

FOR i := 1 TO n DO BEGIN

write(’Ligne ’, i : 1, ’ : ’);

FOR j := 1 TO i DO BEGIN READ(a[i, j]);

a[j, i] := a[i, j]

END;

END;

READLN

END; { de "EntrerMatriceSymetrique" }

Références

Documents relatifs

Universit´e du Littoral Ann´ee universitaire 2011-2012. Licence 1 `ere ann´ee Math´ematiques

(il faut bien sûr que B possède exactement n vecteurs !)je range les vecteurs de la famille B en colonne dans une matrice M, je calcule t M.M et je trouve I n , ce qui prouve que M

Notons qu’` a ce jour, on ne connaˆıt pas de nombres de Fermat premiers en dehors des

Dans chacun des cas suivants, donner une base orthonormée du sous espace vectoriel F de E, muni du produit scalaire h·, ·i.. Soit E un espace euclidien de

On suppose que les matrices de f et g dans une base orthonorm´ ee sont respectivement sym´ etrique et

Toute famille orthonormale de E peut ˆ etre compl´ et´ ee en une base orthonorm´ ee de E.. Propri´ et´

Montrer que c’est un choix correct et d´ eterminer l’exposant de d´ echiffrement d qu’il va utiliser.. Ce choix est par cons´

[r]