π
<-

Variable : liste et matrice

Pour le TI-Basic sur Nspire

Variable : liste et matrice

Unread postby Skipper64 » 31 Oct 2013, 17:15

Bonjour à tous, je viens d'avoir ma TI Nspire CX CAS, et je gratte par ci par là des infos à propos de la programmation mais je débute donc je bloque régulièrement en tentant de faire des programmes.
J'ai crée un programme qui déplace les torseurs d'un point a un autre. Or j'ai été obligé de rentrer la résultante et le moment séparément car je ne sais pas comment récupérer des coefficients à l'intérieur d'une matrice. De meme, à la fin le torseur déplacé s'affiche en deux fois ; d'abord la résultante et après le moment. J'aimerais l'afficher sous forme de matrice mais pour ce faire il faudrait récupérer les termes d'une variable liste, afin de les avoir eux mêmes comme variables et ensuite les afficher dans la matrice.
Par exemple on a : a:={x,y,z} et je voudrais afficher une matrice colonne [x,y,z] donc il faudrait que je réussisse à définir les variables x,y,z comme étant respectivement le premier, deuxième, et troisième terme de a.

Pour résumer mes interrogations sont :
- Comment extraire les coeffs d'une matrice a afin de les utiliser indépendamment comme variables ?
-Comment extraire les termes d'une liste pour les utiliser indépendamment comme variable ?
-Si il y a un moyen de dire que les termes d'une liste a={x,y,z} correspondent aux coefficients de la première colonne d'une matrice b tel que la première

Voici mon programme :

Code: Select all
Define LibPub pfd()=
Prgm
:Request "Ta initial : {Ra}=",a
:Request "Ta initial : {Ma}=",b
:Request "vecteur oa",c
:d:=b+crossP(c,a)
:disp "Τo (deplace) ="
:disp a,d
:EndPrgm


J'ai encore une dernière question, est-il possible que le programme une fois crée soit accessible depuis scratchpad via la library ? Histoire de s'en servir sans ouvrir le classeur et perdre plus de temps que de le calculer à la main ^^
Merci d'avance a tous !
User avatar
Skipper64
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 28%
 
Posts: 11
Joined: 31 Oct 2013, 16:44
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS-Si spé maths

Re: Variable : liste et matrice

Unread postby Bisam » 31 Oct 2013, 17:21

  • Pour utiliser les termes d'une matrice a, tu écris a[i,j].
  • Pour utiliser les termes d'une liste l, tu écris l[i]
  • Pour transformer une liste a en matrice ligne, tu écris {a}.
  • Pour transformer une liste a en matrice ligne, tu écris {a}T où T désigne le petit "T" disponible dans le catalogue et figurant la transposition. Tu peux aussi utiliser la fonction "lis>mat" (dans le catalogue également) en écrivant : list>mat(a,1)
  • Pour transformer une matrice en liste, tu utilises la fonction "mat>list" du catalogue en écrivant : mat>list(m)
  • Pour concaténer deux matrices, ou deux listes, tu utilises la fonction "augment".
    Avec deux matrices m1 et m2, tu peux les concaténer horizontalement en tapant augment(m1,m2) ou bien verticalement en tapant augment(m1;m2) (avec un ; à la place de la , ).

Enfin, il suffit de rafraîchir les bibliothèques en appuyant sur [Doc] puis 6 pour pouvoir utiliser un programme défini en "Libpub", à condition que le programme soit validé (Ctrl+b) et que le classeur dans lequel est ce programme soit enregistré (Ctrl+s).
Il apparaîtra alors directement dans le catalogue à l'onglet 6.
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: Variable : liste et matrice

Unread postby Skipper64 » 01 Nov 2013, 01:06

