Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Maple

Posté par
Fumille
08-07-14 à 20:05

Bonjour

Je n'ai quasiment aucune connaissance en programmation avec Maple.
Je souhaiterais savoir qu'est-ce que je dois écrire pour récupérer les nombres inscrits dans une colonne d'une matrice et les mettre dans une liste.

Exemple:

A:= Matrix(4,4,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);

Je souhaite récupérer les numéros de la colonne 4 et les mettre dans une liste c'est-à-dire obtenir

L:=[4,8,12,16];

(en réalité ma matrice A aura été construite grâce à un programme)



J'ai essayé de magouiller avec mon peu de connaissances pendant plus de 2h en vain.
J'espère que vous pourrez m'aider.
Merci bien.

Posté par
Narhm
re : Maple 09-07-14 à 11:45

Bonjour,

Tout simplement avec une boucle :

Citation :
Code Maple:
>A:= Matrix(4,4,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);
>L:=[]:
>for i from 1 to 4 do L:=[op(L),A[i,4]] end do:
>L;


Si par contre, tu ne veux pas avoir de doublon dans ta liste (imaginons que ta colonne ne soit composée que du même scalaire), au lieu d'utiliser [] utilise {}.

Posté par
Fumille
re : Maple 09-07-14 à 11:50

Bonjour

Merci pour votre réponse je vais tester ça desuite

Posté par
Fumille
re : Maple 09-07-14 à 11:58

Alors ça marche dans le sens où j'obtiens une liste correspondant bien à la bonne colonne mais au lieu de m'écrire les nombres elle m'écrit le nom du coefficient c'est-à-dire A1,4, A,2,4 etc.

De plus j'aurais voulu ajouter une condition dans la création de ma liste, par exemple ne mettre dans la liste que les nombres de la colonne inférieur ou égal à 10.

Posté par
Narhm
re : Maple 09-07-14 à 12:42

Tu as du mal saisir ta matrice.
Ensuite, une fois que tu sais comment récupérer une colonne, tu dois savoir adapter ton programme pour récupérer que certaine colonne...

Voici une copie de ma feuille de calcul:
Maple
J'ai écrit deux procédures :
¤ la première, nommée Liste, permet de récupérer toutes les colonnes de la matrice A entre la i-ième colonne et la j-ième colonne à l'aide de Liste(i,j);
¤ la deuxième, nommée Liste2, permet de récupérer toutes les colonnes de la matrice A contenues dans une liste. Par exemple, si tu veux obtenir uniquement les colonnes 1 et 4, il faut saisir Liste2([1,4]); alors que si tu veux les colonnes 1, 2 et 4, il faut saisir Liste2([1,2,4]); etc...

Posté par
Fumille
re : Maple 09-07-14 à 13:11

Je crois que je me suis mal exprimée. Je voulais dire que quand je crée ma liste à partir de la colonne 4, au lieu de mettre tous les nombres de cette colonne, je ne veux mettre que ceux qui sont des nombres inférieurs ou égal à 10. Dans mon exemple cela me donnerait la liste [4,8] et non plus [4,8,12,16].

Je ne pense pas avoir mal saisi ma matrice je l'ai écrite comme toi et elle s'affiche comme toi...

Posté par
Fumille
re : Maple 09-07-14 à 13:19

Excusez-moi. En fait non j'ai dit encore n'importe quoi...J'ai beaucoup de choses en tête et je m'embrouille dans ce que je veux...

Mon idée est concrètement.
J'ai ma matrice A. Je veux écrire une liste dans laquelle sont écrit tous les numéros de ligne où le coefficient ligne i colonne 4 est inférieur ou égal à 10.

Posté par
Narhm
re : Maple 09-07-14 à 13:34

Ok...
Bon alors, dans ce cas si je reprends mon premier message et que je modifie le code (je te laisse le faire pour les autres si ça t'intéresse):

Citation :
Code Maple:
>A:= Matrix(4,4,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);
>L:=[]:
>for i from 1 to 4 do:
    L:=[op(L),A[i,4]]
  end do:
>L:=select(x->x<10,L);


La fonction "select" permet de garder que ce qui t'intéresse dans ta liste.

Posté par
Fumille
re : Maple 09-07-14 à 14:18

J'ai essayé ce que vous m'avez dit (cela me servira sûrement vu toutes les petites magouilles dont j'ai besoin) mais ça me met "Error, selecting function must return true or false"

Posté par
Narhm
re : Maple 09-07-14 à 14:22

Le code marche tel quel, à copier directement dans Maple (quelle est ta version ?).
Vérifie la syntaxe et test si la fonction "select" fonctionne bien sur un exemple sinon.

Posté par
Fumille
re : Maple 09-07-14 à 14:53

J'ai une version hackée de Maple 18.

Alors en fait le problème venait de la phrase L:=[op(L),A[i,4]] qui était écrite en gras dieu sait pourquoi...Donc là c'est bon ça marche et j'obtiens bien L:=[4,8]

Ensuite pour mon autre truc, où je voulais récupérer la ligne et non pas le nombre lui-même j'ai remplacé     L:=[op(L),A[i,4]]
par
if A[i, 4] < 10 then L := [op(L), i] end if
et ça marche aussi

Je pense que c'est bon je n'ai plus rien à demander pour l'instant^^

Merci beaucoup Narhm !

Posté par
Narhm
re : Maple 09-07-14 à 15:13

Citation :
if A[i, 4] < 10 then L := [op(L), i] end if

tu veux dire que tu as remplacé par :
Citation :
if A[i, 4] < 10 then L := [op(L), A[i,4]] end if

sinon tu ajoutes n'importe quoi dans ta liste.

Bonne continuation : )



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !