Programme Pascal : Valeur Propre et Vecteur propre

Exercice corrige Langage Pascal :

Considérons une matrice carrée A d’ordre N. S'il existe  des réels et des vecteurs V tels que AV=λV, On dit que V et λ sont respectivement Vecteur propre et Valeur Propre de la matrice A il vous est demande de : Écrire un programme pascal qui lit une matrice A, un vecteur V et vérifie si V est un vecteur propre de A.

 

CORRECTION

Soit E un espace vectoriel sur K et f un endomorphisme de E.

Définition : On appelle vecteur propre de f tout vecteur x, non nul de E, vérifiant : f(x)=λx.

(Les vecteurs propres sont donc les vecteurs dont la direction est inchangée par l'application f).

Le scalaire lK est appelé valeur propre associée au vecteur x.

Calcul des valeurs propres et vecteurs propres

  • Si A=(aij) est la matrice de l'application f dans une base B de E et X=(x1x2…xn) la matrice unicolonne du vecteur propre x dans B, alors :

f(x)=λxAX=λX(A−λI)X=0 (I : matrice unité d'ordre n)

  • Le système homogène ainsi obtenu :

  • Les valeurs propres de f (ou de A) sont les scalaires λ tels que :

L'équation de degré n en λ ainsi obtenu est dite Equation caractéristique.

(voir exemple "Calcul de valeurs propres" ci-dessous)

  • Un vecteur propre x de composantes (x,x",...) associé à la valeur propre λ doit vérifier la relation :

(In : matrice identité à l'ordre n)

Propriété : Si la matrice A admet p valeurs propres, distinctes deux à deux, les p vecteurs propres associés sont linéairement indépendants et forment une base de l'espace vectoriel E.

program VecteurPropre;

type

  Matrice = array[1..10, 1..10] of real;

  Vecteur = array[1..10] of real;

var

  A: Matrice;

  V: Vecteur;

  N, i, j: integer;

  λ: real;

procedure lireEntrees(var A: Matrice, var V: Vecteur);

var

  i, j: integer;

begin

  writeln('Entrez la taille de la matrice carrée A :');

  readln(N);

 

  writeln('Entrez les éléments de la matrice A :');

  for i := 1 to N do

    for j := 1 to N do

      readln(A[i, j]);

 

  writeln('Entrez les éléments du vecteur V :');

  for i := 1 to N do

    readln(V[i]);

end;

function estVecteurPropre(A: Matrice; V: Vecteur; N: integer; var λ: real): boolean;

var

  i, j: integer;

  AV: Vecteur;

begin

  for i := 1 to N do

  begin

    AV[i] := 0;

    for j := 1 to N do

      AV[i] := AV[i] + A[i, j] * V[j];

  end;

  {Plus d’exercice corriges sur www.PANDACODEUR.COM }

  λ := 0;

  for i := 1 to N do

    λ := λ + AV[i] * V[i];

 

  estVecteurPropre := true;

  for i := 1 to N do

    if (AV[i] <> λ * V[i]) then

    begin

      estVecteurPropre := false;

      break;

    end;

end;

{WWW.PandaCodeur.com}

function valeurPropre(A: Matrice; N: integer): real;

var

  delta, λ: real;

  B: Matrice;

  i, j: integer;

begin

  // On calcule la matrice B = A - λ * I

  for i := 1 to N do

    for j := 1 to N do

      if (i = j) then

        B[i, j] := A[i, j] - λ

      else

        B[i, j] := A[i, j];

       

  // On calcule le déterminant de B

  delta := determinant(B, N);

 

  // On résout l'équation caractéristique pour trouver la valeur propre

  valeurPropre := λ + sqrt(delta);

end;

begin

  lireEntrees(A, V);

  if (estVecteurPropre(A,V,λ)=True) then

    writeln('Le vecteur V est un vecteur propre de A avec la valeur propre ', valeurPropre(A, N))

  else

    writeln('Le vecteur V n''est pas un vecteur propre de A');

end.

Aucune note. Soyez le premier à attribuer une note !

Commentaires

  • Mouch

    1 Mouch Le 05/02/2023

    Je ne pige rien

Ajouter un commentaire

Anti-spam