l1 expresii fundamentale vectori si matrici.pdf
TRANSCRIPT
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
1/20
LABORATOR 1
INTRODUCERE N QTOCTAVE Generalitati GNU Octave este un limbaj de nivel inalt utilizat pentru calcule numerice;
este considerat o clona gratuita si redusa dpdv al capabilitatilor a lui MATLAB;
sistemul poate fi folosit in mod interactiv sau pentru rularea unor fisiere de comenzi;
limbajul este portat pe o multitudine de sisteme de operare;
este utilizat la ora actuala atat in industrie cat si in mediu academic;
limbajul este interpretat si poate fi extins prin adaugarea de module;
codul Octave poate fi apelat din C++ si invers;
are suport intrinsec pentru numere complexe si lucru cu matrice;
are o colectie bogata de functii matematice;
Octave este de cele mai multe ori exemplificat in linie de comanda, dar exista si interfete
grafice de lucru cu acesta.
Instalarea Octave In cele ce urmeaza se presupune ca instalarea se face pe un sistem de operare de tip Windows. Kitul de instalare se descarca de la http://octave.sourceforge.net/, varianta Windows installer. La ora scrierii acestui document, varianta disponibila este octave-3.6.4-vs2010-setup.exe. Se creaza un director, de exemplu C:\Octave\Octave3.6.4 in care se dezarhiveaza continutul fisierului descarcat anterior. Se poate lansa executabilul octave.exe cu calea completa:
c:\octave\Octave3.6.4\bin\octave.exe Interpretorul este incarcat intro fereastra de tip linie de comanda. La prompt se pot scrie comenzi, de exemplu: 1+1 sau cos(pi): Iesirea se face cu comanda quit sau exit.
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
2/20
Instalarea mediului grafic de lucru QtOctave Desi se poate lucra din linia de comanda, e poate mai comod sa se foloseasca un mediu grafic de lucru. Acesta poate fi QtOctave, program gratuit disponibil aici. Se va descarca arhiva zip si se va dezarhiva intr-un fisier, de exemplu C:\QtOctave. Lansarea in executie a programului QtOctave Pentru a lansa in executie programul QtOctave, se va apela fisierul
C:\QtOctave\bin\qtoctave.exe
La pornirea pentru prima oara a programului QtOctave in fereastra va aparea o eroare
din cauza ca mediul nu stie unde se afla instalat Octave. Pentru corectare se va proceda astfel: din meniul Config -> General Configuration se alege Octave
si in casuta de Octave Path se introduce calea completa catre directorul unde se afla fisierul octave.exe, asa cum a fost precizat mai sus:
c:\octave\Octave3.6.4\bin\ Dupa repornirea lui QtOctave se poate lucra.
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
3/20
Ferestrele de lucru Programul QtOCTAVE lucreaz cu cinci tipuri de ferestre: o fereastra pentru afisarea variabilelor locale si a functiilor disponibile, o fereastra tip navigator, o fereastra tip editor, o fereastra de comenzi (terminal) si o fereastra pentru afisarea comenzilor lansate in terminal, si a rezultatelor acestora. Ferestrele pot fi inchise sau deschise din meniul View.
Fig.1 - Interfata implicita QtOCTAVE
Fiecare comand din meniul principal furnizeaz un meniu specific, selecia comenzii dorite fcndu-se prin deplasarea zonei active cu ajutorul sgeilor sau prin selecia direct cu ajutorul mouse-lui. Aceste submeniuri sunt prezentate n Fig.2.
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
4/20
Fig. 2. - Submeniurile programului OtOCTAVE
Expresii fundamentale
OCTAVE lucreaz cu expresii matematice ca i celelalte limbaje de programare, dar spre deosebire de majoritatea acestor limbaje, aceste expresii implic la scar larg lucrul cu matrici. Expresiile sunt alctuite cu ajutorul urmtoarelor tipuri:
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
5/20
Variabile Constante numerice Operatori Funcii
Variabile OCTAVE nu necesit declararea dimensiunii variabilelor, deoarece la ntlnirea unui nou
nume de variabil genereaz automat variabila respectiv i aloc spaiul necesar de memorie.
Numele unei variabile este o liter, urmat de un numr orict de mare de litere, cifre sau simboluri. Din acest numr orict de mare sunt oprite primele 31 de caractere.
OCTAVE este case sensitive - face distincie ntre literele mici i cele mari. Ex: A si a reprezinta doua variabile distincte Exemplu:
a = 30 creeaz o matrice 1 x 1 cu numele a i stocheaz valoarea acesteia 30 ntr-o singur locaie corespunztoare singurului element al matricei. Constante numerice
OCTAVE utilizeaz notaia zecimal, cu punct zecimal opional i cu semn + sau -. Se utilizeaz i notaia tiinific cu litera e pentru a specifica o putere a lui 10. Reprezentarea numerelor imaginare este realizat cu litera i sau j ca sufix.
Exemple: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 -3.14159j 3e5i Constante speciale:
pi 3.14159265
i unitate imaginar
j la fel ca i
eps precizia relativ n virgul mobil, 2-52
realmin cel mai mic numr n virgul mobil, 2-1022
realmax cel mai mare numr n virgul mobil, 21023
Inf infinit
NaN nu este numr (Not-a-Number)
Numele constantelor speciale nu sunt rezervate i deci este posibil suprascrierea lor.
Exemplu:
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
6/20
>> eps = 1.e-6 Funcia original este reconstituit prin comanda: clear eps
Operatori
Expresiile utilizeaz operatori aritmetici uzuali:
+ Adunare
- Scdere
* Multiplicare
/ mprire
\ mprire la stnga
^ Ridicarea la o putere
' Transpusa complex conjugat
( ) Operatorul de specificare a ordinii de evaluare
Funcii
OCTAVE furnizeaz un mare numr de funcii matematice elementare standard (abs, sqrt, exp, sin ).
Exist i funcii matematice avansate O parte din funcii (cum ar fi sqrt, sin) sunt de tip built-in, adic sunt o parte a
nucleului OCTAVE, au o mare eficien, dar detaliile constructive nu sunt accesibile utilizatorului.
Alte funcii sunt implementate ca fiiere OCTAVE (M-files) i pot fi chiar modificate. Cele mai utilizate funcii:
funcii trigonometrice sin sinus asin arcsinus cos cosinus acos arccosinus tan tangent atan arctangent cot cotangent acot arccotangent sec secant asec arcsecant csc cosecant acsc arccosecant
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
7/20
funcii putere exp funcia exponenial log logaritm natural log2 logaritm n baza 2 log10 logaritm n baza 10 sqrt funcia radical;
alte funcii
abs valoarea absolut, modul min minimum max maximum
Exemplu: Pentru a calcula expresia
17.05.1)7ln(53
cos4
sin
+
+
Se va scrie comanda:
>> (sin(pi/4)+cos(pi/3))/(sqrt(5+log(7))-1.5^0.17)
ans =
0.7717
>>
Observatii:
1. ans este numele unei variabile careia i se asigneaza rezultatul evaluarii expresiei, daca ceea ce s-a introdus nu este o atribuire.
2. Daca se scrie o expresie (fie ea si de atribuire) si nu se finalizeaza randul cu caracterul ; atunci rezultatul evaluarii acelei expresii este scris in mediul de rulare. Pentru a se inhiba afisarea rezultatului se pune la sfarsit ;
3. Pentru tergerea tuturor variabilelor curente din memoria de lucru se poate utiliza comanda clear.
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
8/20
Vectori si matrice
>> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
In secventa de mai sus s-a definit o matrice cu 3 linii si 2 coloane; trecerea de la o linie la alta se face cu punct si virgula. Accesarea unui element al matricei se face cu formatul matrice(linie, coloana), cu indicele de linie si de coloana pornind de la 1:
>> A(1, 2)
ans = 2
Pentru definirea unui vector linie se foloseste:
>> v = [1 2 3]
iar pentru un vector coloana: >> u = [1; 2; 3]
u =
1
2
3
v si u sunt in mod evident matrice de 1x3 si respectiv 3x1: >> size(v)
ans =
1 3
>> size(u)
ans =
3 1
Pentru scrierea unei progresii aritmetice incepand de la vi, cu pasul pas si cu termeni nu mai mari decat vf se foloseste expresia
vi:pas:vf: >> [1:0.5:5]
ans =
Columns 1 through 9:
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000
>> size([1:0.5:5])
ans =
1 9
>> [0:0.3:1]
ans =
0.00000 0.30000 0.60000 0.90000
Numerele ntregi de la 10 la 100 din 5 n 5:
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
9/20
>> 10:5:100
ans =
Columns 1 through 14
10 15 20 25 30 35 40 45 50 55 60 65 70 75
Columns 15 through 19
80 85 90 95 100
Numerele de la 1 la 0 din 0.2 n 0.2: >> 1:-0.2:0
ans =
1.0000 0.8000 0.6000 0.4000 0.2000 0
Dupa cum se observa, rezultatul este un vector linie. Daca pasul lipseste, se presupune a fi implicit 1: >> v = 1:6
v =
1 2 3 4 5 6
Pentru generarea unor matrice particulare avem functiile: ones(nrLnii, nrColoane) zeros(nrLnii, nrColoane) eye(nrLnii, nrColoane)
>> ones(2, 3)
ans =
1 1 1
1 1 1
>> zeros(2, 3)
ans =
0 0 0
0 0 0
>> v = 2 * ones(2, 3)
v =
2 2 2
2 2 2
Matricea unitate se obtine cu functia eye: >> I = eye(4)
I =
Diagonal Matrix
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Obtinerea unei matrice cu valori aleatoare, uniform distribuite intre 0 si 1 se face cu: >> w = rand(1,3)
w =
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
10/20
0.23989 0.18998 0.47958
iar pentru a obtine numere dintr-o distributie normala, centrata in 0 si cu dispersia 1 se foloseste: >> w = randn(1,3)
w =
-1.60819 -1.30364 -0.41856
Evident, functiile se pot folosi si pentru generarea de matrice: >> rand(3, 3)
ans =
0.72054 0.84622 0.20286
0.16965 0.15998 0.73834
0.56582 0.47004 0.67899
>> randn(3, 3)
ans =
0.14664 -1.41418 -0.57935
-0.39136 -1.15935 0.85834
-1.00617 -0.12719 -0.80026
Se pot combina expresii; unele functii (radical, logaritm) care functioneaza pe scalari pot fi de asemenea folosite si pentru vectori sau matrice: >> x = 1:10
x =
1 2 3 4 5 6 7 8 9 10
>> y = sqrt(x)
y =
Columns 1 through 10:
1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458 2.8284 3.0000 3.1623
Determinarea dimensiunii unei matrice se face cu functia size: >> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
11
>> size(A)
ans =
3 2
Rezultatul functiei size este o matrice de 1 linie si 2 coloane, date care se pot accesa individual: >> size(A, 1) %numarul de linii
ans = 3
>> size(A, 2) %numarul de coloane
ans = 3
Pentru vectori se poate inca folosi functia size, dar este disponibila si functia length:
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
11/20
>> v = 1:4
v =
1 2 3 4
>> length(v)
ans = 4
>> length([1; 2; 3; 4; 5])
ans = 5
Referirea elementelor dintr-o matrice se poate face pe baza indicilor; indicii incep de la 1. Putem sa referim elemente individuale cu forma
numeMatrice(linie, coloana) sau portiuni intregi din ea: >> A(3,2) % elemental de pe linia a 3-a si coloana a 2-a
ans = 6
>> A(2,:) % toate elementele de pe linia a 2-a
ans =
3 4
":" inseamna toate elemente de pe acea linie/coloana
>> A(:,2) % toate elementele de pe coloana a 2-a
ans =
2
4
6
>> A([1 3],:) % toate elementele de pe liniile 1 si 3
ans =
1 2
5 6
Exemple: >> A=[1 2 0; 2 5 -1; 4 10 -1]
A =
1 2 0
2 5 -1
4 10 -1
o Elementele de pe linia 1, ncepnd cu a doua coloan: >> A(1,2:end)
ans =
2 0
o Elementele aflate n poziii impare de pe linia 2: >> A(2,1:2:end)
ans =
2 -1
o Elementele aflate n poziii pare de pe coloana 1:
>> A(2:2:end,1)
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
12/20
ans =
2
o Elementele pozitive:
>> A(A>0)
ans =
1
2
4
2
5
10
o Toate elementele:
>> A(:)
ans =
1
2
4
2
5
10
0
-1
-1
Datele din matrice pot fi si modificate folosind adresarea pe portiuni: >> A(:,2) = [10; 11; 12] % modifica a 2-a coloana
A =
16
1 10
3 11
5 12
La o matrice se pot adauga linii si coloane: >>A = [A, [100; 101; 102]]; % adauga o coloana
sau se pot concatena chiar doua matrice cu conditia ca operatia sa aiba sens: >>B = [11 12; 13 14; 15 16] % aceeasi dimensiune cu A
>>[A B]
>>[A; B]
Obs. Concatenarea: Pentru concatenarea pe orizontal a matricelor A cu B se scrie [A,B] matricele A i B
trebuind s aib acelai numr de linii. Pentru concatenarea pe vertical se scrie [A;B] de data aceasta matricele A i B
trebuind s aib acelai numr de coloane.
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
13/20
Efectuarea de calcule >> A=[1 2 0; 2 5 -1; 4 10 -1]
A =
1 2 0
2 5 -1
4 10 -1
Calculul transpusei matricei A:
>> B = A
B =
1 2 4
2 5 10
0 -1 -1
Adunarea matricelor: >> C=A+B
C =
2 4 4
4 10 9
4 9 -2
Adunarea cu matricea identitate:
>> D=A+eye(3)
D =
2 2 0
2 6 -1
4 10 0
nmulirea matricelor:
>> E=A*B
E =
5 12 24
12 30 59
24 59 117
Dup cum se tie, nmulirea matricelor nu este comutativ:
>> F=B*A
F =
21 52 -6
52 129 -15
-6 -15 2
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
14/20
nmulirea elementelor corespunztoare a 2 matrice: >> G=A.*B
G =
1 4 0
4 25 -10
0 -10 1
Obs. S-a utilizat o aa-numit operaie punctuala (produs Hadamard), cu conditia
ca matricele sa aiba aceleasi dimensiuni:
Ridicarea la o putere a unei matrice:
>> A^2
ans =
5 12 -2
8 19 -4
20 48 -9
Ridicarea la o putere a elementelor matricei: >> A.^2
ans =
1 4 0
4 25 1
16 100 1
Numrul elementelor matricei: >> numel(A)
ans =
9
Elementul maxim de pe fiecare coloan a unei matrice:
>> max(A)
ans =
4 10 0
Elementul minim de pe fiecare coloan a unei matrice:
>> min(A)
ans =
1 2 -1
Suma elementelor de pe fiecare coloan: >> sum(A)
ans =
7 17 -2
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
15/20
Produsul elementelor de pe fiecare coloan: >> prod(A)
ans =
8 100 0
Elementele de pe diagonala principal: >> diag(A)
ans =
1
5
-1
Produsul scalar a doi vectori >>a = [1 2 3]
a =
1 2 3
>>b = [1;2;3]
b =
1
2
3
>>prod_scalar = a*b
prod_scalar =
14
Produsul tensor a doi vectori
>>a = a
a =
1
2
3
>>b = [1;2;3]
b =
1
2
3
>>prod_tensor = a*b
prod_tensor =
14
Produsul vectorial a doi vectori un vector perpendicular pe planul format de cei doi vectori
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
16/20
>> b = [-2 1 2];
>>cp = cross(a,b)
cp =
1 -8 5
Norma euclidiana a unui vector se calculeaza prin functia norm. >>a = -2:2
a =
-2 -1 0 1 2
>>ne = norm(a)
ne =
3.1623
Pentru un vector sau o matrice, o expresie logica va produce un vector sau matrice de acelasi fel cu cea initiala in care avem valoarea 1 (adevarat) acolo unde expresia este adevarata si 0 (fals) in rest: >> a = [1 15 2 0.5]
a =
1.00000 15.00000 2.00000 0.50000
>> a < 3
ans =
1 0 1 1
Pentru a determina care sunt indicii pentru care o expresie este adevarata se poate folosi functia find: >> find(a < 3)
ans =
1 3 4
Pentru cazul in care se aplica functia find pe o matrice: >> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> [r,c] = find(A>=7)
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
17/20
r =
1
3
2
c =
1
2
3
Functie Descriere Floor Rotunjeste la cel mai mic intreg Ceil Rotunjeste la cel mai mare intreg Fix Rotunjeste la 0 Round Rotunjeste la cel mai apropiat intreg >>T = randn(5)
T =
1.1650 1.6961 -1.4462 -0.3600 -0.0449
0.6268 0.0591 -0.7012 -0.1356 -0.7989
0.0751 1.7971 1.2460 -1.3493 -0.7652
0.3516 0.2641 -0.6390 -1.2704 0.8617
-0.6965 0.8717 0.5774 0.9846 -0.0562
>>A = floor(T)
A =
1 1 -2 -1 -1
0 0 -1 -1 -1
0 1 1 -2 -1
0 0 -1 -2 0
-1 0 0 0 -1
>>B = ceil(T)
B =
2 2 -1 0 0
1 1 0 0 0
1 2 2 -1 0
1 1 0 -1 1
0 1 1 1 0
>>C = fix(T)
C =
1 1 -1 0 0
0 0 0 0 0
0 1 1 -1 0
0 0 0 -1 0
0 0 0 0 0
>>D = round(T)
D =
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
18/20
1 2 -1 0 0
1 0 -1 0 -1
0 2 1 -1 -1
0 0 -1 -1 1
-1 1 1 1 0
Exerciii:
1. S se calculeze:
2
51+=
( )3
2
=
3cos10 22
=
3
3
3
31
3
+
=
2. Pentru x=0.5 i t= 2 s se calculeze expresiile:
( ) ( )23 1ln1 ttx +++ =
( )txe tx cos1 +++ =
tx
etx
arctgtx
++
+2cos
=
3. S se defineasc vectorii i matricele de mai jos:
( )3,2,1=v
( )6,5,4=w
=
1
0
1
u
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
19/20
=
1
0
2
z
=
100
010
001
A
=
221
111
102
B
4. S se genereze vectorii avnd urmtoarele elemente:
v1: 2, 4, 6, 8,, 100 v2: 50, 48, 46,, -50
5. Prin concatenarea vectorilor i matricelor de la ex. 1, s se genereze vectorii i
matricele de mai jos:
( )654321=r
=
1
0
1
1
0
2
t
=
333221
333111
333102
500000
050000
005000
C
6. Cu vectorii i matricele de la ex. 1, 2, 3 s se calculeze:
=+
=
=
=
333 15 EDC
zBuA
tr
zv
Infor
matic
a apli
cata
-
Facultatea de Constructii Informatica Aplicata An univ. 2013-2014 Semestrul I
20/20
7. Fie matricea
=
334524644332
343323234322
324543433432
A
a. S se calculeze elementele maxim si minim ale matricei A. b. Sa se calculeze elementul maxim de pe pozitiile pare de pe linia a doua a
matricei A. 8. Utiliznd matricele A i B s se genereze matricele:
=
221000
111000
102000
000100
000010
000001
G
=
221221
111111
102102
100100
010010
001001
H
9. S se genereze:
a) Vectorul elementelor impare ale lui r ; b) Vectorul elementelor pozitive ale lui H; c) Suma elementelor lui H; d) Matricea elementelor lui H aflate la intersecia liniilor 1, 2 i 3 cu coloanele 2, 4 i 6; e) vectorul ri n care elementele lui r sunt n ordine invers.
10. Utiliznd matricea B s se scrie comenzile necesare pentru a obine:
a) un vector format din elementele primei linii a lui B; b) o matrice format cu ultimele dou linii ale lui B; c) un vector ale crui elemente sunt sumele elementelor din coloanele lui B; d) un vector ale crui elemente sunt sumele elementelor din liniile lui B; e) o matrice format din elementele din colurile lui B.
Infor
matic
a apli
cata