π
<-

supprimer une ligne d'une matrice

Pour le TI-Basic sur Nspire

Re: supprimer une ligne d'une matrice

Unread postby alphaméthyste » 07 Nov 2015, 16:12

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
User avatar
alphaméthyste
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 18.8%
 
Posts: 51
Joined: 03 May 2015, 16:11
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: L1 maths

Re: supprimer une ligne d'une matrice

Unread postby Bisam » 07 Nov 2015, 20:56

Je pense qu'on peut faire plus court...
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 !
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: supprimer une ligne d'une matrice

Unread postby NiTROGEN » 07 Nov 2015, 22:48

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
User avatar
NiTROGEN
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 16.8%
 
Posts: 43
Images: 0
Joined: 12 May 2015, 16:19
Location: Wastelands
Gender: Male
Calculator(s):
MyCalcs profile
Class: AGROECOLOGiST

Re: supprimer une ligne d'une matrice

Unread postby Bisam » 08 Nov 2015, 11:30

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.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: supprimer une ligne d'une matrice

Unread postby alphaméthyste » 08 Nov 2015, 19:10

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

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
User avatar
alphaméthyste
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 18.8%
 
Posts: 51
Joined: 03 May 2015, 16:11
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: L1 maths

Re: supprimer une ligne d'une matrice

Unread postby Bisam » 08 Nov 2015, 23:04

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 !)
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
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: supprimer une ligne d'une matrice

Unread postby alphaméthyste » 09 Nov 2015, 00:52

merci Bisam

c'est mieux que ma rectification (dix lignes de moins c'est pas négligeable )
User avatar
alphaméthyste
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 18.8%
 
Posts: 51
Joined: 03 May 2015, 16:11
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: L1 maths

Re: supprimer une ligne d'une matrice

Unread postby NiTROGEN » 23 Feb 2016, 22:54

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.
User avatar
NiTROGEN
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 16.8%
 
Posts: 43
Images: 0
Joined: 12 May 2015, 16:19
Location: Wastelands
Gender: Male
Calculator(s):
MyCalcs profile
Class: AGROECOLOGiST

Re: supprimer une ligne d'une matrice

Unread postby Bisam » 24 Feb 2016, 11:35

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 !
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 :p
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Previous

Return to Nspire-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
860 utilisateurs:
>845 invités
>8 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)