théorème de la base incomplète
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

théorème de la base incomplète



  1. #1
    invitebe3100c3

    théorème de la base incomplète


    ------

    Bonjour,

    Voici mon problème je cherche à programmer en maple le théorème de la base incomplète.
    Soit L une liste de vecteurs, il faut compléter ces vecteurs en une base de R^n. Dans mon programme j'ai tout d'abord vérifié que ma famille était libre puis j'ai utilisé l'aléatoire pour compléter ma famille de vecteurs L, mais il faudrait plutôt pour appliquer le théorème de la base incomplète tiré des vecteurs de la base canonique, mais je ne sais pas comment modifier mon programme pour qu'il fasse cela.
    Voici mon programme:

    complete:=proc(L)
    local S;
    S:=convert(L,matrix);
    if rank (S) <> nops (L) then print (erreur)
    else base (L)
    fi
    end:

    base:= proc(L)
    local k,n,M,S;
    S:=convert(L,matrix);
    n:=nops (L[1]);
    k= n- rank(S);
    M:= matrix(n,n,[op(L),seq(convert(randvector(n ),list),i=1..k)]);
    convert(M,listlist);
    end:

    Je vous remercie par avance pour votre aide.

    -----

  2. #2
    taladris

    Re : théorème de la base incomplète

    Salut,

    je pense que la méthode des vecteurs aléatoires est la meilleure (du point de vue de la rapidité de l'obtention d'une base) que de prendre des vecteurs de la base canonique. Considère par exemple que tu veux compléter une famille dans . Tu dois alors tester les familles de (n-k) vecteurs choisis dans la base canonique. Dans le pire des cas, si est est une famille de vecteurs de la base canonique, il n'y a qu'un seul choix qui fonctionne.

    Au contraire, si tu choisis les vecteurs au hasard, la probabilité que tu obtiennes une base est 1 pour la mesure de Lebesgue (en supposant bien sûr que la famille de départ est libre; sinon cette probabilité est nulle).

    Au passage, c'est un peu bizarre d'avoir deux fonctions. De plus, je trouve les noms mal choisis: c'est la fonction "base" qui complete une famille donnée et la famille "complete" se contente de vérifier que la famille de départ est libre et d'appeler "base". Par ailleurs, mais ce n'est pas le plus important, il existe un package LinearAlgebra qu est recommandé pour les calculs d'algèbre linéaire. Enfin, en toute rigueur, dans ta fonction "base", il faut faire une boucle while puisque il est possible (mais peu probable) que la famille que tu obtiennes soit linéairement dépendante.

    Cordialement

  3. #3
    invitebe3100c3

    Re : théorème de la base incomplète

    Effectivement, mais pour mon exercice il est demandé de la compléter avec des vecteurs de la base canonique. Je suis d'accord pour rajouter un while qui permettrait de faire en sorte que la famille obtenue soit libre mais je ne vois pas comment faire pour le rajouter. En ce qui concerne la base canonique je pense utilisé diag(seq(1,x=1..n)) avec n la dimension des vecteurs de L.
    Mais je t'avoue que je suis un peu perdu en maple, as-tu des idées pour que mon programme fasse ce dont j'ai besoin?
    Je te remercie pour ton aide.

  4. #4
    invitebe3100c3

    Re : théorème de la base incomplète

    Au passage j'utilise le package linalg.

  5. A voir en vidéo sur Futura
  6. #5
    taladris

    Re : théorème de la base incomplète

    Si tu dois compléter une famille libre par des éléments de la base canonique, tu dois utiliser une boucle! Puisqu'il y a peu de chance que la famille que tu obtiennes soit une base au premier essai.

    Une idée pour l'algorithme: en partant de (v1,...,vk) famille de vecteurs de R^n.
    1) tester si la famille (v1,...,vk) est libre. Sinon, message d'erreur. Si oui, passer l'étape 2.
    2) Générer l'ensemble B toutes les sous-familles de la base canonique de R^n à (n-k) éléments. Il y a plusieurs moyens de le faire.
    3) Faire une boucle while pour tester si l'adjonction des éléments de B à (v1,dots,vk) fournit une base de R^n.

    Au passage, il me semble que le package et qu'il est recommandé d'utiliser LinearAlgebra à la place.

    Cordialement

    PS: je ne connais pas la fonction diag. Est-ce que cela renvoie la matrice diagonale dont les éléments diagonaux sont les valeurs de la liste passée en paramètre? Si oui, diag(seq(1,x=1..n)) donne effectivement la matrice dont les vecteurs colonnes sont ceux de la base canonique.
    Dernière modification par taladris ; 07/06/2012 à 18h07.

  7. #6
    invitebe3100c3

    Re : théorème de la base incomplète

    Je te remercie pour ton aide.
    Pour le 1) j'ai réussi à le faire.
    Et effectivement la fonction diag(seq(1,x=1..n)) me renvoie bien la matrice de la base canonique.
    Ce que j'aimerais faire c'est que j'ai appliqué le pivot de gauss à mes vecteurs de L=[v1,..,vk], puis j'aimerais ensuite parcourir cette matrice et vérifier que dans la matrice à la position (ligne 1, colonne 1), (2,2) ,(3,3) etc... que si il y a un zéro à ces positions je vais compléter ma base avec respectivement le vecteur colonne 1, 2, 3 de la base canonique pour ainsi compléter mes vecteurs en une base.
    Pour être plus claire, il s'agit de vérifier dans ma matrice échelonnée que par exemple si en position (1,1) il y a un 0 alors je vais compléter ma famille de vecteurs avec le vecteur 1 de la base canonique et pareil si il y a un 0 en position (2,2) je vais compléter ma famille avec le vecteur 2 de la base canonique. Chaque fois que je trouve un 0 dans ces positions je complète avec le vecteur de la base canonique correspondant. Cette solution est peut être compliqué si tu en as une autre je suis preneuse. Voici mon programme (mais il ne fonctionne pas):/
    complete:=proc(L)
    local S;
    S:=convert(L,matrix);
    if rank (S) <> nops (L) then print (erreur)
    else base (L)
    fi
    end:

    base:=proc(L)
    local k,n,M,S,t,A,j,l;
    S:=gausselim(convert(L,matrix) );
    n:=nops (L[1]);
    k= n- rank(S);
    t:=linalg[coldim](S);
    A:=diag(seq(1,x=1..t));
    for j from 1 to t do
    l:=1;
    if(S(j,l)=0)then
    M:= matrix(n,n,[op(L),seq(convert(col(A,j),lis t),i=1..k)]);
    fi;
    j:=j+1;
    convert(M,listlist);
    od;
    end:

    Je sais qu'il faut faire des boucles mais je n'y arrive pas vraiment, je suis débutante en maple. Il est vrai que je peux regrouper ces fonctions en une mais je me sens plus à l'aise avec ces fonctions séparés.
    En ce qui concerne le package je ne peux pas le changer car l'exercice demandé me contraint d'utiliser ce package(linalg).

  8. #7
    invitebe3100c3

    Re : théorème de la base incomplète

    Ou éventuellement sur mon premier programme qui utilise l'aléatoire peux-tu me dire comment rajouter la boucle while qui vérifie que les vecteurs sont indépendants. Je pense à "while det(M)=0 do " mais je ne vois pas où le placer pour que cela fonctionne. Je voudrais qu'il continue à chercher des vecteurs qui complètent ma famille en une base jusqu'à le déterminant de la matrice complété soit différent de 0.

  9. #8
    invitebe3100c3

    Re : théorème de la base incomplète

    C'est bon j'ai réussi à placer mon while au bonne endroit. Je te remercie tout de même pour ton aide.

  10. #9
    taladris

    Re : théorème de la base incomplète

    Salut,

    je t'invite vivement à maîtriser l'utilisation de while, for, if en Maple car sinon, tu perds une grande partie de l'utilité du logiciel. Et de l'utilité de l'informatique en mathématiques.

    La méthode du pivot de Gauss marche en théorie. Il me semble cependant que tu auras des boucles à écrire pour parcourir ta matrice (pour repérer les lignes de zéros) et que cela sera plus lourd à écrire que le programme que je te propose (pour la rapidité d'exécution aucune idée, je n'ai ni mon domaine de compétence, ni mon intérêt ^^). Et il faut aussi faire attention aux inversions de lignes durant l'application du pivot (pour la famille ( (0,1,0), (0,0,1)), le pivot devrait renvoyer la matrice dont les colonnes sont (1,0,0) et (0,1,0) à cause des inversions de lignes).

    Je pense qu'il existe une fonction dans linalg qui effectue la méthode du pivot de Gauss mais je ne connais pas son nom. Il va falloir que tu cherches dans l'aide. Si cela peut t'aider, la méthode de Gauss s'appelle Gauss-Jordan elimination ou Gassian elimination et la matrice que tu obtiens au final s'appelle row echelon form ou reduced row echelon form.

    Cordialement

  11. #10
    invitebe3100c3

    Re : théorème de la base incomplète

    Ok merci

Discussions similaires

  1. [Génétique] Dominance incomplète
    Par invite19fda4c9 dans le forum Biologie
    Réponses: 4
    Dernier message: 08/09/2016, 14h36
  2. Base de Schauder et théorème de Banach-Mazur
    Par Seirios dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 18/07/2011, 09h32
  3. Question de base en hydrodynamique : Théorème de Bernouilli
    Par invite2b14cd41 dans le forum Physique
    Réponses: 2
    Dernier message: 06/04/2010, 11h14
  4. RAM incomplete !!!!!
    Par invite02e08466 dans le forum Matériel - Hardware
    Réponses: 5
    Dernier message: 01/09/2006, 05h24
  5. combustion incomplète
    Par invitea87cccea dans le forum Chimie
    Réponses: 8
    Dernier message: 26/04/2006, 16h42