Variabile și tipuri de variabile

Acest capitol este cu siguranță cea mai fundamentală parte pe care ar trebui să o stăpânească fiecare utilizator Scilab. Acesta definește operațiunile de creare și manipulare a obiectelor multi-indexate care pot fi matrice (reale, booleeni).

altă parte

Notă 1: Variabilele sunt formate dintr-un șir alfanumeric începând cu o literă (dar și% $? #) De 24 de caractere (dincolo de acestea nu sunt luate în considerare).

Notă 2: Nu este posibilă reatribuirea variabilelor predefinite, precum și a funcțiilor primitive 2.1 .

După ce variabila a fost definită pentru a-și vedea conținutul, trebuie doar să tastați numele și să validați:

Notă 3: Când executați o comandă, apare răspunsul ans, este o variabilă care poate fi realocată.

Nota 4: Dacă există o variabilă și conține de exemplu o matrice, atribuirea acestei variabile unei alte cantități (nu neapărat de același tip) nu generează un mesaj de eroare sau avertisment.

Scilab oferă comenzi utile pentru gestionarea variabilelor pe care le putem menționa

Funcția who returnează lista variabilelor (găsim unele cunoștințe "A", "% i", "% e" și "% eps"), informații despre spațiul de memorie ocupat și rămas în numărul de cuvinte (1 cuvânt = 1 număr de precizie dublă), iar în ultima linie numărul de variabile utilizate și disponibile (total).

Comenzile whos (), whos -name „începutul numelui (variabilelor) variabilei”, whos-type „tip variabilă” returnează informații mai detaliate despre dimensiunea variabilelor.

O funcție foarte utilă pe matrice și, prin urmare, pe variabile, este funcția de dimensiune. Rețineți că Scilab poate face matrice de aproape orice! size returnează numărul de rânduri și coloane.

dimensiune (2). Asa de ? Vezi și: lungimea (A), tipul (A), a = 2 * A .

Vom specifica mai târziu existența variabilelor locale și globale cu utilizările și proprietățile lor respective.

O sintaxă mai potrivită pentru crearea tabelelor A și B și următoarele Cu alte cuvinte

Atenție, această ultimă comandă are două comportamente de știut, primul este în cazul în care răspunsul este tabelul gol. A doua vede aici că ultima valoare este cea care este mai mică decât limita indicată. Această ultimă specificație poate provoca dificultăți, de exemplu, în timp ce

Pentru a depăși această particularitate există comanda linspace care este utilizată în formularul linspace (început, sfârșit, număr de valori). De această dată, tabelul de rezultate conține în mod necesar valorile limită.

A se vedea, de asemenea, spațiul jurnal (început, sfârșit, număr de valori) 2.2 .

Aceste accesări la elementele matricei permit, de asemenea, să afecteze (toate sau) o parte din matrice:

Extracția și atribuirea joacă un rol identic, întreaga ființă indicând elementul (elementele) ales (e).

Am folosit deja funcția de dimensiune, pentru matrice funcția lungime pare mai potrivită, returnând lungimea totală a obiectului (chiar și pentru o matrice).

Cu toate acestea, există un mic truc pentru a ajunge la ultimul element al unui tablou, este utilizarea în expresia $:

Aici avem funcțiile de extracție standard pe care le au majoritatea limbajelor de programare, dar limbaje precum FORTRAN 90 sau Matlab 2.3 oferă posibilitatea de a indica direct un subset al unui tablou: aici punem între paranteze un set de indicii. Acest lucru este valabil atât pentru extracție, cât și pentru atribuire.

Rețineți unele particularități, se oferă posibilitatea de a avea indici redundanți cu două comportamente:

- la extragere - la atribuire: cu la final ultima valoare atribuită (în ordinea indicilor).

  • t (1: 2: $),
  • t ($: - 1: 1)
  • t (:)

Să ne uităm la o altă particularitate. Dacă încercăm să extragem valoarea celui de-al 6-lea element din t, atunci ceea ce era previzibil, pe de altă parte atribuie dinamic o valoare suplimentară lui t. Acum putem vedea că o matrice de dimensiuni suficiente este realocată automat, completată cu 0 .

Notă: utilizarea intensivă a acestei (re) alocări dinamice poate genera timpi prohibitivi de execuție.

De asemenea, este posibil să contractăm scrierea anumitor atribuții, partea dintre paranteze fiind văzută ca un set de indici pentru care atribuim valoarea 2. Conform acestui principiu putem aloca valori în afara dimensiunii matricei ca mai înainte.

Pe de altă parte, dacă variabila nu este predefinită, interpretul returnează o matrice de coloane.

Această formă de scriere poate fi utilizată în timpul extragerii sau cu diferite dimensiuni vectoriale Această scriere contractată poate fi utilizată pentru a schimba variabile

Pe de altă parte, comanda nu șterge variabila, dar o menține goală, pentru ca variabila să dispară trebuie să utilizați comanda clear .

Există câteva funcții specifice:

  • sum (): suma elementelor.
  • prod (): produs al elementelor.
  • mean (): medie a elementelor.
  • max (), min (): valoarea maximă și minimă.
  • cumsum (), cumprod (): returnează o matrice cu primul suma cumulativă a elementelor și al doilea produsul cumulativ.
  • sort (), gsort (), lex_sort (): diferite proceduri de sortare.


Exerciții

  1. Do sum ([]) .
  2. Make prod ([]) .
  3. Pur și simplu scrieți 5! cu funcția prod .
  4. Inițializați vectorul de mărime 10 cu .
  5. Generați un vector aleatoriu de mărimea 10 (rand (1,10) și normalizați-l pentru norma euclidiană ().
  6. Generați tabelul puterilor de la până la;
  7. Scrieți un vector care să conțină valorile, pentru .
  8. Inversați ordinea vectorului anterior.
  9. Generați un vector de numere care merg de la până la pași de .
  10. Extrageți din vectorul anterior mai multe rânduri de .

    zerouri (n, p) returnează matricea nulă a n rânduri și p coloane.

unele (n, p) ca înainte, dar matricea este umplută cu 1.

ochi (n, p) matrice de identitate de mărime n p;

diag (v) sau diag (v, i) Folosind vectorul sau matricea v, construiți matricea cu v ca diagonală principală. argumentul i specificând diagonala în cauză.

rand (n, p) returnează o matrice de numere aleatorii de distribuție uniformă pe .

Pentru a obține o distribuție normală sau altele, consultați ajutorul corespunzător.

matrice (v, n, p) funcție de (re) formatare, răsfoiți cu coloană elementele lui v, care sunt plasate coloană cu coloană în matricea de ieșire

Argumentul -1 poate înlocui unul dintre rândurile sau numărul coloanei, de exemplu coloanarea matricei

Primitivele ones (), zeros () și eye () pot fi folosite trecând o matrice ca argument. Rezultatul are aceleași dimensiuni ca și matricea din argument.

Dar se pot specifica seturi de indici: se extrage intersecția sub-matricei rândurilor 1 și 2 cu coloanele 3 și 4. Această sintaxă este identică cu atribuirea

În ceea ce privește tablourile, putem utiliza redundanța indicilor. Rețineți utilizarea: specificării tuturor indicilor coloanei (sau rândurilor). De asemenea, puteți utiliza $

Este posibil să considerăm o matrice ca un vector, acest vector este compus din coloanele matricei plasate cap la cap:

Notă: Această reprezentare a matricei sub formă de vectori de coloană corespunde modului de stocare a matricelor (coloane cu coloane).

Este posibil să se profite de structura bloc a unei matrice pentru definirea ei

Putem adăuga funcții de extracție precum:

  • diag (A) 2.4: extrageți diagonala matricei A
  • tril (A) și triu (A): respectiv returnează o matrice compusă din partea inferioară (inferioară) și superioară (superioară) a A.