l2 informatica

Upload: antonia-mihaela

Post on 10-Oct-2015

85 views

Category:

Documents


0 download

DESCRIPTION

Informatica

TRANSCRIPT

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 1 din 12

    LABORATOR 2: OPERATORI ARITMETICI, RELATIONALI & LOGICI. OPERATII CU MULTIMI. FUNCTII MATEMATICE ELEMENTARE. FUNCTII DE STATISTICA GENERALA

    2.1. OPERATORI ARITMETICI

    Operator Descriere si exemple

    + ADUNAREA Fie operatia A+B unde A si B pot fi doua matrice sau vectori cu elemente reale sau complexe de acelasi tip, sau A este un scalar si B este o matrice sau vector oarecare (se aduna scalarul A la toate elementele matricei sau vectorului B, rezultatul fiind o matrice sau vector de acelasi tip cu B), sau A si B sunt numere reale sau complexe. Exemplu: Daca A = [2 0 0; 0 1 0; 0 1 1] si B = [1+i 2 4; -1 4 2*i; 1 1 1] atunci C = A+B returneaza

    C = [3+1i 2+0i 4+0i; -1+0i 5+0i 0+2i; 1+0i 2+0i 2+0i]

    - SCADEREA Fie operatia A-B unde A si B pot fi doua matrice sau vectori cu elemente reale sau complexe de acelasi tip, sau A este un scalar si B este o matrice sau vector oarecare (se scad din scalarul A toate elementele matricei sau vectorului B, rezultatul fiind o matrice sau vector de acelasi tip cu B), sau A si B sunt numere reale sau complexe. Exemplu: Daca A = 7 si B = [1+i 2 4; -1 4 2*i; 1 1 1] atunci C = A-B returneaza

    C = [6-1i 5-0i 3-0i; 8-0i 3-0i 7-2i; 6-0i 6-0i 6-0i]

    * INMULTIREA Fie operatia A*B unde A si B pot fi doua matrice patratice reale sau complexe de acelasi tip, sau numarul coloanelor lui A este egal cu numarul liniilor lui B, sau A este un scalar si B o matrice, sau A si B sunt numere reale sau complexe. Exemple: Daca A = [2 0 0; 0 1 0; 0 1 1] si B = [1+i 2 4; -1 4 2*i; 1 1 1] atunci C = A*B returneaza

    C = [2+2i 4+0i 8+0i; -1+0i 4+0i 0+2i; 0+0i 5+0i 1+2i] Daca A = 5 si B = [4 0 6; -3 1 0; 0 7 1] atunci C = A*B returneaza

    C = [20 0 30; -15 5 0; 0 35 5]

    / IMPARTIREA (IMPARTIREA LA DREAPTA) mrdivide(A,B) sau A/B (in care este utilizat operatorul forward slash) Realizeaza impartirea la dreapta a matricelor A si B, unde A si B au acelasi numar de coloane.

    Daca B este o matrice patrata de dimensiuni nn si A este un vector linie cu n elemente, atunci

    X = A/B este solutia sistemului de ecuatii XB = A calculata prin eliminare Gauss cu pivotare partiala, iar A/B este echivalent cu X = A*inv(B)

    Daca B este o matrice de dimensiuni nm (cu n m) si A este un vector linie cu m componente, atunci X = A/B este solutia (in sensul celor mai mici patrate) unui sistem de ecuatii subdeterminat

    sau supradeterminat XB = A iar A/B este (in general) echivalent cu X = A*pinv(B) unde pinv(B) este pseudoinversa matricei B Daca A este o matrice si B este un scalar, atunci operatia A/B este echivalenta operatiei de impartire element cu element A./B Daca A si B sunt numere reale sau complexe, A/B este operatia banala de impartire a lui A la B.

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 2 din 12

    Exemplu: Daca A = [1 2 3; 4 5 6; 7 8 9] si B = [1 0 0; -1 5 -2; 7 1 1] atunci X = A/B returneaza

    X = [-18.1428 -0.1428 2.7143; -36.1428 -0.1428 5.7143; -54.1428 -0.1428 8.7143] Daca A = [1 -1 3] si B = [1 0 0; -1 5 -2; 7 1 1] atunci X = A/B sau X = A*inv(B) returneaza

    X = [-12.5714 -0.5714 1.8571] Daca A = [3 6 9; 9 15 12; 6 24 36] si B = 3 atunci C = A/B returneaza matricea

    C = [1 2 3; 3 5 4; 2 8 12]

    \ IMPARTIREA LA STANGA mldivide(A,B) sau A\B (in care este utilizat operatorul back slash) Realizeaza impartirea la stanga a matricelor A si B, unde A si B au acelasi numar de randuri, sau A este scalar (caz in care operatia A\B devine echivalenta operatiei de impartire la stanga element cu element A.\B)

    Daca A este o matrice patratica nn (nesingulara), iar B este un vector coloana cu n elemente,

    atunci X = A\B este solutia sistemului liniar compatibil determinat AX = B (aceeasi solutie poate fi obtinuta ca X = inv(A)*B unde inv(A) este inversa matricei A). Deci daca A este o matrice patrata, atunci A\B este echivalent cu inv(A)*B (doar ca este calculat in alt mod).

    Daca A este o matrice nm (cu n m) si B este un vector coloana cu n componente, atunci X = A\B este solutia (in sensul celor mai mici patrate) unui sistem de ecuatii subdeterminat sau

    supradeterminat AX = B (solutia A\B este in general echivalenta cu solutia X = pinv(A)*B unde pinv(A) este pseudoinversa matricei A).

    Impartirea la dreapta si impartirea la stanga a matricelor A si B sunt legate prin ecuatia: A/B = (B'\A')'

    Exemple: Daca A = [1 1; 4 5] si B=[1; 2] atunci X = A\B sau X = inv(A)*B returneaza solutia X = [3; -2] Daca A = [1 2 3; 4 5 6] si B=[1; -1] atunci X = A\B sau X = pinv(A)*B returneaza solutia

    X = [-1.3889; -0.2222; 0.9444]

    ^ sau **

    RIDICAREA LA PUTERE Fie operatia A^B unde A si B pot fi numere reale sau complexe, sau A este matrice reala sau complexa si B numar natural mai mare decat 1, sau A este un scalar si B o matrice. Pentru calculul lui e^A (operatie specifica functiilor de matrice), se foloseste comanda expm(A) care implementeaza algoritmul expm(A) = 1 + A + A^2/2! + A^3/3! +

    In GNU Octave, ridicarea la putere se poate efectua cu operatorul ^ sau cu ** (rezultand A^B identic cu A**B).

    In MATLAB, ridicarea la putere se efectueaza doar cu operatorul ^. Exemple: Daca A = [1 1; 4 5] si B = 2 atunci C = A^B returneaza matricea C = [5 6; 24 29] Instructiunea D = B^A (adica 2^A) returneaza matricea

    D = [9.2830 9.8460; 39.3842 48.6672]

    .* INMULTIREA DE TIP ELEMENT CU ELEMENT Fie operatia A.*B unde A si B pot fi doua matrice sau vectori cu elemente reale sau complexe de acelasi tip (se inmultesc intre ele elementele de pe aceeasi pozitie, rezultand o matrice sau vector de acelasi tip cu A si B), sau A este un scalar si B o matrice sau vector (operatie echivalenta cu inmultirea obisnuita a unei matrice sau vector cu un scalar). Exemple: Daca A = [2 0 0; 0 1 0; 0 1 1] si B = [1+i 2 4; -1 4 2*i; 1 1 1] atunci C = A.*B returneaza

    C = [2+2i 0+0i 0+0i; -0+0i 4+0i 0+0i; 0+0i 1+0i 1+0i] Daca A = 5 si B = [4 0 6; -3 1 0; 0 7 1] atunci C = A.*B returneaza matricea

    C = [20 0 30; -15 5 0; 0 35 5]

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 3 din 12

    ./ IMPARTIREA DE TIP ELEMENT CU ELEMENT Fie operatia A./B unde A si B pot fi doua matrice sau vectori cu elemente reale sau complexe de acelasi tip (se impart intre ele elementele de pe aceeasi pozitie, rezultand o matrice sau vector de acelasi tip cu A si B), sau A este un scalar si B o matrice sau vector, sau A este o matrice sau vector si B este un scalar (operatie echivalenta cu impartirea obisnuita a unei matrice sau vector cu un scalar). Exemple: Daca A = [2 4; 10 14] si B = [4 -16; -5 7] atunci C = A./B returneaza

    C = [0.5 -0.25; -2 2] Daca F = [3 6 9; 9 15 12; 6 24 36] si G = 3 atunci C = F./G returneaza matricea

    C = [1 2 3; 3 5 4; 2 8 12]

    .^ RIDICAREA LA PUTERE DE TIP ELEMENT CU ELEMENT Fie operatia A.^B unde A si B pot fi numere reale sau complexe, sau A si B sunt doua matrice sau vectori cu elemente reale sau complexe de acelasi tip (operatia se efectueaza pentru elementele de pe aceeasi pozitie, rezultand o matrice sau vector de acelasi tip cu A si B), sau A este o matrice sau vector si B este un scalar (se ridica fiecare element al lui A la puterea B, rezultand o matrice sau vector de acelasi tip cu A). Exemple: Daca A = [2 2; 4 5] si B = [-2 3; 1 2] atunci C = A.^B returneaza C = [0.25 8; 4 25] Daca D = 3 atunci F = A.^D (adica A.^3) returneaza matricea F = [8 8; 64 125]

    2.2. OPERATORI RELATIONALI

    Operator Descriere si exemple

    == EGALITATE Exemplu: Daca a = 3, b = 4 si c = 3 atunci a==b returneaza ans = 0 (adica fals), in schimb a==c returneaza

    ans = 1 (adica adevarat)

    ~= DIFERIT Exemplu: Daca a = 3, b = 4 si c = 3 atunci a~=b returneaza ans = 1 (adica adevarat), in schimb a~=c

    returneaza ans = 0 (adica fals)

    < MAI MIC Exemplu: Daca a = 1:6 atunci b = a 3

    > MAI MARE Exemplu: Daca a = 1:6 atunci c = a>3 returneaza vectorul c = [0 0 0 1 1 1] de dimensiunea lui a, avand 1

    (adica adevarat) pe pozitiile in care elementele lui a sunt mai mari ca 3 respectiv 0 (adica fals) pe pozitiile in care elementele lui a sunt < 3

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 4 din 12

    pozitiile in care elementele lui a sunt > 3

    >= MAI MARE SAU EGAL Exemplu: Daca a = 1:6 atunci c = a>=3 returneaza vectorul c = [0 0 1 1 1 1] de dimensiunea lui a, avand 1

    (adica adevarat) pe pozitiile in care elementele lui a sunt 3 respectiv 0 (adica fals) pe pozitiile in care elementele lui a sunt < 3

    2.3. OPERATORI LOGICI

    Sintaxa Descriere si exemple

    ~A NEGATIA LOGICA (NOT) A este o matrice sau un vector; ~A returneaza o matrice de aceeasi dimensiune cu A, avand zero pe pozitiile in care elementele sale sunt diferite de 0 respectiv 1 pe pozitiile in care elementele sale sunt egale cu zero. Exemplu: Daca A = [1 2 0; 4 5 0] atunci R = ~A returneaza matricea R = [0 0 1; 0 0 1]

    A & B SI LOGIC A si B sunt vectori sau matrice de acelasi tip; A&B returneaza o matrice de aceeasi dimensiune cu A si B, avand 1 pe pozitiile in care elementele din cele doua matrice, situate pe aceeasi pozitie, sunt diferite de zero, respectiv 0 pe pozitiile in care cel putin un element situat pe aceeasi pozitie in cele doua matrice este egal cu zero. Exemplu: Daca A = [1 2 0; 4 5 0] si B = [8 9 0; 11 0 10] atunci R = A&B returneaza R = [1 1 0; 1 0 0]

    A | B SAU LOGIC A si B sunt vectori sau matrice de acelasi tip; A|B returneaza o matrice de aceeasi dimensiune cu A si B, avand 1 pe pozitiile in care cel putin unul dintre elementele din cele doua matrice, situate pe aceeasi pozitie, este diferit de zero, respectiv 0 pe pozitiile in care ambele elemente sunt egale cu zero. Exemplu: Daca A = [1 2 0; 4 5 0] si B = [8 9 0; 11 0 10] atunci R = A|B returneaza R = [1 1 0; 1 1 1]

    xor(A,B) SAU EXCLUSIV LOGIC A si B sunt vectori sau matrice de acelasi tip; xor(A,B) returneaza o matrice de aceeasi dimensiune cu A si B, avand 0 pe pozitiile in care elementele din cele doua matrice, situate pe aceeasi pozitie, este diferit de zero, respectiv 1 pe pozitiile in care numai unul dintre elemente este egal cu zero. Exemplu: Daca A = [1 2 0; 4 5 0] si B = [8 9 0; 11 0 10] atunci R = xor(A,B) returneaza

    R = [0 0 0; 0 1 1]

    logical(x) CONVERSIA VALORILOR NUMERICE IN VALORI LOGICE Functia logical converteste valorile numerice ale vectorului x in valori logice. Valorile logice pot fi egale cu 0, respectiv 1, corespunzand notiunilor de fals, respectiv adevarat. Orice element diferit de zero al vectorului x este convertit in valoare logica egala cu 1 (adevarat), iar zerourile din x devin valori logice egale cu 0 (fals).

    Valorile complexe si cele de tip NaN nu pot fi convertite in valori logice. Exemplu: Daca x = [-1 4 0] atunci R = logical(x) returneaza vectorul R = [1 1 0]

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 5 din 12

    2.4. OPERATII CU MULTIMI

    Sintaxa Descriere si exemple

    union(A,B) sau union(A,B,'rows')

    REUNIUNEA a doua multimi (contine toate elementele celor doua multimi, fara repetare). Daca A si B sunt doi vectori (cu elemente reale sau complexe) de tip coloana, vectorul reuniune este de tip coloana; altfel (daca cel putin unul este de tip linie), vectorul reuniune este de tip linie. Elementele vectorului reuniune sunt sortate in ordine crescatoare. Daca A si B sunt matrice cu acelasi numar de coloane, union(A,B,'rows') returneaza o matrice formata din combinarea randurilor celor doua matrice, fara repetare.

    In MATLAB, A si B pot fi si vectori celula cu siruri de caractere (cell arrays of strings).

    Exemple: Daca A=[1 5 2 3 1] si B=[6 5 5 1 0 4] atunci C = union(A,B) returneaza vectorul

    C = [0 1 2 3 4 5 6] Daca A = [1 2; 4 3; 5 6; 0 11] si B = [4 3; 0 11; 7 8] atunci C = union(A,B,'rows')

    returneaza matricea C = [0 11; 1 2; 4 3; 5 6; 7 8]

    intersect(A,B) sau intersect(A,B,'rows')

    INTERSECTIA a doua multimi (contine elementele comune celor doua multimi). Daca A si B sunt doi vectori (cu elemente reale sau complexe) de tip coloana, vectorul intersectie este de tip coloana; altfel (daca cel putin unul este de tip linie), vectorul intersectie este de tip linie. Elementele vectorului intersectie sunt sortate in ordine crescatoare. Daca A si B sunt matrice cu acelasi numar de coloane, intersect(A,B,'rows') returneaza o matrice formata din randurile comune celor doua matrice.

    In MATLAB, A si B pot fi si vectori celula cu siruri de caractere (cell arrays of strings).

    Exemple: Daca A=[1 5 2 3 1] si B=[6 5 5 1 0 4] atunci C = intersect(A,B) returneaza C = [1 5] Daca A = [1 2; 4 3; 5 6; 0 11] si B = [4 3; 0 11; 7 8] atunci

    C = intersect(A,B,'rows') returneaza matricea C = [0 11; 4 3]

    setdiff(A,B) sau setdiff(A,B,'rows')

    DIFERENTA A-B a doua multimi (contine elementele din A care nu sunt in B). Cand A si B sunt vectori (cu elemente reale sau complexe), setdiff(A,B) returneaza elementele din A care nu sunt in B, sortate in ordine crescatoare. Daca A si B sunt doi vectori coloana, vectorul diferenta este de tip coloana; altfel (daca cel putin unul este de tip linie), vectorul diferenta este de tip linie. Cand A si B sunt matrice cu acelasi numar de coloane, setdiff(A,B,'rows') returneaza randurile din A care nu sunt in B.

    In MATLAB, A si B pot fi si vectori celula cu siruri de caractere (cell arrays of strings).

    Exemple: Daca A = [1 5 2 3 1] si B = [6 5 5 1 0 4] atunci C = setdiff(A,B) returneaza C = [2 3] Daca A = [1 2; 4 3; 5 6; 0 11] si B = [4 3; 0 11; 7 8] atunci C = setdiff(A,B,'rows')

    returneaza matricea C = [1 2; 5 6]

    complement(A,B) DIFERENTA B-A a doua multimi (contine elementele din B care nu sunt in A).

    In MATLAB nu exista functia complement.

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 6 din 12

    Cand A si B sunt vectori (cu elemente reale sau complexe), complement(A,B) returneaza elementele din B care nu sunt in A, sortate in ordine crescatoare. Exemplu: Daca A = [1 5 2 3 1] si B = [6 5 5 1 0 4] atunci C = complement(a,b) returneaza

    C = [0 4 6]

    setxor(A,B) sau setxor(A,B,'rows')

    SAU EXCLUSIV a doua multimi (contine elementele care nu sunt in intersectia celor doua multimi). Daca A si B sunt doi vectori (cu elemente reale sau complexe) de tip coloana, vectorul obtinut cu setxor(A,B) este format din elementele care nu sunt in intersectia celor doi vectori, sortate in ordine crescatoare. Daca A si B sunt matrice cu acelasi numar de coloane, setxor(A,B,'rows') returneaza randurile care nu sunt in intersectia cele doua matrice.

    In MATLAB, A si B pot fi si vectori celula cu siruri de caractere (cell arrays of strings).

    Exemple: Daca A=[1 5 2 3 1] si B=[6 5 5 1 0 4] atunci C = setxor(A,B) returneaza

    C = [0 2 3 4 6] Daca A = [1 2; 4 3; 5 6; 0 11] si B = [4 3; 0 11; 7 8] atunci C = setxor(A,B,'rows')

    returneaza matricea C = [1 2; 5 6; 7 8]

    unique(v) sau unique(A)

    GENEREAZA O MULTIME Daca v este un vector linie, w = unique(v) genereaza un vector linie w (o multime) format(a) din elementele lui v, in care elementele sunt ordonate crescator si apar o singura data daca acestea se repeta in v. Daca A este un vector coloana sau o matrice, u = unique(A) returneaza un vector coloana u in care elementele sunt ordonate crescator (de sus in jos) si apar o singura data (in cazul in care acestea se repeta in A). Deoarece variabilele de tip NaN nu sunt egale intre ele, functia unique le trateaza drept elemente unice. Exemplu: Daca v = [-1 5 9 0 -6 5 8 9] atunci w = unique(v) returneaza vectorul linie

    w = [-6 -1 0 5 8 9] Daca A = [-1 5 9; 0 -6 5; 5 2 14] atunci u = unique(A) returneaza vectorul

    coloana u = [-6; -1; 0; 2; 5; 9; 14] Daca v = [-1 5 -1 NaN NaN] atunci w = unique(v) returneaza vectorul linie

    w = [-1 5 NaN NaN] SORTAREA IN ORDINE ALFABETICA A ELEMENTELOR UNEI MULTIMI FORMATE DIN SIRURI DE CARACTERE Instructiunile de mai jos sunt executabile numai in MATLAB. Fie cellArray o celula de siruri de caractere (a cell array of strings), unde fiecare string reprezinta un nume de persoana, iar numele sunt ordonate non-alfabetic in celula. Functia unique(cellArray) returneaza pe coloana numele din celula, ordonate de sus in jos in ordine alfabetica (dupa prima litera din string). Exemplu: Convertirea unui vector (de tip coloana) de obiecte din limbajul Java

    (java.lang.String) intr-o celula de tip coloana din MATLAB se efectueaza astfel: strArray = java_array('java.lang.String', 3) % sunt definite 3 pozitii in vector strArray(1) = java.lang.String('Popescu Adrian') strArray(2) = java.lang.String('Andrescu Ion') strArray(3) = java.lang.String('Damian Constantin')

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 7 din 12

    atunci cellArray = cell(strArray) returneaza: cellArray =

    'Constantin Damian'

    Ion' Andreescu'

    Adrian'Popescu'

    iar b = unique(cellArray) returneaza: b =

    Adrian'Popescu'

    'Constantin Damian'

    Ion' Andreescu'

    Functia str2mat (din Laboratorul 1) converteste sirurile de caractere in matrice:

    c = str2mat(b) returneaza matricea (vectorul coloana): c =

    AdrianPopescu

    Constantin Damian

    Ion Andreescu

    create_set(v) sau create_set(A)

    GENEREAZA O MULTIME Functia create_set nu exista in MATLAB. Daca v este un vector linie, w = create_set(v) genereaza un vector linie w (o multime) format(a) din elementele lui v, in care elementele sunt ordonate crescator si apar o singura data daca acestea se repeta in v. Pentru vectori linie, functia create_set este echivalenta functiei unique. Daca A este o matrice, w = create_set(A) genereaza un vector linie w (o multime) format(a) din elementele lui A, in care elementele sunt ordonate crescator si apar o singura data daca acestea se repeta in A. Daca elementele lui v sau A sunt numere complexe, ordonarea se face dupa partea reala. Exemplu: Daca v = [-1 5 9 0 -6 5 8 9] atunci w = create_set(v) returneaza vectorul

    w = [-6 -1 0 5 8 9] Daca A = [-1 5 9; 0 -6 5] atunci w = create_set(A) returneaza vectorul

    w = [-6 -1 0 5 8 9]

    2.5. FUNCTII MATEMATICE ELEMENTARE

    Daca functiile matematice se aplica vectorilor, matricelor sau tablourilor multidimensionale, ele actioneaza asupra fiecarui element.

    Pentru functiile trigonometrice, argumentul este interpretat in radiani.

    Functia Descriere si exemple

    sqrt(x) Radacina patrata din x, adica x

    exp(x) Exponentiala din x, adica xe

    log(x) log10(x) log2(x)

    Logaritm natural din x, adica xln Logaritm zecimal din x, adica xlg

    Logaritm in baza 2 din x, adica x2log

    cos(x) acos(x)

    Cosinus de x, adica xcos Arcul al carui cosinus este x, adica xarccos

    sin(x) asin(x)

    Sinus de x, adica xsin Arcul al carui sinus este x, adica xarcsin

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 8 din 12

    tan(x) atan(x)

    Tangenta de x, adica x tg

    Arcul al carei tangenta este x, adica x arctg

    cart2pol(x,y) cart2pol(x,y,z)

    pol2cart(th,r) pol2cart(th,r,z)

    Transforma coordonatele carteziene zy,x, in coordonate polare (2D) r, . Transforma coordonatele carteziene zy,x, in coordonate cilindrice (3D) zr,, . Exemplu: [theta,r] = cart2pol(1,2) returneaza theta = 1.1071, r = 2.2361

    Transforma coordonatele polare in coordonate carteziene. Transforma coordonatele cilindice in coordonate carteziene.

    cart2sph(x,y,z)

    sph2cart(th,r,z)

    Transforma coordonatele carteziene zy,x, in coordonate sferice r,, . Exemplu: [theta,phi,r] = cart2sph(1,2,3) returneaza theta = 1.1071, phi = 0.9303, r = 3.7417

    Transforma coordonatele sferice in coordonate carteziene.

    factorial(n) Calculeaza factorialul unui numar: n 1n 2n321! n

    rand rand(n) rand(n,m)

    Genereaza un numar aleator (random) intre 0 si 1.

    Genereaza o matrice patrata nn de numere aleatoare cuprinse intre 0 si 1.

    Genereaza o matrice dreptunghiulara nm de numere aleatoare cuprinse intre 0 si 1.

    fix(x) round(x) floor(x)

    Partea intreaga din x Rotunjeste elementele lui x la cele mai apropriate numere intregi Rotunjeste elementele lui x la cele mai apropriate numere intregi care nu sunt mai mari ca elementele lui x (se numeste "rotunjire catre minus infinit") Exemple: x = [1.223 2.455 3.668], a = fix(x) returneaza a = [1 2 3] b = round(x) returneaza b = [1 2 4] in schimb c = floor(x) returneaza c = [1 2 3]

    mod(x,y) rem(x,y)

    Functia x modulo y aplicata diviziunii (impartirii).

    Formula de calcul este: mod(x,y) = (x - n.*y) unde n = floor(x./y) daca y 0.

    Prin conventie, mod(x,0) = x, mod(x,x) = 0, iar mod(x,y) pentru x y si y 0 are acelasi semn ca si y. Restul impartirii x la y.

    Formula de calcul este: rem(x,y) = (x - n.*y) unde n = fix(x./y) daca y 0.

    Prin conventie, rem(x,0) = NaN, rem(x,x) = 0 pentru x 0, iar rem(x,y) pentru x y si

    y 0 are acelasi semn ca si x

    mod(x,y) si rem(x,y) sunt egale daca x si y au acelasi semn, dar difera prin y daca x si y au semne diferite.

    Exemplu: mod(3.7, 1) si rem(3.7, 1) returneaza 0.7

    rats(x) Transforma numarul real x intr-o fractie rationala reprezentata ca un string. Convertirea acestui string inapoi in x se poate efectua cu ajutorul functiei str2num Exemplu: r = rats(5.466) returneaza r = 2733/500, iar x = str2num(r) returneaza x = 5.4660

    abs(x) Valoarea absoluta din x. Exemplu: abs([3.1 -2.4]) returneaza [3.1 2.4]

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 9 din 12

    sign(x) Semnul lui x. Functia sign(x) returneaza: 1 daca x > 0; 0 daca x = 0; -1 daca x < 0 Exemplu: sign([3.1 -2.4 0]) returneaza ans = [1 -1 0]

    bincoeff(n,k) Returneaza coeficientul binomial (vezi binomul lui Newton), definit astfel:

    ! k

    1kn2n 1n n

    ! kn ! k

    ! nCkn

    Functia bincoeff nu este implementata in MATLAB. Exemplu: bincoeff(15,2) returneaza ans = 105

    perms(x) Returneaza permutarile elementelor vectorului x. Daca x este un vector cu n elemente, perms(x) returneaza o matrice cu n! randuri (cate un rand pentru fiecare permutare). Exemplu: perms([1 2]) returneaza ans = [1 2; 2 1]

    primes(N) Lista numerelor prime mai mici sau egale cu N, unde N este un numar natural

    list_primes(n) Lista primelor n numere prime in ordine crescatoare

    factor(N) Descompune in factori primi numarul natural N

    real(z) imag(z)

    Returneaza coeficientul partii reale (notat x) a numarului complex z = x+i*y Returneaza coeficientul partii imaginare (notat y) a numarului complex z = x+i*y

    finite(x) Returneaza 1 pentru elementele lui x finite si 0 in rest.

    Functia finite nu este implementata in MATLAB. Exemplu: finite([13, Inf, NA, NaN]) returneaza ans= [1, 0, 0, 0]

    gcd(x) Cel mai mare divizor comun al elementelor vectorului x

    lcm(x) Cel mai mic multiplu comun al elementelor vectorului x

    2.6. FUNCTII DE STATISTICA GENERALA

    Functia Descriere

    min(v) max(v)

    Daca v este un vector, atunci min(v) returneaza cel mai mic element din v, iar max(v) returneaza cel mai mare element din v. Daca v este o matrice, atunci min(v)/max(v) returneaza un vector continand elementele cele mai mici/cele mai mari, de pe fiecare coloana. Daca v este o matrice, atunci min(min(v)) returneaza cel mai mic element al matricei si max(max(v)) returneaza cel mai mare element al matricei.

    sum(v) prod(v)

    Daca v este un vector, atunci sum(v) returneaza suma elementelor din v, iar prod(v) returneaza produsul elementelor din v. Exemplu:

    prod(1:20) returneaza ans = 2.4329e+018 (adica valoarea lui 18102.4329! 20 ) Daca v este o matrice, atunci sum(v)/prod(v) returneaza un vector continand suma/produsul elementelor de pe fiecare coloana. Daca v este o matrice atunci sum(sum(v)) returneaza suma elementelor matricei si prod(prod(v)) returneaza produsul elementelor matricei.

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 10 din 12

    sumsq(v) Daca v este un vector, atunci sumsq(v) returneaza suma patratelor elementelor din v. Exemplu: n = 1:20; sumsq(n) returneaza ans = 2870 si este egala cu sum(n.^2) Daca v este o matrice, atunci sumsq(v) returneaza un vector continand suma patratelor elementelor de pe fiecare coloana. Daca v este o matrice atunci sum(sumsq(v)) returneaza suma patratelor elementelor matricei; sumsq(v) este echivalenta cu comanda sum(x.*conj(x))

    Functia sumsq nu este implementata in MATLAB.

    cumsum(v) cumprod(v)

    Calculeaza sumele partiale (cumulate). Calculeaza produsele partiale (cumulate). Daca v este vector, atunci cumsum(v) returneaza sumele partiale ale elementelor din v, iar cumprod(v) returneaza produsele partiale ale elementelor din v. Exemplu: n = 1:50; cumsum(1./n.^2) returneaza ans = [1.0000 1.2500 1.3611 ... 1.6251]

    adica primele 50 de sume partiale ale seriei Riemann cumprod(1:5) returneaza ans = [1 2 6 24 120] Daca v este o matrice, atunci cumsum(v)/cumprod(v) returneaza un vector continand sumele partiale/produsele partiale ale elementelor de pe fiecare coloana.

    mean(v) sau mean(v,'a')

    Daca v este un vector, calculeaza media aritmetica a elementelor din v. Daca v este o matrice calculeaza media aritmetica a elementelor de pe fiecare coloana a matricei.

    Media aritmetica a celor n elemente iv (cu n1i ) ale unui vector v se calculeaza cu

    formula: nvvvv n321 . In MATLAB, functia mean permite numai determinarea mediei aritmetice a

    elementelor unui sir v, cu sintaxa mean(v).

    In GNU Octave functia mean poate fi apelata cu optiuni: 'a' pentru media aritmetica, 'g' pentru media geometrica si 'h' pentru media armonica. Utilizarea fara optiune, adica mean(v) returneaza in mod implicit media aritmetica.

    mean(v,'g') mean(v,'h')

    Daca v este un vector, mean(v,'g') calculeaza media geometrica, respectiv mean(v,'h') calculeaza media armonica a elementelor din v. Daca v este o matrice, mean(v,'g') calculeaza media geometrica, respectiv mean(v,'h') calculeaza media armonica a elementelor de pe fiecare coloana a matricei. Utilizarea optiunii 'g' in cadrul functiei mean permite calcularea mediei geometrice, iar utilizarea optiunii 'h' permite calcularea mediei armonice (harmonic mean).

    Media geometrica a celor n elemente iv (cu n1i ) ale unui vector v se calculeaza cu

    formula: n1n321 vvvv . Media armonica a celor n elemente iv (cu n1i ) ale unui vector v se calculeaza cu

    formula: n321 v1v1v1v1n .

    corrcoef(A,B) Calculeaza coeficientii de corelatie.

    std(x) Daca x este un vector, atunci std(x) calculeaza deviatia standard (notata ) a

    elementelor lui x, adica

    n

    1i

    2i xx

    1n

    1 , care se scrie in GNU Octave astfel:

    std(x) = sqrt(sumsq(x - mean(x))/(n - 1)) Daca x este o matrice, atunci std(x) returneaza un vector linie care contine deviatiile standard pe coloane.

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 11 din 12

    LABORATOR 2: PROBLEME PROPUSE

    Se dau matricele

    2415

    1034

    2322

    1020

    A si B = rand(4), unde rand(n) genereaza o matrice patratica de tip

    nn (cu n numar natural), avand ca elemente numere aleatoare uniform distribuite pe intervalul (0,1). Sa se calculeze: A+B, A*B, A-B, 5+A, A.*B, A./B, A^10, e^A, 2^A Se dau matricele A = [1 2 3; 4 5 6; 7 8 9] si B = [7 8 9; 4 5 6; 1 2 3]. Sa se returneze matricea rezultata in urma aplicarii operatorilor A.*B, A./B, A.^B

    Sa se rezolve sistemul de ecuatii liniare

    13z2yx

    32z6y4x

    1z3y2x

    , folosind operatorul \ de impartire la stanga:

    HELP: Sistemul

    1

    3

    1

    z

    y

    x

    321

    264

    132

    se scrie matriceal sub forma A*X = B, cu A = [2 -3 1; -4 6 2; 1 2 3],

    X = [x; y; z] si B = [1; 3; 1]. Solutia sistemului este: X = inv(A)*B sau X = A\B

    Sa se rezolve sistemul de ecuatii liniare

    16z5y4x

    13z2yx, folosind operatorul / de impartire la dreapta,

    respectiv folosind operatorul \ de impartire la stanga. HELP 1: Conform indicatiilor din paragraful 2.1 (vezi impartirea la dreapta), forma matriceala a sistemului se

    scrie XB = A, unde B este matricea coeficientilor (de dimensiuni 32) si A este vectorul linie al termenilor liberi

    (cu 2 elemente). Pentru sistemul de ecuatii dat, rezulta zyxX ,

    63

    52

    41

    B si 11A . Solutia

    sistemului 1163

    52

    41

    zyx

    este: X = A/B sau X = A*pinv(B)

    HELP 2: Solutia sistemului CX = D, unde

    654

    321C ,

    z

    y

    x

    X si

    1

    1D , adica

    1

    1

    z

    y

    x

    654

    321, se

    poate obtine si prin impartire la stanga, rezultand X = C\D sau X = pinv(C)*D Se dau vectorii w1 = [1, -3, 4, 5, 2] si w2 = [0, 4, -1, 2, 3]. Se cere produsul scalar al vectorilor w1 si w2. HELP 1: ps = sum(w1.*w2) HELP 2: Produsul scalar a doi vectori w1 si w2 se poate obtine direct, folosind functia GNU Octave dot, cu sintaxa: dot(w1,w2)

  • Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 12 din 12

    Se dau multimile A = [1, 2, 3, 0, 4, 5] si B = [-7, 2, 3, 0, -3, 10, 12, 5]. Sa se returneze rezultatul operatiilor cu multimi: union(A,B), intersect(A,B), complement(A,B), complement(B,A), setdiff(A,B), setxor(A,B), create_set(A) si unique(A)

    Se dau matricele

    087

    650

    301

    A si

    321

    604

    980

    B . Sa se returneze matricea rezultata in urma aplicarii

    operatorilor logici: & (si logic); | (sau logic); ~ (not); xor (sau exclusiv), adica A&B, A|B, ~A, xor(A,B)

    Sa se reprezinte grafic functia polinomiala 32x5xxf 34 pe intervalul 4 6;x . HELP: x = -6:0.1:4; f = x.^4 - 5*x.^3 + 2*x + 3; plot(x,f), grid on % se poate scrie si grid('on') Se da sirul de numere: 1, 9, 2, 43, 21, 60, 22. Sa se sorteze in ordine crescatoare patratele elementelor din sirul dat, sa se afle media geometrica a acestora si logaritmul natural al mediei, utilizand cu o singura comanda GNU Octave. HELP 1: Daca se noteaza sirul cu v, atunci v = [1 9 2 43 21 60 22] si rezultatul este log(mean(sort(v.^2),'g')) HELP 2: sau rezultatul este log(prod(sort(v.^2))^(1/7))

    10) Sa se reprezinte grafic primii 1000 de termeni ai sirului definit prin termenul general n

    nn

    11x

    , unde

    1,2,3,n , apoi sa se verifice tendinta de variatie a curbei fata de valoarea e = 2.7183 indicata de limita

    sirului: en

    11lim

    n

    n

    .

    HELP: n = 1:1000; xn = (1+1./n).^n; plot(n, xn), grid on

    11) Se da produsul de termen general 94n

    14nan

    , unde 1,2,3,n . Sa se calculeze primele 10 produse

    partiale si produsul primilor 10 termeni. HELP: n = 1:10, an = (4*n-1)./(4*n-9), cumprod(an), prod(an)