Base de l'orthogonal ?

Bonsoir tout le monde.

Question bête : je dispose de $k<n$ vecteurs libres dans $\R^n$ : $v_1$, $v_2$, $\dots$, $v_k$.

Quel est le procédé algorithmique le plus simple et le plus rapide pour compléter cette famille en $v_1$, $v_2$, $\dots$, $v_n$ tels que $v_{k+1}$, $\dots$, $v_n$ engendre l'othogonal de $Vect(v_1, v_2, \dots, v_k)$ ?

Les vecteurs $v_i$ n'ont nul besoin d'être orthogonaux entre eux, je veux juste que les espaces engendrés respectivement par les $k$ premiers (donnés) et les $n-k$ derniers (à déterminer) soient orthogonaux (je tiens surtout à pouvoir faire le calcul avec une méthode sobre et efficace).


Merci d'avance !!

Réponses

  • procédé d'orthonormalisation de Schmidt ?
  • Yo LBR,

    Tu cherches une base du noyau d'une matrice $k \times n$, il doit y avoir une méthode standard qui fait ça non ? (passage de $n-k$ inconnues en paramètre et pivot de Gauss ? j'en sais rien en fait).
  • Schmidt permet d'othonormaliser une base qu'on a déjà.

    Je n'ai qu'une famille libre : je veux la compléter en une base, mais peu m'importe que la base obtenue soit orthogonale (en fait, les vecteurs de ma famille libre ne sont déjà pas orthogonaux), ce qui m'intéresse c'est que le supplémentaire que j'obtiens de l'espace engendré par mes premiers vecteurs soit son othogonal.
  • Juste au dessus, je répondais à Jinx.

    Merci beaucoup pour ta réponse egoroff.
    egoroff a écrit:
    passage de n-k inconnues en paramètre et pivot de Gauss ?

    J'ai pensé à ça, mais il n'y a pas plus efficace (et plus facile à implémenter) ? :S
  • Alors, pour rester dans des banalités, je sais faire si la matrice des vi' à laquelle fait allusion egoroff commence par l'identité. On peut peut-être "se ramener à ce cas" (NB : je n'ai aucune idée de ce que j'entends par là) ?
  • Bah ça j'en sais rien :)-D Enfin en Matlab/Scilab vu que la résolution du système se fait en 1/2-lignes de commande ça doit être abordable ?

    L'idée de Jinx est certainement moins économique niveau calcul mais si arrives à compléter ta base tu peux sûrement faire un Gram-Schmidt partiel sur les derniers vecteurs, c'est peut-être plus simple à écrire.

    Sinon le mieux est d'attendre un avis plus éclairé (par exemple si le grand Shadockissime passe par là).
  • Ah oui pas bête. Et en Gram-Schmidtant tes k vecteurs tu obtiens un système triangulaire non ?
  • Plutôt que de faire Gram-Schmidt qui est numériquement instable, il vaut mieux utiliser la méthode QR. Maintenant sobre et efficace, ça dépend de l'ordre de grandeur de $n$ : $10$, $100$, $1000$, $10^6$ ?
  • Au risque de dire une bêtise, il me semble que la première
    idée d'egoroff (pivot de Gauss) est de loin ce qui sera
    le moins gourmand en calculs ( foi d'informaticien ... ;-) ).

    a+
    eric
  • Comme l'a fait remarqué egoroff, cela revient au calcul d'une base du noyau d'une matrice A ayant k lignes et n colonnes.
    Pour cela, adjoindre la matrice I_k à A et appliquer le pivot de Gauss sur les lignes.
    On trouvera à l'emplacement de la matrice I_k, en face des vecteurs lignes devenus nuls dans la matrice A, une base du noyau de A. (Tandis que les vecteurs restant non nuls dans A forment une base de l'image de A).
  • Oui, en croisant les doigts pour que les pivots ne soient pas trop petits et le conditionnement pas trop dégoûtant, quand même...
Connectez-vous ou Inscrivez-vous pour répondre.