Vectori

 

Cum cream vectori?

Introducem codul
-->v=[1:5]
si apasam tasta ENTER. Tasta ENTER termina orice linie de cod.
Obtinem imediat listarea:
 v  =

    1.    2.    3.    4.    5.

Eplicatii

Am folosit urmatoarele elemente de limbaj:

Aceasta linie de comanda s-ar putea enunta astfel:
Creaza un vector linie cu valori intregi de la 1 la 5 si numeste-l v!

Cum aflam lungimea unui vector

Simplu: folosim functia length. In cazul exemplului anterior tastam

length(v)
 ans  =
 
    5.

aflam astfel ca vectorul v are lungimea 5.


Operatorul ; pentru suprimarea listarii mesajelor automate

Daca insa introducem codul:
-->v=[1:5];
si apasam tasta ENTER prompterul --> apare dar nu mai sunt afisate cele doua linii de mai inainte.
Tastam acum v si apoi apasam tasta ENTER. De acum incolo nu vom mai aminti apasarea tastei ENTER.
Obtinem iarasi cele doua linii:
 v  =

    1.    2.    3.    4.    5.

Eplicatii

Noul operator ; are rolul de a suprima listarea mesajelor automate in fereastra principala Scilab (vezi operatorul semicolon). Pe langa cel de aici, el are rolul de a termina o expresie sau de separator de linii la matrici.
In Scilab identificatorii sunt CASE SENSITIVE. Adica caracterele mici si mari sunt tratate deosebit.
Prin urmare variabila V va fi diferita de variabila v. Aici am folosit identificatorul v cu rolul de a preciza numele unei variabile.
Intr-adevar daca tastam V obtinem mesajul
  !--error 4
undefined variable : V  

Operatorul , separator de instructiuni

Daca dorim sa introducem mai multe instructiuni pe aceeasi linie de cod putem folosi operatorii de separate , sau ;.
Spre exemplu putem initializa variabilele a, A, v si V prin codul:
v=1,V=2,a=3,A=4
sau prin
v=1;V=2;a=3;A=4;
In al doilea caz nu obtinem mesajul automat.
Daca vrem sa listam (inspectam) valorile mai multor variabile simultan putem introduce codul
v,V,A,a
Operatorul , mai are rolul de separator de variabile in listele parametrilor functiilor sau de separator de coloane la declarearea matricilor (vezi cuvantul cheie comma).

Cum cream un vector coloana?

Avem la dispozitie doua metode folsind operatorul ; in declararea vectorului precum in exemplul urmator:
a=[1;3;5;7;9]
sau folosind operatorul de transpunere
a=[1:2:9]'
Amandoua codurile produc urmatoarea listare
 a  =

    1.
    3.
    5.
    7.
    9.
Spre deosebire de codul
a=[1:2:9]
care produce listarea
 a  =

    1.    3.    5.    7.    9.
Codul precedent a produs un vector coloana iar cel de-al doilea un vector linie.
Mai observam ca operatorul : a fost folosit de doua ori. In limbaj cotidian codul 1:2:9 se traduce prin:
Genereaza numere incepand cu 1, cu pas de 2, pana la 9!
Operatorul ' are rolul de a genera matricea transpusa. El este operator unar (adica are nevoie de un singur operand) si este posfixat. Adica este pozitionat dupa operand (vezi operatorul quote).

Produsul scalar a doi vectori

Produsul scalar a doi vectori se realizeaza cu operatia de inmultire a doua matrici. Pentru aceasta se foloseste operatorul *. Operatia de inmultire a doua matrici, A*B, impune ca numarul de coloane al primei matrici sa fie egal cu numarul de linii al celei de a doua matrice. Spre exemplu daca matricea A este de dimensiune [m,n], iar matricea B este de dimensiune [n,p], atunci matricea produs A*B are dimeniunea [m,p]. Cazul interesant pentru noi este [1,n]*[n,1]. In acest caz matricea rezultat are de dimensiunea [1,1].

Deoarece Scilab nu face distinctie intre o matrice [1,1] si un element de matrice, rezulta ca produsul scalar doi vectori a si b este fie:

a*b', daca a si b sunt vectori de tip linie, fie
a'*b, daca a si b sunt vectori de tip coloana.

Intr-adevar, fie codul:

a=[1:3],b=[3:-1:1],a*b'
Acesta produce listarea:
 a  =

    1.    2.    3.
 b  =

    3.    2.    1.
 ans  =

    10.
Iar codul
c=[0.5:0.5:1.5],d=[4;1;2],d'*c'
produce listarea:
 c  =

    0.5    1.    1.5
 d  =

    4.
    1.
    2.
 ans  =

    6





Vezi cuvintele cheie clear who global comma colon semicolon quote

Cornel Mironel Niculae @fizica.unibuc.ro
2008-2009

Last updated: 29 Nov 2008