Merci Beaucoup grâce a ces informations j'ai pu améliorer mon programme ; voici le code
(pour ceux intéréssés : les arguments à rentrer sont
- a (torseur initial, sous forme matrice 3x2)
-c (vecteur du point d'arrivé au point initial, sous forme matrice 3x1)
Code: Select all
Define LibPub pfd3(a,c)=
Prgm
:Disp "torseur Ta=",a
:Disp "vecteur (oa)",c
:r:=[[a[1,1]][a[2,1]][a[3,1]]]
:m:=[[a[1,2]][a[2,2]][a[3,2]]]
:d:=m+crossP(c,r)
:augment(r,d)→b
:disp "Τo (deplace)="
:disp b
:EndPrgm


•Cependant, j'ai préféré ici mettre le torseur a et le vecteur c en argument car c'est trop long pour les saisir après un request ([[1,4][2,5][3,6]] par exemple) et on pourrait facilement commettre une erreur en recopiant. Connaissez vous un moyen pour utiliser le modèle matrice après une E/S du genre Request ?

•Par ailleurs, pour la suite, il faudrait que la calculette résolve une équation du genre :
∑(bi,i,1,n)=0 où chaque bi est une matrice 3x2 qui peut contenir des inconnues et 0 la matrice nulle (3x2)
j'ai essayé avec solve()

Le calcul est : solve([[ax,bx][0,0][0,0]]+[[2,3][0,0][0,0]]=[[0,0][0,0][0,0]],ax,bx) normalement Ax=-2 et Bx=-3

mais le message suivant s'affiche " Erreur de dimension : Un index de liste ou de matrice n’est pas valide. Par exemple, si l1={1, 2, 3, 4}, alors l1[5] n’existe pas, car l1 ne contient que quatre éléments."
Dès lors, est il possible de résoudre une équation de ce type ?

•Enfin même si j'enregistre, le programme n'est visible dans la librairie que depuis le classeur dans lequel je l'ai crée (à 6-library/activité courante), elle n'apparait pas dans les autres classeurs ni dans scratchpad. Pourtant j'ai suivi tout tes conseils.

Je suis enchanté de la rapidité et de la pertinence des réponses ! Merci encore !
User avatar
Skipper64
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 28%
 
Posts: 11
Joined: 31 Oct 2013, 16:44
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS-Si spé maths

Re: Variable : liste et matrice

Unread postby Bisam » 01 Nov 2013, 01:27

Tu peux considérablement simplifier ton programme en sachant que l'on peut récupérer la ligne i d'une matrice a par a[i].
Ainsi, tu peux écrire :
Code: Select all
Define LibPub pfd3(a,c)=
Prgm
:Disp "torseur Ta=",a
:Disp "vecteur (oa)",c
:a:=aT
:r=a[1]T
:disp "Τo (deplace)=",augment(r,a[2]T+crossp(c,r))
:EndPrgm

et puisque tu as fait le choix judicieux de mettre a et c en arguments, va jusqu'au bout et transforme ton programme en fonction... afin par exemple de pouvoir composer 2 déplacements :
Code: Select all
Define LibPub pfd3(a,c)=
Func
:local r
:a:=aT
:r=a[1]T
:return augment(r,a[2]T+crossp(c,r))
:EndFunc


Tu ne pourras pas utiliser le modèle Matrice ailleurs que dans l'écran de calcul, ou dans l'éditeur mathématique. En particulier, c'est impossible dans un programme.

Pour ce qui est de ta résolution de système, ce que tu as écrit devrait marcher... tu as dû faire une faute de frappe. Mais écris-nous ce qui a créé ton erreur précisément.

Enfin, oui, c'est normal, ton programme apparaît dans les bibliothèques en développant le nom du classeur... mais si tu appuies sur [Enter] sur le nom de ton programme, tu peux l'utiliser dans n'importe quel autre classeur ou même dans le scratchpad.
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: Variable : liste et matrice

Unread postby Skipper64 » 01 Nov 2013, 18:05

Ca fonctionne merci ! désormais j'arrive à utiliser la fonction n'importe où c'est très pratique !

  • Pour le solve(), il ne marche décidément pas ... Pour :
    Code: Select all
    solve([[0,0][0,0][−500,0]]+[[0,0][0,−0.6*za][za,0]]+[[0,0.52*zb][0,0.3*zb][zb,0]]+[[0,−0.52*zc][0,0.3*zc][zc,0]]=[[0,0][0,0][0,0]],{za,zb,zc})

    ça dit
    TI-Nspire wrote:"Erreur de dimension :
    Un index de liste ou de matrice n’est pas valide. Par exemple, si l1={1, 2, 3, 4}, alors l1[5] n’existe pas, car l1 ne contient que quatre éléments."

  • Ensuite, j'ai voulu étendre le programme pour qu'il calcule plusieurs torseurs déplacés, puis qu'il applique le Principe fondamental de la dynamique et qu'il résolve l'équation ∑(bi,i,1,n)=0 où chaque bi est une matrice 3x2 (tous les torseurs déplacés)
    Le problème c'est que premièrement ça me dit "erreur de dimension" dans l'application calcul donc ça me dira la même chose dans le programme.
    Et deuxièmement je voulais profiter des arguments et donc du modèle matrice pour entrer tous les couples Torseurs initiaux/vecteurs déplacement associés directement dans les arguments. Pb : leur nombre étant indéterminé, j'ai voulu les mettre dans une liste l puis les récupérer avec ai:=l[i] et ci:=l[i+1] en utilisant un For i,1,2n-1,2. Voici le début du code:
    -n est le nombre de torseurs à déplacer, donc le nombre de couples torseur/vecteur déplacement.
    -l est la liste du type {a1,c1,a2,c2,...an,cn}
    Code: Select all
    Define LibPub pfd5(n,l)=
    Prgm
    :For i,1,2n-1,2
    :  a:=l[i]
    :  c:=l[i+1]
    :    r:=(aT[1])T
    :    Disp "⇒ Torseur Τo",i,"=",augment(r,(aT[2])T+crossP(c,r))
    :EndFor

    Mais pour tester, j'écris
    Code: Select all
    pfd5(1,{[[0,0][0,0][-5000,0]],[[-0.2][1.5][-2]]}
    et le message apparait "Liste ou matrice invalide."

    Suis-je obligé de rentrer les matrices après, avec un for i,2n-1 suivi d'un "Request ,ai" ou il y a un moyen d'entrer un nombre indéterminé de matrices comme argument ?

Merci pour tout :)
User avatar
Skipper64
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 28%
 
Posts: 11
Joined: 31 Oct 2013, 16:44
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS-Si spé maths

Re: Variable : liste et matrice

Unread postby Levak » 01 Nov 2013, 18:40

Déplacé dans "Programmation TI-Basic".
Pourquoi avais-tu pensé que c'était du Lua ?
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Variable : liste et matrice

Unread postby Skipper64 » 01 Nov 2013, 19:28

J'ai cru que puisque mon OS était 3.02 c'était du Lua ^^
Mais j'y connais rien c'est pour ça ^^
User avatar
Skipper64
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 28%
 
Posts: 11
Joined: 31 Oct 2013, 16:44
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS-Si spé maths

Re: Variable : liste et matrice

Unread postby Levak » 01 Nov 2013, 19:44

Skipper64 wrote:J'ai cru que puisque mon OS était 3.02 c'était du Lua ^^
Mais j'y connais rien c'est pour ça ^^

L'OS 3.0 a introduit le Lua, mais celui-ci n'est pas programmable directement sur la calculatrice.
Regarde vite fait ce que peut faire le Lua comparé au TI-Basic et tu comprendras la différence.
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Variable : liste et matrice

Unread postby Bisam » 02 Nov 2013, 10:09

Tu ne peux pas faire une liste de matrices... la calculatrice ne voudra pas.
Pour elle, une matrice est déjà une liste de listes... mais au-delà, ça ne lui plaît pas !
Donc, tu ne pourras pas t'en sortir ainsi.

Quant à la résolution du système matriciel, cela ne marche que lorsque ce sont des listes, des matrices lignes ou des matrices colonnes apparemment.
Donc, il va falloir utiliser un détour.
Par exemple, cela fonctionne si tu écris :
Code: Select all
solve(mat>list([[0,0][0,0][−500,0]]+[[0,0][0,−0.6*za][za,0]]+[[0,0.52*zb][0,0.3*zb][zb,0]]+[[0,−0.52*zc][0,0.3*zc][zc,0]])=mat>list([[0,0][0,0][0,0]]),{za,zb,zc})

On a simplement transformé les matrices en listes...
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: Variable : liste et matrice

Unread postby Skipper64 » 05 Nov 2013, 19:18

Merci beaucoup pour tous ces conseils et informations ! :D
Si la calculatrice n'accepte pas une liste de matrice alors tant pis je vais créer le programme avec des "request" pour les autres torseurs. Ou alors rajouter au programme une ligne pour stocker la matrice, ensuite lancer le programme autant de fois que nécessaire et entrer à la main solve(a+b+..=0,{a,b,..})
J'informerais de l'avancement prochainement à bientôt !
User avatar
Skipper64
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 28%
 
Posts: 11
Joined: 31 Oct 2013, 16:44
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS-Si spé maths


Return to Nspire-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 1 guest

-
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.
826 utilisateurs:
>758 invités
>60 membres
>8 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)