Sunteți pe pagina 1din 20

Facultatea de Constructii

An univ. 2013-2014

Informatica Aplicata
Semestrul I

LABORATOR 1

ca
ta

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;

ap
li

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

at
ic

grafice de lucru cu acesta.

Instalarea Octave

rm

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.4vs2010-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

In

fo

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.

1/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

Instalarea mediului grafic de lucru QtOctave

Lansarea in executie a programului QtOctave

ca
ta

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.

Pentru a lansa in executie programul QtOctave, se va apela fisierul


C:\QtOctave\bin\qtoctave.exe

ap
li

La pornirea pentru prima oara a programului QtOctave in fereastra va aparea o eroare

In

fo

rm

at
ic

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.

2/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

Ferestrele de lucru

at
ic

ap
li

ca
ta

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.

rm

Fig.1 - Interfata implicita QtOCTAVE

In

fo

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.

3/20

Informatica Aplicata
Semestrul I

In

fo

rm

at
ic

ap
li

ca
ta

Facultatea de Constructii
An univ. 2013-2014

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:

4/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

Variabile
Constante numerice
Operatori
Funcii

ca
ta

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

ap
li

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.

at
ic

Exemple:
3
-99
0.0001
9.6397238
1.60210e-20 6.02252e23
-3.14159j
3e5i
 Constante speciale:

3.14159265

rm

pi

unitate imaginar

la fel ca i

eps

precizia relativ n virgul mobil, 2-52

fo

cel mai mic numr n virgul mobil, 2-1022

realmax

cel mai mare numr n virgul mobil, 21023

In

realmin

Inf

infinit

NaN

nu este numr (Not-a-Number)

 Numele constantelor speciale nu sunt rezervate i deci este posibil suprascrierea lor.
Exemplu:

5/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

>> eps = 1.e-6


Funcia original este reconstituit prin comanda:
clear eps

Expresiile utilizeaz operatori aritmetici uzuali:


+ Adunare

ca
ta

Operatori

Scdere

Multiplicare

mprire

mprire la stnga

Ridicarea la o putere

'

Transpusa complex conjugat

()

Operatorul de specificare a ordinii de


evaluare

ap
li

rm

at
ic

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.

In

fo

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

6/20

Informatica Aplicata
Semestrul I

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

sin

+ cos

Se va scrie comanda:

4
3
5 + ln(7) 1.5 0.17

ap
li

ca
ta

Facultatea de Constructii
An univ. 2013-2014

at
ic

>> (sin(pi/4)+cos(pi/3))/(sqrt(5+log(7))-1.5^0.17)
ans =
0.7717
>>

In

fo

rm

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.

7/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

Vectori si matrice
>> A = [1 2; 3 4; 5 6]

ca
ta

A=
12
34
56

ap
li

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]

>> u = [1; 2; 3]
u=
1
2
3

iar pentru un vector coloana:

fo

rm

at
ic

v si u sunt in mod evident matrice de 1x3 si respectiv 3x1:


>> size(v)
ans =
13
>> size(u)
ans =
31
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

In

>> size([1:0.5:5])
ans =
19

>> [0:0.3:1]
ans =
0.00000 0.30000 0.60000 0.90000
Numerele ntregi de la 10 la 100 din 5 n 5:

8/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

40

45

50

55

60

Numerele de la 1 la 0 din 0.2 n 0.2:

0.6000

0.4000

0.2000

70

75

ap
li

>> 1:-0.2:0
ans =
1.0000 0.8000

65

ca
ta

>> 10:5:100
ans =
Columns 1 through 14
10 15 20 25 30 35
Columns 15 through 19
80 85 90 95 100

Dupa cum se observa, rezultatul este un vector linie. Daca pasul lipseste, se presupune a fi
implicit 1:
>> v = 1:6
v=
123456

at
ic

Pentru generarea unor matrice particulare avem functiile:


ones(nrLnii, nrColoane)
zeros(nrLnii, nrColoane)
eye(nrLnii, nrColoane)

In

fo

rm

>> ones(2, 3)
ans =
111
111
>> zeros(2, 3)
ans =
000
000
>> v = 2 * ones(2, 3)
v=
222
222
Matricea unitate se obtine cu functia eye:
>> I = eye(4)
I=
Diagonal Matrix
1000
0100
0010
0001

Obtinerea unei matrice cu valori aleatoare, uniform distribuite intre 0 si 1 se face cu:
>> w = rand(1,3)
w=

9/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

0.23989 0.18998 0.47958

ca
ta

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

>> randn(3, 3)
ans =
0.14664 -1.41418 -0.57935
-0.39136 -1.15935 0.85834
-1.00617 -0.12719 -0.80026

ap
li

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

at
ic

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

fo

rm

Determinarea dimensiunii unei matrice se face cu functia size:


>> A = [1 2; 3 4; 5 6]
A=
12
34
56
11
>> size(A)
ans =
32

In

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:

10/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

ca
ta

>> v = 1:4
v=
1234
>> length(v)
ans = 4
>> length([1; 2; 3; 4; 5])
ans = 5

ap
li

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 =
34
":" inseamna toate elemente de pe acea linie/coloana

at
ic

>> 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 =
12
56

rm

Exemple:
>> A=[1 2 0; 2 5 -1; 4 10 -1]
A=
1 2 0
2 5 -1
4 10 -1

In

fo

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)

11/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

ans =
2
o

Elementele pozitive:

ap
li

>> A(:)
ans =
1
2
4
2
5
10
0
-1
-1

Toate elementele:

at
ic

ca
ta

>> A(A>0)
ans =
1
2
4
2
5
10

rm

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

fo

La o matrice se pot adauga linii si coloane:


>>A = [A, [100; 101; 102]]; % adauga o coloana

In

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.

12/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

Efectuarea de calcule

Calculul transpusei matricei A:

Adunarea matricelor:

>> C=A+B
C=
2 4 4
4 10 9
4 9 -2

Adunarea cu matricea identitate:

at
ic

ap
li

>> B = A
B=
1 2 4
2 5 10
0 -1 -1

ca
ta

>> A=[1 2 0; 2 5 -1; 4 10 -1]


A=
1 2 0
2 5 -1
4 10 -1

>> D=A+eye(3)

2 0
6 -1
10 0

rm

D=
2
2
4

nmulirea matricelor:

fo

>> E=A*B
E=
5 12 24
12 30 59
24 59 117

In

Dup cum se tie, nmulirea matricelor nu este comutativ:

>> F=B*A
F=
21 52 -6
52 129 -15
-6 -15 2

13/20

Facultatea de Constructii
An univ. 2013-2014

nmulirea elementelor corespunztoare a 2 matrice:

>> G=A.*B
G=
1 4 0
4 25 -10
0 -10 1

ca
ta

Informatica Aplicata
Semestrul I

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:

ap
li

>> A^2
ans =
5 12 -2
8 19 -4
20 48 -9

Numrul elementelor matricei:

>> numel(A)
ans =
9

Elementul maxim de pe fiecare coloan a unei matrice:

rm

at
ic

Ridicarea la o putere a elementelor matricei:


>> A.^2
ans =
1 4 0
4 25 1
16 100 1

fo

>> max(A)
ans =
4 10 0

Elementul minim de pe fiecare coloan a unei matrice:

In

>> min(A)
ans =
1 2 -1

Suma elementelor de pe fiecare coloan:

>> sum(A)
ans =
7 17 -2

14/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

Produsul elementelor de pe fiecare coloan:

Elementele de pe diagonala principal:

Produsul scalar a doi vectori


>>a = [1 2 3]
a=
123
>>b = [1;2;3]
b=
1
2
3
>>prod_scalar = a*b
prod_scalar =
14

Produsul tensor a doi vectori

rm

at
ic

ap
li

>> diag(A)
ans =
1
5
-1

ca
ta

>> prod(A)
ans =
8 100 0

In

fo

>>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

15/20

Informatica Aplicata
Semestrul I

>> b = [-2 1 2];


>>cp = cross(a,b)
cp =
1 -8 5

ap
li

ca
ta

Facultatea de Constructii
An univ. 2013-2014

at
ic

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

rm

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 =
1011

In

fo

Pentru a determina care sunt indicii pentru care o expresie este adevarata se poate folosi
functia find:
>> find(a < 3)
ans =
134
Pentru cazul in care se aplica functia find pe o matrice:
>> A = magic(3)
A=
816
357
492
>> [r,c] = find(A>=7)

16/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

ca
ta

r=
1
3
2
c=
1
2
3

Descriere
Rotunjeste la cel mai mic intreg
Rotunjeste la cel mai mare intreg
Rotunjeste la 0
Rotunjeste la cel mai apropiat intreg

fo

rm

>>B = ceil(T)
B=
2 2 -1 0 0
11000
1 2 2 -1 0
1 1 0 -1 1
01110

at
ic

>>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

>>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

ap
li

Functie
Floor
Ceil
Fix
Round

In

>>C = fix(T)
C=
1 1 -1 0 0
00000
0 1 1 -1 0
0 0 0 -1 0
00000

>>D = round(T)
D=

17/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

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

ca
ta

Exerciii:
1. S se calculeze:
1+ 5
=
2

( )

2 10 cos 2

ap
li


3
3
1+ 3

at
ic

2. Pentru x=0.5 i t= 2 s se calculeze expresiile:

(x

) (

+ 1 ln 1 + t + t 2 =

e x +t (1 + x + cos t ) =

rm

cos 2 x + arctgt
x + t + ex

3. S se defineasc vectorii i matricele de mai jos:

fo

v = (1,2,3)

In

w = (4,5,6)

1

u= 0
1

18/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

2

z= 0
1

ca
ta

1 0 0

A = 0 1 0
0 0 1

v1: 2, 4, 6, 8,, 100


v2: 50, 48, 46,, -50

ap
li

2 0 1

B= 1 1 1
1 2 2

4. S se genereze vectorii avnd urmtoarele elemente:

5. Prin concatenarea vectorilor i matricelor de la ex. 1, s se genereze vectorii i


matricele de mai jos:

5 6)

5 0 0

0 5 0
0 0 5

3 3 3

3 3 3
3 3 3

fo

rm

at
ic

r = (1 2 3 4
2

0
1
t =
1

0
1

0 0 0

0 0 0
0 0 0
C =
2 0 1
1 1 1

1 2 2

6. Cu vectorii i matricele de la ex. 1, 2, 3 s se calculeze:

In

vz =

r t =
Au B z =
C 3 + D 3 15 E 3 =

19/20

Facultatea de Constructii
An univ. 2013-2014

Informatica Aplicata
Semestrul I

1 0

0 1

0 0

0 0

0 0 1 2

0
1
0
0
1
2

0
0

1
2

ap
li

0
0 1 0
1
0
0 1

1
2 0
1

1
1
1
1
2 1 2 2

at
ic

0
0
H =
2
1

0 0

0
0
G =
0

0
0

ca
ta

3432 4343 3245

7. Fie matricea A = 4322 2323 3433


4332 2464 3345

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:

9. S se genereze:

rm

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.

In

fo

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.

20/20

S-ar putea să vă placă și