merci Bisam
le truc qui tue à 22 lignes contre mon truc de chez les shadocks
...je suis trop bordelique comme mec en fait...
à plus camarade chef! et encore merci
supprimer une ligne d'une matrice
19 posts
• Page 2 of 2 • 1, 2
-
alphaméthyste
Niveau 7: EP (Espèce Protégée: geek)- Posts: 51
- Joined: 03 May 2015, 16:11
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: L1 maths
Re: supprimer une ligne d'une matrice
Je pense qu'on peut faire plus court...
Voilà, 17 lignes, c'est un peu plus convenable... et encore, en Python, ça se ferait en 1 ligne !
- Code: Select all
Define supp(i,j,x)=
Func
Local rep,ligne,n,p,k,l
n:=rowdim(x)
p:=coldim(x)
rep := {}
For k,1,n
If k = i
Cycle
ligne := {}
For l,1,p
If l ≠ j
ligne := augment(ligne, {x[k,l]})
EndFor
rep := when(rep = {}, {ligne}, augment(rep, {ligne}))
EndFor
EndFunc
Voilà, 17 lignes, c'est un peu plus convenable... et encore, en Python, ça se ferait en 1 ligne !
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: supprimer une ligne d'une matrice
- Code: Select all
For l,1,p
If l ≠ j
ligne := augment(ligne, {x[k,l]})
EndFor
C'est mieux à mon sens de faire :
- Code: Select all
For l,1,p
If l = j
Cycle
ligne := augment(ligne, {x[k,l]})
EndFor
-
NiTROGEN
Niveau 8: ER (Espèce Rare: nerd)- Posts: 43
- Images: 0
- Joined: 12 May 2015, 16:19
- Location: Wastelands
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: AGROECOLOGiST
Re: supprimer une ligne d'une matrice
Bah, pourquoi ???
On fait le même nombre de tests dans les deux cas et le même nombre d'affectations également. Autrement dit, on ne gagne rien en vitesse d'exécution.
Par contre, on perd de la place en mémoire, puisqu'il y a une instruction de plus.
On fait le même nombre de tests dans les deux cas et le même nombre d'affectations également. Autrement dit, on ne gagne rien en vitesse d'exécution.
Par contre, on perd de la place en mémoire, puisqu'il y a une instruction de plus.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: supprimer une ligne d'une matrice
Merci Bisam
je refais ton code pour ne pas avoir une matrice d'une seule ligne
ça rallonge un peu mais bon 27 lignes c'est mieux que mon truc de shadok
je refais ton code pour ne pas avoir une matrice d'une seule ligne
ça rallonge un peu mais bon 27 lignes c'est mieux que mon truc de shadok
- Code: Select all
Define supp(i,j,x)=
Func
Local z,z0,y,rep,n,p,k,l,ligne,var
var:=0
n:=rowdim(x)
p:=coldim(x)
rep := {}
For k,1,n
If k = i
Cycle
ligne := {}
For l,1,p
If l ≠ j
ligne := augment(ligne, {x[k,l]})
EndFor
var:=var+1
y:=ligne
z0:=list►mat(y,1)
If var=1 Then
z:=z0
Else
z:=augment(z,z0)
EndIf
EndFor
z=z^T
Return z
EndFunc
-
alphaméthyste
Niveau 7: EP (Espèce Protégée: geek)- Posts: 51
- Joined: 03 May 2015, 16:11
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: L1 maths
Re: supprimer une ligne d'une matrice
Ah oui, pardon. C'est une mauvaise habitude qui vient des TI-68k où il n'y a presque pas de différence entre l'ajout de lignes et l'ajout de colonnes.
Bref, il faut juste un tout petit changement dans mon précédent code pour qu'il fonctionne. (Ca m'apprendra à tout taper sans vérifier !)
Bref, il faut juste un tout petit changement dans mon précédent code pour qu'il fonctionne. (Ca m'apprendra à tout taper sans vérifier !)
- Code: Select all
Define supp(i,j,x)=
Func
Local rep,ligne,n,p,k,l
n:=rowdim(x)
p:=coldim(x)
rep := {}
For k,1,n
If k = i
Cycle
ligne := {}
For l,1,p
If l ≠ j
ligne := augment(ligne, {x[k,l]})
EndFor
rep := when(rep = {}, {ligne}, colaugment(rep, {ligne}))
EndFor
EndFunc
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: supprimer une ligne d'une matrice
merci Bisam
c'est mieux que ma rectification (dix lignes de moins c'est pas négligeable )
c'est mieux que ma rectification (dix lignes de moins c'est pas négligeable )
-
alphaméthyste
Niveau 7: EP (Espèce Protégée: geek)- Posts: 51
- Joined: 03 May 2015, 16:11
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: L1 maths
Re: supprimer une ligne d'une matrice
Bisam wrote:Bah, pourquoi ???
On fait le même nombre de tests dans les deux cas et le même nombre d'affectations également. Autrement dit, on ne gagne rien en vitesse d'exécution.
Par contre, on perd de la place en mémoire, puisqu'il y a une instruction de plus.
Faux sur la vitesse. C'est plus rapide.
Pour le reste tu as entièrement raison.
Btw c'est plus légitime de coder comme celà dans ce cas précis.
-
NiTROGEN
Niveau 8: ER (Espèce Rare: nerd)- Posts: 43
- Images: 0
- Joined: 12 May 2015, 16:19
- Location: Wastelands
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: AGROECOLOGiST
Re: supprimer une ligne d'une matrice
Tiens, ça me fait penser que j'avais dit qu'on pouvait le faire en une ligne en Python... mais en y réfléchissant, on peut aussi le faire en Basic Nspire !
C'est sans doute plus rapide en faisant calculer d'abord les dimensions (au minimum
- Code: Select all
supp(i,j,x) := seq(seq(x[when(k<i,k,k+1),when(l<j,l,l+1)])),l,1,coldim(x)-1),k,1,rowdim(x)-1)
C'est sans doute plus rapide en faisant calculer d'abord les dimensions (au minimum
coldim(x)
)... mais je voulais l'écrire en une ligne -
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
19 posts
• Page 2 of 2 • 1, 2
Who is online
Users browsing this forum: ClaudeBot [spider] and 4 guests