Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

problème avec convert

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
manonlilou



Inscrit le: 30 Mai 2012
Messages: 3

MessagePosté le: 30 Mai 2012 16:19    Sujet du message: problème avec convert Répondre en citant

Bonjour tout le monde Very Happy

Je suis toute nouvelle en maple mais je rencontre déjà un souci Confused
En effet, j'ai du programmer une fonction qui regarde si une famille de vecteurs est libre. Si elle est libre je dois la compléter en une base de R^n et si elle n'est pas libre je dois renvoyer 'erreur' . Voici ce que j'ai fais, et le message d'erreur que maple renvoie :


> complete:=proc(L)
> local S;
> convert(vector(L),matrix);
> S:=nrow(L);
> if nrow(L)<> ncol(L)then delrows(L,S..S);
> if det(L)= 0 then print(erreur);
> else base(L);
> fi:
> fi:
> end:
>
> base:=proc(L)
> local V,U,X;
> X:= transpose(L);
> V:=kernel(X);
> U:= L,V;
> end:
>
> v1:=randvector(3);

v1 := [-54, 10, -77]

> v2:=randvector(3);

v2 := [-63, -90, 61]

> v3:=randvector(3);

v3 := [-3, -82, 16]

> L:= [v1,v2,v1+v2];

L := [v1, v2, v1 + v2]

> complete(L);
Error, (in delrows) First argument must be a matrix

Je ne comprend pas pourquoi il me dit cela puisque j'utilise un convert qui devrait justement transformer ma famille de vecteurs en matrice Shocked

Je vous remercie par avance pour votre aide Smile
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 30 Mai 2012 17:57    Sujet du message: Répondre en citant

Bonjour,
L était une liste de vecteurs, donc S:=convert(L,matrix); permet la conversion en matrice.
J'utilise ensuite la fonction rank qui calcule le rang de S: si ce rang n'est pas égal au nb de vecteurs de L, la famille est liée: donc le résultat est erreur sinon on utilise base.

Revoyez votre procédure base car la méthode employée en adjoignant un vecteur du noyau ne donnera pas forcément une base de R^n, car certains des premiers vecteurs peuvent être dans le noyau.

Code:

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


A plus tard pour une autre question.


Dernière édition par ALS le 02 Juin 2012 9:54; édité 2 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
manonlilou



Inscrit le: 30 Mai 2012
Messages: 3

MessagePosté le: 30 Mai 2012 18:10    Sujet du message: Répondre en citant

Ha merci beaucoup, j'avais vu qu'on pouvait utiliser nops mais seulement je n'avais pas compris ce que cette fonction faisait.

Lorsque je rentre ce que vous m'avez indiqué maple me dit :
Error, (in convert/matrix) expecting array or list , pourtant L est bien une liste!
Je suis désolée, à vrai dire j'ai encore beaucoup de mal avec maple Sad
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
manonlilou



Inscrit le: 30 Mai 2012
Messages: 3

MessagePosté le: 30 Mai 2012 18:27    Sujet du message: Répondre en citant

Je viens de voir la fonction nullspace() .
Peut-elle être utile pour résoudre mon problème?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 30 Mai 2012 18:41    Sujet du message: Répondre en citant

Oui, il semble avoir qqs problèmes, je travaille avec une version récente, Maple 15.

J'ai écrit la procédure base: je complète la famille libre avec des vecteurs nuls de façon à obtenir une matrice M de déterminant 0.
Ensuite je remplace les vecteurs nuls ainsi ajoutés par des vecteurs aléatoires jusqu'à obtenir det(M) non nul, ce qui fait sortir de la boucle while.
L'opérateur $ permet de répéter plusieurs fois: exemple x$3 équivaut à x,x,x
seq crée une séquence (ici de vecteurs aléatoires).

Code:

> with(linalg):
 
> complete:=proc(L)
> local S:
> S:=convert(L,matrix);
> if rank(S)<>nops(L) then
>   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),[0$n]$k]);
> while det(M)=0 do
>   M:=matrix(n,n,[op(L),seq(convert(randvector(n),list),i=1..k)]):
> od:
> convert(M,listlist)
> end:
 
> v1:=convert(randvector(3),list); v2:=convert(randvector(3),list);  v3:=convert(randvector(3),list);
> L:= [v1,v2,v1+v2];
> complete(L);
 

                         v1 := [-52, -46, 9]


                          v2 := [72, 28, 20]


                         v3 := [-77, -86, 29]


          L := [[-52, -46, 9], [72, 28, 20], [20, -18, 29]]


                                erreur

> L:=[v1,v2]: complete(L);   

                          [-52    -46     9]
                          [                ]
                          [ 72     28    20]
                          [                ]
                          [ 20    -64    43]


             [[-52, -46, 9], [72, 28, 20], [20, -64, 43]]

> L:=[v1]: complete(L);

                          [-52    -46     9]
                          [                ]
                          [ 86     67    28]
                          [                ]
                          [-70    -84    32]


            [[-52, -46, 9], [86, 67, 28], [-70, -84, 32]]




Voilà, ça fonctionne.
Bonne soirée.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.