Question maple

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 13:29

Question maple

par Archytas » 02 Jan 2013, 14:48

Salut, je voudrais savoir si quelqun s'y connait en Maple quelle syntaxe adopter pour enlever un élément d'une liste ! Par exemple si j'ai [3,4,5,8,96,7] comment enlever le 96 (sans savoir spécialement où il est placé dans la liste) !



Joker62
Membre Transcendant
Messages: 5027
Enregistré le: 24 Déc 2006, 19:29

par Joker62 » 02 Jan 2013, 16:35

Hello !

Y'a de quoi faire ici : [url]http://fr.wikiversity.org/wiki/Introduction_à_Maple/Listes,_tableaux,_matrices#Modifier_une_liste.2C_ajouter.2C_supprimer[/url]

Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 13:29

par Archytas » 02 Jan 2013, 20:49

Joker62 a écrit:Hello !

Y'a de quoi faire ici : [url]http://fr.wikiversity.org/wiki/Introduction_à_Maple/Listes,_tableaux,_matrices#Modifier_une_liste.2C_ajouter.2C_supprimer[/url]

Hm oui, l'option NULL est interessante mais si on ne connait que la valeur de l'objet à supprimer ça implique tout de même une procédure assez lourde pour connaitre le rang !
pour reprendre l'exemple de 96 ça ferait
for k from 1 to nops(L) do
if op(k,L)=96 then op(k,L):=NULL:
else L:=L
od:
end;
ou en peut être moins lourd mais ça virerai pas tous les 96 :
k:=1:
while op(k,L)96 do k:=k+1:
od:
op(k,L):=NULL:
end:

si vous connaissez une procédure moins couteuse je suis preneur ! J'avais vu en cours la fonction remove (exemple : remove(isprime,L) enleve les premiers de la liste mais ça marche qu'avec les fonctions booléennes en gros remove(96,L) ça marcherait pas :/ y a moyen de l'adapter en booléenne vous pensez ?) !
Merci !

Zapotek
Membre Naturel
Messages: 32
Enregistré le: 30 Déc 2012, 18:06

par Zapotek » 02 Jan 2013, 20:58

Tu t'intéresse à optimiser le programme ou c'est juste par curiosité? Parce que si tu as une méthode qui marche... On ne cherche pas vraiment l'optimisation en prépa...

Si tu veux utiliser remove, crée une fonction is96 :zen:

Vahinerii
Membre Naturel
Messages: 60
Enregistré le: 02 Jan 2013, 19:37

par Vahinerii » 02 Jan 2013, 21:23

Soit tu crées la fonction is96 pour remove soit tu adaptes une fonction de la biblio Mapple : subsop(i1=e1, .., im= em, e) qui remplace l'opérande ik par ek dans e : les tutorials existent et disponibles. :zen:

Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 13:29

par Archytas » 02 Jan 2013, 21:35

Zapotek a écrit:Tu t'intéresse à optimiser le programme ou c'est juste par curiosité? Parce que si tu as une méthode qui marche... On ne cherche pas vraiment l'optimisation en prépa...

Si tu veux utiliser remove, crée une fonction is96 :zen:

Je ne sais pas si c'est au programme mais quand nos programmes ne sont pas optimisés la prof nous met 0 à la question. Et c'est plus pas curiosité parce qu'on nous a donné un programme à faire qui est d'ordonner une liste, on a eu la méthode de la correction qui est de comparer les termes et si un est plus grand que l'autre on les inverses de position. Mais j'ai pensé à un autre programme(qui en gros prend le maximum d'une liste le met dans une autre et le supprime de la liste source puis réitère l'opération) ce qui donnerait avec remove:
ordre:=proc(L)
local k(,m,i),T,O:
T:=L:
O:=[]:
for k from 1 to nops(L) do
#O:=[op(O),max(T)]:
T:=remove(max(T),T):):od: #première solution (qui serait on le voit pas très couteuse en place)

#m:=max(T):
for i from 1 to nops(T) do
if op(i,T)=m then op(i,T):=NULL:
else T:=T:
od: #deuxième solution
od:
return(O);
end:

Le problème pour is96 c'est que dans ce cas on a autant d'éléments à supprimer qu'il y en a dans la liste ! J'aurais pensé qu'il existait une fonction aussi simple que remove mais qui marcherait pour les fonctions autres que booléennes ! Il me semble qu'il y a aussi subs qui marche mais il faut connaitre le rang ça donnerait subs(L,L[2]=96) mais faut connaitre le rang :/!

Vahinerii
Membre Naturel
Messages: 60
Enregistré le: 02 Jan 2013, 19:37

par Vahinerii » 02 Jan 2013, 21:39

Archytas a écrit: J'aurais pensé qu'il existait une fonction aussi simple que remove mais qui marcherait pour les fonctions autres que booléennes ! Il me semble qu'il y a aussi subs qui marche mais il faut connaitre le rang ça donnerait subs(L,L[2]=96) mais faut connaitre le rang :/!

Oui, cette fonction est bien celle que je t'ai donnée avant et elle a l'avantage d'être en plus optimale ici !

Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 13:29

par Archytas » 02 Jan 2013, 21:39

Vahinerii a écrit:Soit tu crées la fonction is96 pour remove soit tu adaptes une fonction de la biblio Mapple : subsop(i1=e1, .., im= em, e) qui remplace l'opérande ik par ek dans e : les tutorials existent et disponibles. :zen:

ah oui c'est vrai c'est subsop, merci oui justement j'ai utilisé la commande "?list" me semble-t-il et j'ai fouillé dans maple mais justement je n'étais tombé que sur subsop mais il me semblait qu'il fallait connaître le rang :/ !

Vahinerii
Membre Naturel
Messages: 60
Enregistré le: 02 Jan 2013, 19:37

par Vahinerii » 02 Jan 2013, 21:43

Archytas a écrit:ah oui c'est vrai c'est subsop, merci oui justement j'ai utilisé la commande "?list" me semble-t-il et j'ai fouillé dans maple mais justement je n'étais tombé que sur subsop mais il me semblait qu'il fallait connaître le rang :/ !


Et justement, on précise aussi quel élément est à remplacer dans la liste et la position, elle est l'indice.:)

Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 13:29

par Archytas » 02 Jan 2013, 21:48

Vahinerii a écrit:Et justement, on précise aussi quel élément est à remplacer dans la liste et la position, elle est l'indice.:)

Oui c'est justement là le problème, avec max on a pas l'indice seulement l'élément !!!

Vahinerii
Membre Naturel
Messages: 60
Enregistré le: 02 Jan 2013, 19:37

par Vahinerii » 02 Jan 2013, 22:02

Archytas a écrit:Oui c'est justement là le problème, avec max on a pas l'indice seulement l'élément !!!

Ben, c'est pour ça qu'il est judicieux d'apprendre à retrouver les librairies utiles avant d'innover aussi !! ^^

Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 13:29

par Archytas » 02 Jan 2013, 23:16

Vahinerii a écrit:Ben, c'est pour ça qu'il est judicieux d'apprendre à retrouver les librairies utiles avant d'innover aussi !! ^^

Et bien ? Ta commande ne résoud pas le problème !

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 44 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite