+ All Categories
Transcript
Page 1: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

MATLAB – CURS

Page 2: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 3: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Cuprins

1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Aplicatia MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Comenzile help si doc . . . . . . . . . . . . . . . . . . . . . . 21.3 Variabile si comenzi MATLAB . . . . . . . . . . . . . . . . . . 31.4 Functii matematice . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.1 Utilizarea semnului : în manipularea matricelor . . . . . . . 302.2 Operarea element cu element . . . . . . . . . . . . . . . . . . 382.3 Analiza datelor . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3 Fisiere de tip script . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4 Functii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.1 Fisiere de tip function . . . . . . . . . . . . . . . . . . . . . . . 534.2 Functii anonymous . . . . . . . . . . . . . . . . . . . . . . . . . 574.3 Functii inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5 Programare în MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 655.1 Operatori relationali si operatori logici . . . . . . . . . . . . . 655.2 Structuri if-elseif-else-end . . . . . . . . . . . . . . . 735.3 Structuri ciclice de tip for-end . . . . . . . . . . . . . . . . . 775.4 Structuri ciclice de tip while-end . . . . . . . . . . . . . . . 805.5 Structuri switch-case . . . . . . . . . . . . . . . . . . . . . 82

6 Polinoame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

7 Rezolvarea numerica a unor probleme . . . . . . . . . . . . . . . 897.1 Rezolvarea ecuatiilor . . . . . . . . . . . . . . . . . . . . . . . 897.2 Determinarea minimului si maximului . . . . . . . . . . . . . 927.3 Integrarea numerica . . . . . . . . . . . . . . . . . . . . . . . 93

Page 4: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.4 Algebra liniara . . . . . . . . . . . . . . . . . . . . . . . . . . . 967.5 Ecuatii diferentiale . . . . . . . . . . . . . . . . . . . . . . . . 100

8 Reprezentari grafice . . . . . . . . . . . . . . . . . . . . . . . . . . 1058.1 Grafica 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058.2 Grafica 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

9 Calcul simbolic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.1 Obiectele simbolice si expresiile simbolice . . . . . . . . . . . 1249.2 Schimbarea formei unei expresii simbolice . . . . . . . . . . . 1279.3 Calculul numeric al unei expresii simbolice . . . . . . . . . . 1289.4 Sume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.5 Rezolvarea ecuatiilor algebrice . . . . . . . . . . . . . . . . . 1319.6 Limite de functii . . . . . . . . . . . . . . . . . . . . . . . . . . 1349.7 Derivarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359.8 Integrarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369.9 Rezolvarea ecuatiilor diferentiale ordinare . . . . . . . . . . . 138

Bibliografie selectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

Page 5: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 1

Introducere

1.1 Aplicatia MATLAB

Fereastra aplicat,iei MATLAB cont,ine o bara de titlu, o bara de meniuri,o bara de instrumente precum s, i urmatoarele ferestre:

Command Window, Current Folder, Workspace, Command History

Fereastra de comanda (Command Window) este cea mai importanta; aicisunt tastate comenzile dupa semnele>> care reprezinta prompterul1 MAT-LAB.

Dupa ce o comanda a fost introdusa2 s, i a fost apasata tasta Enter, MAT-LAB executa comanda s, i rezultatul apare imediat pe ecran.

De exemplu, prin tastarea comenzii>> version

se afis, eaza versiunea MATLAB folosita, iar comanda>> ver

indica, pe lânga versiunea curenta a MATLAB-ului instalat, s, i toolbox-urile instalate.

De exemplu, prin tastarea comenzii>> quit

se se închide programul MATLAB (acelas, i efect îl are s, i comanda exit).

1 În cazul în care programul face un calcul care dureaza prea mult s, i se dores, te intreru-perea procesului (sau pur s, i simplu se dores, te afis, area din nou a prompterului MATLAB),se tasteaza CTRL + C

2 Comenzile în MATLAB sunt case sensitive.

1

Page 6: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2 1. Introducere

Daca daca folosim comanda

clc

atunci s, tergem tot ce a fost scris în Command Window.

Ment,ionam, în plus, ca, daca în Command Window folosim tasta cu sim-bolul ↑ , atunci apare ultima comanda efectuata; daca tastam din nou sim-bolul ↑ apare penultima comanda efectuata s, .a.m.d.; apoi se poate folosi s, itasta ↓ pentru a reveni la comenzi mai noi. Saget,ile → s, i ← pot fi folositepentru a manevra cursorul în cadrul unei comenzi.

De asemenea, sunt utile tastele Delete, Backspace, Home, End careau rolul lor standard. Foarte des utilizata este tasta Escape care s, tergecomanda curenta, care tocmai este scrisa.

Fereastra care indica directorul în care se „lucreaza” este Current Folder(numit eventual Current Directory).

În fereastra Workspace sunt afis, ate toate variabilele definite de noi (pre-cum s, i valorile lor). Ment,ionam ca daca folosim comanda

clear

s, tergem toate variabilele definite pâna atunci (dispar s, i din fereastra Work-space).

În fereastra Command History sunt afis, ate toate comenzile efectuate denoi în Command Window. Printr-un dublu click pe o comanda aceasta aparedin nou în Command Window s, i se executa.

1.2 Comenzile help s, i doc

Pentru a utiliza sistemul de help al MATLAB scriem, în Command Win-dow, comanda

>> help nume_comandas, i vom obt,ine câteva informat,ii ale comenzii data de nume_comanda (o

scurta descriere, sintaxa s, i o lista de subiecte înrudite).De exemplu, comanda>> help expafis, eaza informat,ii despre funct,ia exponent,iala.Daca scriem doar>> help

Page 7: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.3. Variabile si comenzi MATLAB 3

atunci se deschide o lista de categorii3, care la rândul lor (se pot deschi-de) cont,in liste de comenzi.

Daca scriem comanda>> doc nume_comandavom obt,ine, într-o fereastra separata, informat,ii mai detaliate s, i exem-

ple diverse de utilizare a comenzii data de nume_comandaDe exemplu, comanda>> doc expafis, eaza informat,ii mai detaliate s, i exemple de utilizare a funct,iei expo-

nent,iale.

De asemenea, pentru a utiliza sistemul de help al MATLAB se poatedeschide meniul Help al MATLAB (sau se tasteaza F1).

1.3 Variabile si comenzi MATLAB

Numele unei variabile trebuie sa înceapa cu o litera. Aceasta poate fiurmata apoi de orice litera, cifra sau de simboluri underscore (dar maxim 63de caractere).

De asemenea, ment,ionam ca numele variabilelor în MATLAB sunt casesensitive.

În general, definirea s, i numirea unor variabile se poate face în trei mo-duri: ori direct în Command Window, într-un fis, ier de tip script ori utilizândcomanda input (pentru detalii concrete vezi pagina 47).

MATLAB foloses, te variabile speciale (care au nume rezervate ce nu potfi folosite pentru a desemna alte variabile) precum:

Variabila speciala Semnificat,ia

ansnumele dat implicit unui rezultat obt,inut anterior,rezultat ce nu a fost atribuit, în prealabil,unei variabile (answer)

pi numarul π

epscel mai mic numar care adunat la 1 creaza un numardiferit de 1; este precizia de calcul a MATLAB(epsilon; are valoarea 2.220446049250313e-16)

3 Pentru a afis, a s, i continuarea listei de categorii se tasteaza Enter sau Spacebar.

Page 8: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

4 1. Introducere

eps(n) cel mai mic numar care adunat la ncreaza un numar diferit de n

Inf sau inf desemneaza∞(de exemplu, rezultatul pentru 1/0 )

Nan sau nan Not a number; reprezinta o expresie nedefinita(de exemplu, rezultatul pentru 0/0 )

i sau j numarul4complex√−1

intmin cel mai mic întreg (negativ) ce poate fi reprezentat

intmax cel mai mare întreg ce poate fi reprezentat

realmin cel mai mic numar real ce poate fi reprezentat

realmax cel mai mare numar real ce poate fi reprezentat

nargin numarul de argumente de intrare

nargout numarul de argumente de ies, ire

Precizam ca atunci când MATLAB calculeaza o expresie (folosind even-tual alte variabile) va face aceasta folosind toate valorile variabilelor caresunt deja definite s, i obt,inute, pâna la momentul când se efectueaza co-manda.

În cazul în care anumite variabile au fost redefinite, prin comanda clearse revine la valorile implicite.

În MATLAB variabilele sunt definite prin atribuirea unei valori (carepoate fi numar, matrice etc.). Variabila astfel definita poate fi utilizata ulte-rior în definirea altor variabile s, .a.m.d.

Unei variabile deja definite i se poate ulterior atribui alta valoare.

Exemplul 1.1 Comanda

>> 1+2+3

afis, eaza

ans =6

Astfel s-a definit implicit noua variabila ans s, i i s-a atribuit valoarea 6.Aceasta variabila poate fi folosita în calcule viitoare. �

4 Este recomandat sa scriem întotdeauna 1i sau 1j în loc de i sau respectiv j

Page 9: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.3. Variabile si comenzi MATLAB 5

Exemplul 1.2 Comanda

>> a = 1+2+3

afis, eaza

a =6

Astfel s-a definit noua variabila a s, i i s-a atribuit valoarea 6. Aceastavariabila poate fi folosita în calcule viitoare. �

Exemplul 1.3 Comanda

>> total = a*2 + ans

afis, eaza

total =18

Astfel s-a definit noua variabila total s, i i s-a atribuit valoarea 18. �

Exemplul 1.4 Comanda

>> a*2 + ans

afis, eaza

ans =18

Astfel s-a definit noua variabila ans s, i i s-a atribuit valoarea 18. �

Pentru a afis, a valoarea atribuita unei variabile se scrie numele variabileis, i astfel se va afis, a valoarea ei. De asemenea, precizam ca toate variabileles, i valorile lor sunt afis, ate s, i în fereastra Workspace. Comanda clear s, tergetoate variabilele definite pâna atunci (dispar s, i din fereastra Workspace).Daca se scrie doar clear x atunci dispare doar variabila x

Lista tuturor variabilelor se poate vedea s, i daca se scrie comanda whoDaca se scrie comanda whos apare lista cu toate variabilele dar însot,ita

de informat,ii suplimentare. Daca se scrie comanda whos nume varia-bila apare variabila numita dar însot,ita de informat,ii suplimentare.

Daca o comanda este prea lunga sau se dores, te scrierea ei pe doua linii,atunci se scrie ... acolo unde se dores, te sa se rupa comanda, apoi setasteaza Enter, apoi se continua scrierea comenzii.

Page 10: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

6 1. Introducere

Exemplul 1.5 Comanda

>> suma = 1 + 2 + 3 + ...

5 +6 + 7 + 8 + 9 + 10

afis, eaza

suma =

55 �

În anumite situat,ii nu se dores, te afis, area rezultatului. În aceste situat,iise scrie semnul

;

la finalizarea comenzii.Pe o linie de comanda se pot scrie mai multe expresii, dar se vor separa

folosind semnul ,Comenzile cu , la sfârs, it se vor efectua s, i se vor afis, a valorile obt,inute.

Celor cu ; la sfârs, it nu li se vor afis, a valorile obt,inute.

Exemplul 1.6 Comenzile

>> a = 5, b=2*a, c = a + b; d = a + b + c

afis, eaza

a =

5

b =

10

d =

30 �

Prin adaugarea semnului

%

în fat,a unui text acesta va deveni comentariu s, i nu va fi procesat de MAT-LAB.

Formatul implicit de afis, are a valorilor numerice este de 4 zecimale.Mai exista s, i alte formate posibile printre care amintim:

Page 11: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.4. Functii matematice 7

ComandaMATLAB

pi Comentarii

format short 3.1416

4 zecimale(modul implicit)(pentru numereîntre 0.001 s, i 1000,în rest e short e)

format long 3.141592653589793

15 zecimale(pentru numereîntre 0.001 s, i 100,în rest e long e)

format short esauformat shorte

3.1416e+00 4 zecimale s, i douacifre exponent5

format long esauformat longe

3.141592653589793e+00 15 zecimale s, i douacifre exponent

format bank 3.14 2 zecimale

format rat 355/113 aproximat deo fract,ie

Ment,ionam ca modalitatea de afis, are a valorilor nu influent,eaza valoa-rea lor; doar modalitatea de afis, are este schimbata.

1.4 Functii matematice

Operat,iile aritmetice elementare sunt

Operat,ia Simbolul Exemplu

Adunarea + 3.1 + 15

Scaderea − 3.1 - 15

Înmult,irea ∗ 3.1 ∗ 15

5 Scrierea 3.1416e+00 înseamna 3.1416*1000.

Page 12: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8 1. Introducere

Împart,irea(la dreapta)

/ 3.1/15 care este, prin definit,ie, 3.1*15−1

Împart,irea(la stânga)

\ 3.1\15 care este, prin definit,ie, 3.1−1*15

Puterea ^ 3.1 ^15

Expresiile sunt operate de la stânga la dreapta. Ordinea în care se e-fectueaza operat,iile este cea cunoscuta deja: ridicarea la putere (are cel maimare nivel de precedent,a), apoi înmult,irea s, i împart,irea (au acelas, i nivel deprecedent,a) s, i apoi adunarea s, i scaderea (au acelas, i nivel de precedent,a).

Evident, folosirea parantezelor schimba orice ordine implicita (aceastafunct,ioneaza în cadrul unui set de paranteze).

Funct,iile matematice elementare sunt date s, i explicate în Imaginile 1.1– 1.7 de la sfârs, itul acestei sect,iuni.

Exemplul 1.7 Comenzile

>> c_1 = 1-5i, c_2 = 1-5j, c_3 = complex(1,-5)

afis, eaza acelas, i lucru

c_1 =1-5i

c_2 =1-5i

c_3 =1-5i �

Exemplul 1.8 Comanda

>> c_4 = 2*(3-4*sqrt(-1))

afis, eaza

c_4 =6-8i

iar% trebuie sin(.5)*i sau sin(.5)*1i% comanda sin(.5)i nu are nici o semnificatie>> c_5 = 2-sin(.5)*1i

afis, eaza

Page 13: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.4. Functii matematice 9

c_5 =2.0000 - 0.4794i �

Exemplul 1.9 Comenzile

>> c_5r = real(c_5), c_5i = imag(c_5)

afis, eaza

c_5r =2.0000

c_5i =0.4794

iar>> c_5a = abs(c_5)

afis, eaza

c_5a =2.0567

iar>> c_5unghi_r = angle(c_5) % unghiul in radiani

afis, eaza

c_5unghi_r =0.2353

iar% unghiul in grade>> c_5unghi_g = c_5unghi_r * 180/pi

afis, eaza

c_5unghi_g =13.4802 �

Exemplul 1.10 Comenzile

% valoarea lui y se va obtine in radiani>> x = sqrt(2)/2 ; y = asin(x)

afis, eaza

y =0.7854

iar>> y_g = y * 180/pi % valoarea lui y in grade

Page 14: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

10 1. Introducere

afis, eaza

y_g =45 �

Exemplul 1.11 Avem urmatoarele comenzi de rotunjire a unui numar real:Comanda fix(x) reprezinta cel mai apropiat întreg de x înspre 0

Comanda floor(x) reprezinta cel mai apropiat întreg de x înspre−∞(cel mai mare întreg din stânga lui x, adica partea întreaga a lui x)Comanda ceil(x) reprezinta cel mai apropiat întreg de x înspre +∞(cel mai mic întreg din dreapta lui x)Comanda round(x) reprezinta cel mai apropiat întreg de x

Astfel

>> x = 2.2; y = 2.6; z = -2.2; w = -2.6;>> x_1=fix(x), x_2=floor(x), x_3=ceil(x),>> x_4=round(x)

afis, eaza

x_1 = 2 x_2 = 2 x_3 = 3 x_4 = 2

iar

>> y_1=fix(y), y_2=floor(y), y_3=ceil(y),>> y_4=round(y)

afis, eaza

y_1 = 2 y_2 = 2 y_3 = 3 y_4 = 3

iar

>> z_1=fix(z), z_2=floor(z), z_3=ceil(z),>> z_4=round(z)

afis, eaza

z_1 = -2 z_2 = -3 z_3 = -2 z_4 = -2

iar

>> w_1=fix(w), w_2=floor(w), w_3=ceil(w),>> w_4=round(w)

afis, eaza

w_1 = -2 w_2 = -3 w_3 = -2 w_4 = -3 �

Page 15: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.4. Functii matematice 11

Exemplul 1.12 Comanda

% r = mod(a,b) reprezinta restul% impartirii lui a la b% (numita si impartirea a modulo b)% cu valoarea data de r = a - b.*floor(a./b)>> a = mod(5,-3), b = mod(-5,3)

afis, eaza

a =-1

b =1

deoarece floor(-5/3)=-2iar a = 5− (−3) · (−2) = −1 iar b = (−5)− 3 (−2) = 1. �

Exemplul 1.13 Comanda

% r = rem(a,b) reprezinta restul% impartirii lui a la b% cu valoarea data de r = a - b.*fix(a./b)>> a = rem(5,-3), b = rem(-5,3)

afis, eaza

a =2

b =-1

deoarece fix(-5/3)=-2iar a = 5− (−3) · (−1) = 2 iar b = (−5)− 3 (−1) = −2. �

Exemplul 1.14 Comanda mod poate fi utilizata pentru a verifica daca unnumar este par sau nu (paritate înseamna mod(a,2)==0 ).

>> a = 7; rest1 = mod(a,2), rest2 = mod(-a,2)

afis, eaza

rest1 =1

rest2 =1

deoarece floor(7/2)=3 s, i floor(-7/2)=-4deci 7− 2 · 3 = 1 iar −7− 2 · (−4) = 1. �

Page 16: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

12 1. Introducere

Imaginea 1.1: Functii trigonometrice

Section 2.7 Mathematical Functions 33

These commands find the angle where the sine function has a value of 13/3. Note, again, that MATLAB uses radians, not degrees, in trigonometric functions. Other examples include the following:

>> y = sqrt(3^2 + 4^2) % show 3-4-5 right triangle relationship

y =

5

>> y = rem(23,4) % remainder function, 23/4 has a remainder of 3

y =

3

>> x = 2.6, y1 = fix(x), y2 = floor(x), y3 = ceil(x), y4 = round(x)

x =

2.6000

y1 =

2

y2 =

2

y3 =

3

y4 =

3

Trigonometric Function Description

acos Inverse cosine returning radians

acosd Inverse cosine returning degrees

acosh Inverse hyperbolic cosine returning radians

acot Inverse cotangent returning radians

acotd Inverse cotangent returning degrees

acoth Inverse hyperbolic cotangent returning radians

acsc Inverse cosecant returning radians

acscd Inverse cosecant returning degrees

acsch Inverse hyperbolic cosecant returning radians

asec Inverse secant returning radians

asecd Inverse secant returning degrees

Page 17: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.4. Functii matematice 13

Imaginea 1.2: Functii trigonometrice (continuare)34 Chapter 2 Basic Features

Trigonometric Function Description

asech Inverse hyperbolic secant returning radians

asin Inverse sine returning radians

asind Inverse sine returning degrees

asinh Inverse hyperbolic sine returning radians

atan Inverse tangent returning radians

atand Inverse tangent returning degrees

atanh Inverse hyperbolic tangent returning radians

atan2 Four-quadrant inverse tangent returning radians

cos Cosine returning radians

cosd Cosine of argument in degrees

cosh Hyperbolic cosine returning radians

cot Cotangent returning radians

cotd Cotangent of argument in degrees

coth Hyperbolic cotangent returning radians

csc Cosecant returning radians

cscd Cosecant of argument in degrees

csch Hyperbolic cosecant returning radians

hypot Square root of sum of squares

sec Secant returning radians

secd Secant of argument in degrees

sech Hyperbolic secant returning radians

sin Sine returning radians

sind Sine returning degrees

sinh Hyperbolic sine returning radians

tan Tangent returning radians

tand Tangent returning degrees

tanh Hyperbolic tangent returning radians

Page 18: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

14 1. Introducere

Imaginea 1.3: Functii exponentiale si putereSection 2.7 Mathematical Functions 35

Exponential Function Description

^ Power

exp Exponential

expm1 Exponential minus 1 [i.e., exp(x) � 1]

log Natural logarithm

log10 Base 10 logarithm

log1p Natural logarithm of x � 1 [i.e., log(x � 1)]

log2 Base 2 logarithm and floating-point number dissection

nthroot nth real root of real numbers

pow2 Base 2 power and floating-point number scaling

reallog Natural logarithm limited to real nonnegative values

realpow Power limited to real-valued arguments

realsqrt Square root limited to real-valued values

sqrt Square root

nextpow2 Next higher power of 2

Complex Function Description

abs Absolute value or magnitude

angle Phase angle in radians

conj Complex conjugate

imag Imaginary part

real Real part

unwrap Unwraps phase angle

isreal True for real values

cplxpair Sorts vector into complex conjugate pairs

complex Forms complex number from real and imaginary parts

sign Signum function

Imaginea 1.4: Functii complexe

Section 2.7 Mathematical Functions 35

Exponential Function Description

^ Power

exp Exponential

expm1 Exponential minus 1 [i.e., exp(x) � 1]

log Natural logarithm

log10 Base 10 logarithm

log1p Natural logarithm of x � 1 [i.e., log(x � 1)]

log2 Base 2 logarithm and floating-point number dissection

nthroot nth real root of real numbers

pow2 Base 2 power and floating-point number scaling

reallog Natural logarithm limited to real nonnegative values

realpow Power limited to real-valued arguments

realsqrt Square root limited to real-valued values

sqrt Square root

nextpow2 Next higher power of 2

Complex Function Description

abs Absolute value or magnitude

angle Phase angle in radians

conj Complex conjugate

imag Imaginary part

real Real part

unwrap Unwraps phase angle

isreal True for real values

cplxpair Sorts vector into complex conjugate pairs

complex Forms complex number from real and imaginary parts

sign Signum function

Page 19: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

1.4. Functii matematice 15

Imaginea 1.5: Functii de rotunjire36 Chapter 2 Basic Features

Rounding and Remainder Function

Description

fix Rounds toward zero

floor Rounds toward negative infinity

ceil Rounds toward positive infinity

round Rounds toward nearest integer

mod Modulus or signed remainder

rem Remainder after division

idivide Integer division with rounding option

sign Signum function

Coordinate Transformation Function

Description

cart2sph Cartesian to spherical

cart2pol Cartesian to cylindrical or polar

pol2cart Cylindrical or polar to Cartesian

sph2cart Spherical to Cartesian

Number Theoretic Function Description

factor Prime factors

isprime True for prime numbers

primes Generates list of prime numbers

gcd Greatest common divisor

lcm Least common multiple

rat Rational approximation

rats Rational output

perms All possible combinations

nchoosek All combinations of N elements taken K at a time

factorial Factorial function

Imaginea 1.6: Functii de transformari de coordonate

36 Chapter 2 Basic Features

Rounding and Remainder Function

Description

fix Rounds toward zero

floor Rounds toward negative infinity

ceil Rounds toward positive infinity

round Rounds toward nearest integer

mod Modulus or signed remainder

rem Remainder after division

idivide Integer division with rounding option

sign Signum function

Coordinate Transformation Function

Description

cart2sph Cartesian to spherical

cart2pol Cartesian to cylindrical or polar

pol2cart Cylindrical or polar to Cartesian

sph2cart Spherical to Cartesian

Number Theoretic Function Description

factor Prime factors

isprime True for prime numbers

primes Generates list of prime numbers

gcd Greatest common divisor

lcm Least common multiple

rat Rational approximation

rats Rational output

perms All possible combinations

nchoosek All combinations of N elements taken K at a time

factorial Factorial function

Imaginea 1.7: Functii din teoria numerelor

36 Chapter 2 Basic Features

Rounding and Remainder Function

Description

fix Rounds toward zero

floor Rounds toward negative infinity

ceil Rounds toward positive infinity

round Rounds toward nearest integer

mod Modulus or signed remainder

rem Remainder after division

idivide Integer division with rounding option

sign Signum function

Coordinate Transformation Function

Description

cart2sph Cartesian to spherical

cart2pol Cartesian to cylindrical or polar

pol2cart Cylindrical or polar to Cartesian

sph2cart Spherical to Cartesian

Number Theoretic Function Description

factor Prime factors

isprime True for prime numbers

primes Generates list of prime numbers

gcd Greatest common divisor

lcm Least common multiple

rat Rational approximation

rats Rational output

perms All possible combinations

nchoosek All combinations of N elements taken K at a time

factorial Factorial function

Page 20: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 21: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 2

Matrice

Elementul de baza al MATLAB este tabloul (array). Chiar s, i o variabilascalara este vazut tot ca o un tablou de tip 1× 1. Cel mai des utilizate sunttablourile bidimensionale, numite matrice, care au elementele aranjate înmlinii s, i n coloane. Vectorii de tip linie (i.e. m = 1) s, i vectorii de tip coloana(i.e. n = 1) sunt cazuri particulare de matrice bidimensionale. Tablourile s, idimensiunile lor nu sunt declarate în mod explicit.

În MATLAB exista mai multe modalitat,i prin care se poate genera o ma-trice. Modalitatea explicita înseamna utilizarea parantezelor patrate întrecare se precizeaza fiecare element al matricei; trecerea de la o coloana la altase face adaugând semnul , sau un spat,iu gol iar trecerea de la o linie la altase face adaugând semnul ; sau tastând Enter.

Elementele unei matrice pot fi numere reale sau numere complexe sauorice alte expresii matematice.

Exemplul 2.1 Comanda>> a = [1 ; 2 ; 3 ; 4]

afis, eaza vectorul:a =

1

2

3

4�

Exemplul 2.2 Comanda

17

Page 22: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

18 2. Matrice

>> A = [1 2 ; 3 4]

sau>> A = [1 2

3 4]

sau>> A = [1, 2 ; 3, 4]

afis, eaza acelas, i lucru:A =

1 2

3 4�

Exemplul 2.3 Comenzile>> a = [1 2 3 4];

>> size(a)

nu afis, eaza vectorul a, dar afis, eaza marimea lui, adica afis, eaza un vectorcu doua elemente: numarul de linii s, i numarul de coloane al vectorului a

ans =

1 4

iar comanda>> length(a)

afis, eaza marimea vectorului aans =

4 �

Exemplul 2.4 Comenzile>> A = [1 2 ; 3 4];

>> size(A)

nu afis, eaza matricea A, dar afis, eaza marimea matricei A, adica afis, eazaun vector cu doua elemente: numarul de linii s, i numarul de coloane

ans =

2 2 �

Page 23: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

19

Pentru a produce transpusa, rangul, determinantul s, i inversa avem ladispozit,ie comenzile:

ComandaMATLAB

Semnificat,ia

A.’ transpusa matricei A

A’ transpusa conjugata a matricei A(fiecare element al transpusei lui A este s, i conjugat)

rank(A) rangul matricei A

det(A) determinantul matricei A

inv(A) inversa matricei A

A^p este Ap, daca p∈ N∗

A^p este [inv(A)]-p, daca (-p)∈ N∗

A^p este determinata folosind valorile proprii, daca p /∈ Z∗

Exemplul 2.5 Comenzile>> A = [1 2 ; 3 4]; A.’

afis, eaza transpusa matricei Aans =

1 3

2 4

iar>> A’afis, eaza acelas, i lucru. �

Exemplul 2.6 Comenzile>> A = [1-i 2+i ; 3-2i 4-3i]; A.’

afis, eaza transpusa matricei Aans =

1-i 3-2i

2+i 4-3i

iar>> A’

afis, eaza transpusa conjugata a matricei A

Page 24: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

20 2. Matrice

ans =

1+i 3+2i

2-i 4+3i�

MATLAB are un set comenzi care produc matrice cu valori speciale,utile în general sau utile în anumite discipline. Printre acestea amintim:

Comanda MATLAB Semnificat,ia

[ ] o matrice fara cont,inut

zeros(l,c) o matrice cu l linii s, i c coloane6s, icu toate elementele 0

ones(l,c) o matrice cu l linii s, i c coloane s, icu toate elementele 1

eye(l,c) o matrice cu l linii s, i c coloane s, icu 1 pe diagonala s, i 0 în rest

blkdiag(A1,A2,...)o matrice diagonala cu matriceleA1, A2, . . . pe diagonala(s, i în rest doar 0)

repmat(A,l,c) o matrice bloc obt,inuta prin replicareamatricei A pe l linii s, i c coloane

Matricele pot fi construite s, i cu ajutorul altor matrice, adica sub forma deblocuri de alte matrice.

Exemplul 2.7 Comenzile

>> A = [1 2 ; 3 4];

>> B = [A zeros(2,4) ; eye(4,2) ones(4) ; 10:-2:-1]

nu afis, eaza matricea A, dar afis, eaza matricea B. Aceasta este scrisa peblocuri (a fost creata cu ajutorul altor matrice).

B =

6 Daca se doreste o matrice patratica (la toate comenzile din acest tabel), atunci se poaterenunta la scrierea ambelor variabile. De exemplu, daca se scrie zeros(3) se obtine omatrice patratica de dimensiune 3 cu toate elementele 0

Page 25: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

21

1 2 0 0 0 0

3 4 0 0 0 0

1 0 1 1 1 1

0 1 1 1 1 1

0 0 1 1 1 1

0 0 1 1 1 1

10 8 6 4 2 0�

Exemplul 2.8 Comenzile>> A = [1 2 3 ; 4 5 6]; B = [A; -1 -2 -3]

adauga la matricea A linia a 3-a suplimentara:B =

1 2 3

4 5 6

-1 -2 -3�

Exemplul 2.9 Comenzile>> A = [1 2 3 ; 4 5 6]; B = [-1 -2 -3 ; A]

adauga la matricea A o prima linie suplimentara:B =

-1 -2 -3

1 2 3

4 5 6�

Exemplul 2.10 Comenzile>> A = [1 2 3 ; 4 5 6] ; x = [-1 -2]’ ; B = [A , x]

adauga la matricea A coloana a 4-a suplimentara:B =

1 2 3 -1

4 5 6 -2�

Page 26: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

22 2. Matrice

Exemplul 2.11 Comenzile>> A = [1 2 3 ; 4 5 6] ; x = [-1 -2]’ ; B = [x , A]

adauga la matricea A o prima coloana suplimentara:A =

-1 1 2 3

-2 4 5 6�

Exemplul 2.12 Comenzile

>> A = [1 2 ; 3 4]; C = blkdiag(A,ones(2))

afis, eaza matricea C:

C =

1 2 0 0

3 4 0 0

0 0 1 1

0 0 1 1�

Exemplul 2.13 Comenzile

>> A = [1 2 ; 3 4]; D = repmat(A,2,3)

afis, eaza matricea D:

D =1 2 1 2 1 2

3 4 3 4 3 4

1 2 1 2 1 2

3 4 3 4 3 4�

Exemplul 2.14 Daca vrem ca cream o matrice cu acelas, i element peste tot,avem la dispozit,ie mai multe variante. Astfel urmatoarele comenzi (lescriem în ordine: de la cea mai lenta la cea mai rapida):

>> A = pi*ones(2,3), B = pi+zeros(2,3),>> x = pi, C = x(ones(2,3)), D = repmat(pi,2,3)

afis, eaza aceeas, i matrice:

Page 27: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

23

3.1416 3.1416 3.1416

3.1416 3.1416 3.1416�

Simularile din cadrul aplicat,iilor (din matematica, fizica etc.) cer de-seori crearea s, i utilizarea de numere aleatoare. MATLAB are trei comenzi(rand, randn s, i randi) care pot fi folosite pentru obt,inerea de numereaaleatoare:

Comanda MATLAB Semnificat,ia

rand un numar uniform distribuit intre 0 si 1

rand(l,c)o matrice cu l linii s, i c coloane s, icu toate elementele distribuiteuniform între 0 s, i 1

randperm(n)un vector linie cu n elemente care suntpermutari aleatoare ale numerelorde la 1 la n

randn(l,c)

o matrice cu l linii s, i c coloane s, icu toate elementele distribuite normal standard(adica distribut,ia normalade medie 0 s, i dispersie 1)

randi(n) un numar întreg uniform distribuit intre 1 si n

randi(n,l,c)o matrice cu l linii s, i c coloane s, icu toate elementele întregi s, idistribuite uniform între 1 s, i n

Este cunoscut, din cadrul Teoriei Probabilitat,ilor, ca daca se dores, te genera-rea unor elemente distribuite uniform între doua numere reale a s, i b, atuncifolosim relat,ia de legatura: variabila aleatoare X este distribuita uniformîntre 0 s, i 1 daca s, i numai daca (b− a)X + a este distribuita uniform între as, i b.

De asemenea, variabila aleatoare X este distribuita normal standard,adica de medie 0 s, i dispersie (variant,a) 1, daca s, i numai daca

√σ2X +m

este distribuita normal de medie m s, i dispersie (variant,a) σ2.

Exemplul 2.15 Comenzile>> A = rand(2,3) , B = 9*rand(2,3)+1

Page 28: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

24 2. Matrice

genereaza o matrice A de tip 2 × 3 cu elementele fiind numere realedistribuite uniform între 0 s, i 1 s, i o matrice B de tip 2 × 3 cu elementelefiind numere reale distribuite uniform între 1 s, i 10

A =0.96 0.80 0.42

0.49 0.14 0.91B =

7.35 3.49 1.87

1.29 1.42 8.41�

Exemplul 2.16 Comenzile>> A = randn(2,3) , B = 0.2*randn(2,3)+10

genereaza o matrice A de tip 2 × 3 cu elementele fiind numere realedistribuite normal standard (distribuite normal, cu media 0 s, i dispersia1 ) s, i o matrice B de tip 2 × 3 cu elementele fiind numere reale distribuitenormal cu media 10 s, i dispersia 0.22. �

Exemplul 2.17 Comenzile>> A = randi(10,2,3)

genereaza o matrice A de tip 2 × 3 cu elementele fiind numere întregidistribuite uniform între 1 s, i 10. �

Pentru a construi tablouri sunt utile s, i comenzile:

ComandaMATLAB

Semnificat,ia

x = a:b se genereaza un vector linie cu numerede la a la b (numere reale) s, i cu pasul 1

x = a:h:b se genereaza un vector linie cu numerede la a la b (numere reale) s, i cu pasul h

x = linspace(a,b,n) se genereaza un vector liniecu n numere echidistante de la a la b

x = logspace(a,b,n) se genereaza un vector linie cu n numerede la 10a la 10b s, i spat,iate logaritmic7

7 De fapt, se genereaza n numere echidistante de la a la b: a1=a,a2,...,an−1,an=bs, i apoi se scrie vectorul linie 10a1 ,10a2 ,10a3 ,. . . ,10an .

Page 29: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

25

Exemplul 2.18 Comanda>> x = 0:3:10

afis, eaza un vector linie, cu elemente echidistante de la 0 la 10, cu pasul3:

x =

0 3 6 9

Comanda>> x = (0:0.1:1)*pi

afis, eaza un vector linie cu 11 coloane, cu elemente echidistante de la 0la 1, cu pasul 0.1 s, i apoi fiecare element al vectorului înmult,it cu π. �

MATLAB are un set comenzi prin care se pot manipula matricele. Printreacestea amintim:

Comanda MATLAB Semnificat,ia

flipud(A)rotirea matricei A în jurulaxei orizontale de simetrie(flip up-down)

fliplr(A)rotirea matricei A în jurulaxei verticale de simetrie(flip left-right)

rot90(A) rotirea matricei A cu 90 de gradeîn sens direct trigonometric

rot90(A,2) rotirea matricei A cu 2*90 de gradeîn sens direct trigonometric

reshape(A,m,n)

doar o matrice A care are m×n elementepoate fi rearanjata în m linii s, i n coloane(se scriu toate coloanele lui A, începând cu prima,una sub alta s, i apoi se rearanjeaza elementele)

diag(A)rezultatul este un vector coloanacu diagonala matricei A(A nu e neaparat patratica)

diag(a)rezultatul este o matrice diagonalacu vectorul a pus pe diagonala(restul elementelor sunt 0)

Page 30: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

26 2. Matrice

triu(A)

extrage partea triunghiular superioaradin matricea A (nu neaparat patratica)(restul elementelor sunt 0)(upper triangular)

tril(A)

extrage partea triunghiular inferioaradin matricea A (nu neaparat patratica)(restul elementelor sunt 0)(lower triangular)

Exemplul 2.19 Comenzile

>> A = [1 2 3 ; 4 5 6], B = reshape(A,3,2)

afis, eaza

A =

1 2 3

4 5 6

apoi produce matricea coloana cu toate coloanele lui A puse una subalta apoi le reordoneaza:

B =

1 5

4 3

2 6�

Exemplul 2.20 Comenzile

>> A = 1:12 ;>> B = A’ ; C = reshape(B,3,4)

afis, eaza

C =

1 4 7 10

2 5 8 11

3 6 9 12

Comanda D = reshape(A,3,4) va afis, a aceeas, i matrice C.Iar comanda

Page 31: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

27

>> E = C’

afis, eaza

E =

1 2 3

4 5 6

7 8 9

10 11 12�

Exemplul 2.21 Comenzile

>> A = 1:12 ;>> B = A’ ; C = reshape(B,4,3)

afis, eaza

C =

1 5 9

2 6 10

3 7 11

4 8 12

Comanda D = reshape(A,4,3) va afis, a aceeas, i matrice C.Iar comanda

>> E = C’

afis, eaza

E =

1 2 3 4

5 6 7 8

9 10 11 12�

Exemplul 2.22 Comenzile>> A = reshape(1:12,4,3), B = A’afis, eaza

A =

Page 32: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28 2. Matrice

1 5 9

2 6 10

3 7 11

4 8 12

B =1 2 3 4

5 6 7 8

9 10 11 12�

Exemplul 2.23 Comenzile

>> A = [1 2 3 ; 4 5 6 ; 7 8 9];>> b = diag(A)>> C = diag(diag(A))>> D = A-diag(diag(A))>> E = triu(A)-diag(diag(A))

afis, eaza vectorul b dat de diagonala lui A:b =

1

5

9

s, i matricea C (matricea A din care am pastrat doar diagonala ei):C =

1 0 0

0 5 0

0 0 9

s, i matricea D (matricea A fara diagonala ei):D =

0 2 3

4 0 6

7 8 0

precum s, i partea triunghiular superioara a matricei A dar fara diago-nala principala:

Page 33: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

29

E =

0 2 3

0 0 6

0 0 0�

Avem urmatoarele generalizari în ceea ce proves, te diag s, i triu s, itril

ComandaMATLAB

Semnificat,ia

diag(a,k)

rezultatul este o matrice diagonalacu vectorul a pus pe diagonala principala translata cuk unitat,i deasupra (pentru k>0)sau cu k unitat,i dedesubt (pentru k<0)(restul elementelor sunt 0)

diag(A,k)rezultatul este un vector coloanacu diagonala k a matricei A(A nu e neaparat patratica)

triu(A,k)extrage partea triunghiular superioaradiagonalei k a matricei A (nu neaparat patratica)(restul elementelor sunt 0)

tril(A,k)extrage partea triunghiular inferioaradiagonalei k a matricei A (nu neaparat patratica)(restul elementelor sunt 0)

Exemplul 2.24 Comenzile>> a = [1 2 3];

>> A_1 = diag(a), A_2 = diag(a,1), A_3 = diag(a,-2)

afis, eaza matricele:A_1 =

1 0 0

0 2 0

0 0 3

A_2 =

Page 34: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

30 2. Matrice

0 1 0 0

0 0 2 0

0 0 0 3

0 0 0 0

A_3 =

0 0 0 0 0

0 0 0 0 0

1 0 0 0 0

0 2 0 0 0

0 0 3 0 0�

2.1 Utilizarea semnului : în manipularea matricelor

Elementele unui vector a pot fi apelate scriind a(i) iar elementele uneimatrice A pot fi apelate scriind A(i,j)

Mai exista s, i varianta de apelare A(n), unde n este indexul elementuluimatricei A. Indexarea se face astfel: se scriu toate coloanele lui A, începândcu prima, una sub alta s, i apoi se numeroteaza elementele; adica elementelematricei coloana A(:).

Exemplul 2.25 Comenzile

>> A = 1:12 ; B = A’ ; C = reshape(B,3,4);>> elem1 = C(1,3) , elem2 = C(7)

afis, eaza aceeas, i valoare:

elem1 = 7 s, i elem2 = 7 �

Daca se dores, te o întreaga submatrice a matricei A, atunci se scrie

A(i:j,k:l)

s, i se obt,ine submatricea cu elementele de la linia i pâna j s, i de la coloanak pâna l

Daca se dores, te coloana c a lui A, atunci se scrie

A(:,c)

Page 35: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.1. Utilizarea semnului : în manipularea matricelor 31

iar daca se dores, te linia l a lui A, atunci se scrie

A(l,:)

iar daca se scrieA(:)

se obt,in un vector coloana cu toate elementele matricei A (este exact coloanape care comanda reshape(A,m,n) o rearanjeaza apoi pe m linii s, i n coloa-ne).

Daca se scrieA(:,k:l)

se obt,ine partea matricei A de la coloana k pâna la coloana l iar daca sescrie

A(i:j,:)

se obt,ine partea matricei A de la linia i pâna la linia j.Similar, daca se scrie

a(k:l)

se obt,ine partea vectorului a de la elementul k pâna la elementul l.

Exemplul 2.26 Comanda>> x = (0:0.1:1)*pi , x_2 = x(2)afis, eaza al 2-lea element al vectorului x:x_2 =

3.142Comanda>> x_1_3 = x(1:3)

afis, eaza elementele vectorului x de la primul pâna la al 3-lea:x_1_3 =

0 0.3142 0.6283

Comanda>> x_6_end = x(6:end)

afis, eaza elementele vectorului x de la al 6-lea pâna la ultimul.iar comanda>> x_6_11 = x(6:11)

afis, eaza acelas, i lucru (vectorul are 11 elemente). �

Page 36: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

32 2. Matrice

Exemplul 2.27 Comenzile (vezi Exemplele 2.20–2.22)>> A = (reshape(1:12,4,3))’ ; B = A(:,2:3)

afis, eaza o parte a matricei A, cea de la linia 1 pâna la linia 3 s, i de lacoloana a 2-a pâna la coloana a 3-a:

B =

2 3

6 7

10 11

(comanda B = A(1:3,2:3) are acelas, i efect). �

Exemplul 2.28 Comenzile>> A = (reshape(1:12,4,3))’ ; x = [0 0 0]’;>> B = [ A(:,1:2) , x , A(:,3:4) ]

insereaza coloana x între coloanele 2 s, i 3 ale matricei A (am compuso noua matrice din coloanele 1-2 din A, apoi am adaugat coloana x, apoicoloanele 3-4):

B =

1 2 0 3 4

5 6 0 7 8

9 10 0 11 12

(comanda B=[A(1:3,1:2),x,A(1:3,3:4)] are acelas, i efect). �

Exemplul 2.29 Comenzile>> A = (reshape(1:12,4,3))’ ; x = [0 0 0 0];>> B = [ A(1:2,:) ; x ; A(3,:)]

insereaza linia x între liniile 2 s, i 3 ale matricei A (am compus o nouamatrice din liniile 1-2 din A, apoi am adaugat linia x, apoi linia 3):

B =

1 2 3 4

5 6 7 8

0 0 0 0

9 10 11 12

(comanda B=[A(1:2,1:4);x;A(3,1:4)] are acelas, i efect). �

Page 37: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.1. Utilizarea semnului : în manipularea matricelor 33

Alte modalitat,i prin care MATLAB poate crea s, i manipula matrice suntdate de urmatoarele exemple concrete, dar importante.

Exemplul 2.30 Comenzile>> a = 7 ; a(ones(3,4))

afis, eaza o matrice de tip 3× 4 cu valoarea a pe orice pozit,ieans =

7 7 7 7

7 7 7 7

7 7 7 7�

Exemplul 2.31 Comenzile>> a = 12:-1:5 ; a(3) = 99

afis, eaza vectorul a cu elementul de pe pozit,ia 3 înlocuit cu 99:a =

12 11 99 9 8 7 6 5�

Exemplul 2.32 Comenzile>> a = 1:4 ; a(8) = 99

afis, eaza vectorul a cu elementul de pe pozit,ia 8 înlocuit cu 99; dacaaceste pozit,ii nu exista în vectorul a, atunci se extinde vectorul punând 0 :

a =

1 2 3 4 0 0 0 99

Similar, comanda>> b(8) = 99

afis, eaza vectorul b (care nu a fost definit în prealabil) cu elementul depe pozit,ia 8 înlocuit cu 99; daca aceste pozit,ii nu exista în vectorul b,atunci se extinde vectorul punând 0 :

b =

0 0 0 0 0 0 0 99�

Exemplul 2.33 Comenzile>> A = (reshape(1:12,4,3))’ ; A(2,3) = 99

afis, eaza matricea A cu elementul de pe pozit,ia (2, 3) înlocuit cu 99:

Page 38: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

34 2. Matrice

A =

1 2 3 4

5 6 99 8

9 10 11 12�

Exemplul 2.34 Comenzile>> A = (reshape(1:12,4,3))’ ; A(2,7) = 99

afis, eaza matricea A cu elementul de pe pozit,ia (2, 7) înlocuit cu 99;daca aceasta pozit,ie nu exista în matricea A, atunci se extinde matricea Apunând 0 în rest:

B =

1 2 3 4 0 0 0

5 6 7 8 0 0 99

9 10 11 12 0 0 0�

Exemplul 2.35 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:) = 99

afis, eaza matricea A cu toate elementele înlocuite cu 99:A =

99 99 99 99

99 99 99 99

99 99 99 99�

Exemplul 2.36 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,3) = 99

afis, eaza matricea A cu coloana a 3-a înlocuita cu 99:A =

1 2 99 4

5 6 99 8

9 10 99 12

(funct,ioneaza s, i varianta de înlocuire a unei linii). �

Page 39: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.1. Utilizarea semnului : în manipularea matricelor 35

Exemplul 2.37 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,3)=[99 100 101]

afis, eaza matricea A cu coloana a 3-a înlocuita cu coloana [99 100101]’:

A =

1 2 99 4

5 6 100 8

9 10 101 12

(funct,ioneaza s, i varianta de înlocuire a unei linii).Acelas, i efect îl are s, i comanda A(:,3)=[99 100 101]’ �

Exemplul 2.38 Comenzile>> A = (reshape(1:12,4,3))’ ;>> A(:,3:4)=[99 100 101; 0 0 0]’

afis, eaza matricea A cu coloanele de la a 3-a pâna la a 4-a înlocuite cumatricea [99 100 101; 0 0 0]’:

A =

1 2 99 0

5 6 100 0

9 10 101 0

(funct,ioneaza s, i varianta de înlocuire a unor linii). �

Exemplul 2.39 Comenzile>> a = 1:4 ; a(5:7) = 10:3:18

afis, eaza vectorul a cu elementele de la al 5-lea pâna la al 7-lea suntînlocuite cu [10 13 16]; daca aceste pozit,ii nu exista în vectorul a, a-tunci se extinde vectorul (eventual se adauga s, i 0 acolo unde nu este pre-cizata nici o valoare):

a =

1 2 3 4 10 13 16�

Exemplul 2.40 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,6) = [99 100 101]

Page 40: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

36 2. Matrice

afis, eaza matricea A cu coloana a 6-a înlocuita cu coloana [99 100101]’; daca aceasta pozit,ie nu exista în matricea A, atunci se extinde ma-tricea A punând 0 în rest:

A =

1 2 3 4 0 99

5 6 7 8 0 100

9 10 11 12 0 101

(funct,ioneaza s, i varianta de adaugare a unei linii noi). �

Exemplul 2.41 Comenzile>> a = 1:12 ; a(2:4) = [ ]

afis, eaza vectorul a cu elementele de la 2 pâna la 4 eliminate:a =

1 5 6 7 8 9 10 11 12�

Exemplul 2.42 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,3) = [ ]

afis, eaza matricea A cu coloana a 3-a eliminata:A =

1 2 4

5 6 8

9 10 12�

Exemplul 2.43 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,1:2) = [ ]

afis, eaza matricea A cu coloanele de la 1 pâna la 2 eliminate:A =

3 4

7 8

11 12�

Exemplul 2.44 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,[1 3]) = [ ]

Page 41: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.1. Utilizarea semnului : în manipularea matricelor 37

afis, eaza matricea A cu coloanele 1 s, i 3 eliminate:A =

2 4

6 8

10 12�

Exemplul 2.45 Comenzile>> A = (reshape(1:12,4,3))’ ; A(2,:) = [ ]

afis, eaza matricea A cu linia a 2-a eliminata:A =

1 2 3 4

9 10 11 12�

Exemplul 2.46 Comenzile>> A = (reshape(1:12,4,3))’ ; A(2:3,:) = [ ]

afis, eaza matricea A cu liniile de la 2 pâna la 3 eliminate:A =

1 2 3 4�

Exemplul 2.47 Comenzile>> A = (reshape(1:12,4,3))’ ; A([1 3],:) = [ ]

afis, eaza matricea A cu liniile 1 s, i 3 eliminate:A =

5 6 7 8�

Exemplul 2.48 Comenzile>> A = (reshape(1:12,4,3))’ ; A(:,[2,4])=A(:,[4,2])

afis, eaza matricea A cu coloanele 2 s, i 4 schimbate între ele:A =

1 4 3 2

5 8 7 6

9 12 11 10

(funct,ioneaza s, i varianta de schimbare între ele a doua linii). �

Page 42: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

38 2. Matrice

2.2 Operarea element cu element

Operat,iile cu matrice sunt aceleas, i cu cele date de tabelul de la pagina7, din cazul numerelor. Ment,ionam ca operat,iile pot fi efectuate atât în sensmatriceal cât s, i element cu element (în ambele cazuri dimensiunile trebuiesa fie astfel încât operat,iile sa poata fi facute).

Precizam doar ca, în cazul împart,irii,

ComandaMATLAB

Semnificat,ia

A/B este8solut,ia X a sistemului X*B = A

A\B este9solut,ia X a sistemului A*X = B

În cazul operat,iilor element cu element, fie doua matrice A = (ai,j) s, iB = (bi,j) . Atunci

ComandaMATLAB10 Semnificat,ia

A.*Brezultatul este o matrice cu elementele ai,j · bi,j(se poate ca B sa fie s, i scalar)

A.^B rezultatul este o matrice cu elementele (ai,j)bi,j

(se poate ca B sa fie s, i scalar)

A./B rezultatul este o matrice cu elementele ai,j/bi,j := ai,j · b−1i,j(se poate ca B sa fie s, i scalar)

A.\B rezultatul este o matrice cu elementele ai,j\bi,j := a−1i,j · bi,j(se poate ca B sa fie s, i scalar)

Pentru a obt,ine produsul scalar sau cel vectorial dintre doi vectori x s, i yavem la dispozit,ie comenzile:

8 Înmult,ind cu B^(-1) în partea dreapta obt,inem ca rezultatul X este matriceaA*B^(-1).

9 Înmult,ind cu A^(-1) în partea stânga obt,inem ca rezultatul X este matricea A^(-1)*B.Cu toate acestea, pentru a determina vectorul X, MATLAB nu calculeaza inversa A^(-1)(care foloses, te o metoda mai put,in precisa) ci aplica o metoda numerica care rezolva efectivsistemul A*X = B, mai precis metoda de eliminare a lui Gauss (diferent,ele de precizie sevad daca matricele sunt de dimensiuni mari).

10 Nu trebuie lasat un spat,iu liber înainte de operator. Astfel, comanda A. *B va pro-duce o eroare.

Page 43: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.2. Operarea element cu element 39

ComandaMATLAB

Semnificat,ia

x*y’rezultatul este înmult,irea liniei x cu coloana y’(adica produsul scalar dintre vectorii linie x s, i y )

dot(x,y) rezultatul este produsul scalar dintre vectorii x s, i y

cross(x,y) rezultatul este produsul vectorial dintre vectorii x s, i y

Exemplul 2.49 Comenzile

>> A = [1 2 3 ; 4 5 6 ; 7 8 9]; dif = A - 5*A

afis, eaza diferent,a matricelor A cu 5*A.

Comanda

>> a = 1./A

afis, eaza matricea cu elementele 1/ai,j = (ai,j)−1 :

a =

1.0000 0.5000 0.3333

0.2500 0.2000 0.1667

0.1429 0.1250 0.1111

Comenzile

>> B = ones(3); b = B./A

afis, eaza matricea cu elementele bij/ai,j = bij (ai,j)−1 :

b =

1.0000 0.5000 0.3333

0.2500 0.2000 0.1667

0.1429 0.1250 0.1111

Comanda

>> c = A^2

afis, eaza patratul matricei matricei A; trebuie ca dimensiunile sa fie astfelîncât sa se poate efectua înmult,irea matricelor A cu A.

Comanda

Page 44: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

40 2. Matrice

>> d = A.^2

afis, eaza matricea A cu fiecare element ridicat la patrat:d =

1 4 9

16 25 36

49 64 81

Comanda

>> e = A.^(-1)

afis, eaza matricea cu elementele (ai,j)−1 .

Comanda

>> f = 2.^A

afis, eaza matricea cu elementele 2ai,j .

Comanda

>> g = A.^B

afis, eaza matricea cu elementele (ai,j)bi,j . �

2.3 Analiza datelor

MATLAB poate realiza o analiza statistica a seturilor de date. Acestedate sunt, mai întâi, organizate s, i reprezentate în tablouri.

Ca o convent,ie, fiecare coloana a tabloului reprezinta rezultatele ma-surarii aceleas, i variabile pentru fiecare element al es, antionului (al select,ieistatistice) considerat (de exemplu, punctajele obt,inute la disciplina D1 decatre fiecare elev în parte din es, antionul considerat) iar fiecare linie reprez-inta un set observat,ii citite pentru un element al es, antionului (de exem-plu, punctajele obt,inute la disciplinele D1, D2, D3,. . . de catre un elev dines, antionul considerat).

Printre comenzile legate de analiza datelor amintim pe urmatoarele.Acestea se pot aplica atât unei matrice A, cât s, i unui vector a (linie saucoloana). În caz ca se aplica unei matrice, aceste comenzi act,ioneaza asuprafiecarei coloane în parte; astfel rezultatul va fi un vector linie (cu un numarde coloane egal cu coloanele matricei A).

Page 45: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.3. Analiza datelor 41

Comanda MATLAB Semnificat,ia

max(A) maximul elementelor fiecarei coloane a matricei A

min(A) minimul elementelor fiecarei coloane a matricei A

mean(A) media aritmetica a elementelor fiecareicoloane a matricei A

median(A) mediana elementelor fiecarei coloane a matricei A

var(A) dispersia (sau variant,a) elementelor fiecareicoloane a matricei A

std(A) deviat,ia standard elementelor fiecareicoloane a matricei A

cov(A) matricea cu coeficient,ii de covariant,aasociat,i coloanelor matricei A

corrcoef(A) matricea cu coeficient,ii de corelat,ieasociat,i coloanelor matricei A

sort(A) aranjarea în ordine crescatoare a elementelorfiecarei coloane a matricei A

sum(A) suma elementelor fiecarei coloane a matricei A

cumsum(A) suma cumulata a elementelor fiecarei coloanea matricei A (i.e.

∑ij=1 xj )

prod(A) produsul elementelor fiecarei coloane a matricei A

cumprod(A) produsul cumulat al elementelor fiecarei coloanea matricei A (i.e.

∏ij=1 xj )

diff(A) diferent,a elementelor fiecarei coloane a matricei A(i.e. x2 − x1, x3 − x2, . . . , xn − xn−1)

Exemplul 2.50 Comenzile

>> a = rand(1,5);>> min = min(a) , max = max(a) , media = mean(a)>> cresc = sort(a) , descr = -sort(-a)>> suma = sum(a) , sumacumul = cumsum(a)

afis, eaza

Page 46: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

42 2. Matrice

a =

0.44 0.38 0.77 0.80 0.19min =

0.19max =

0.80media =

0.51cresc =

0.19 0.38 0.44 0.77 0.80descr =

0.80 0.77 0.44 0.38 0.19suma =

2.57sumacumul =

0.19 0.57 1.01 1.78 2.57�

Exemplul 2.51 În ceea ce prives, te comanda sort, pentru a obt,ine aran-jarea în ordine descrescatoare, am folosit comanda -sort(-a)

Dar comanda sort permitea indicarea modului cum sa faca aranjarea.Astfel, comanda

>> cresc2 = sort(a,’ascend’)are acelas, i efect cu comanda cresc = sort(a), adicacresc2 =

0.19 0.38 0.44 0.77 0.80

iar comanda>> descr2 = sort(a,’descend’)are acelas, i efect cu comanda descr = -sort(-a), adicadescr2 =

0.80 0.77 0.44 0.38 0.19�

Exemplul 2.52 Comenzile

>> A = rand(5,2);>> min = min(A) , max = max(A) , media = mean(A)>> suma = sum(A) , sumacumul = cumsum(A)

afis, eaza

Page 47: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

2.3. Analiza datelor 43

A =

0.17 0.91

0.36 0.09

0.88 0.18

0.74 0.95

0.42 0.10min =

0.17 0.09max =

0.88 0.95media =

0.51 0.45

iar comanda

>> minabs = min(min(A)) , maxabs = max(max(A))

afis, eaza minumul s, i apoi maximul tuturor elementelor lui Aminabs =

0.09maxabs =

0.95

Acelas, i rezultat se poate obt,ine daca se folosesc comenzile

>> minabs2 = min(A(:)) , maxabs2 = max(A(:))

(deoarece A(:) afis, eaza o coloana cu toate coloanele lui A puse una subalta). �

Exemplul 2.53 Exista s, i posibilitatea afis, arii indicelui elementului minimsau maxim. Astfel daca se scrie

>> [minim,i] = min(A)

se obt,in valorile minime (vector notat de noi cu minim) ale fiecareicoloane a lui A, precum s, i indicii (vector notat de noi cu i), în cadrul acelorcoloane, a respectivelor valori minime:

minim =

0.17 0.09i =

1 0.09

Page 48: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

44 2. Matrice

iar

>> [maxim,j] = max(A)

se obt,in valorile maxime (vector notat de noi cu maxim) ale fiecareicoloane a lui A, precum s, i indicii (vector notat de noi cu j), în cadrul acelorcoloane, a respectivelor valori maxime:

maxim =

0.88 0.95j =

3 4 �

Funct,ia max(A,a) returneaza maximul dintre elementele matricei A s, iscalarul a.

Funct,ia max(A,B) returneaza maximul dintre elementele matricei A s, iale matricei B (trebuie sa aiba aceas, i dimensiune cu A).

Page 49: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 3

Fisiere de tip script

Pentru probleme simple utilizarea ferestrei Command Window este sufi-cienta (este rapida s, i eficienta). Dar daca numarul comenzilor cres, te s, i/sause dores, te schimbarea unora dintre comenzi s, i/sau se dores, te schimbareavalorilor unor variabile, este mult mai dificil de gestionat schimbarile în ca-drul Command Window. În acest sens, MATLAB permite crearea unor fis, iereseparate, doar cu o succesiune de comenzi. Acestea pot fi executate ca s, icum ar fi fost scrise direct în Command Window iar rezultatele vor apareefectiv în Command Window.

Asemenea fis, iere sunt numite fisiere de tip script (de la termenul scriptcare înseamna faptul ca MATLAB cites, te efectiv caracterele din acel fis, ier)sau fis, iere de tip M (deoarece fis, ierele script au extensia .m).

Sa ment,ionam ca fis, ierele de tip M pot fi utilizate s, i pentru a definifunct,ii. Prima linie a acestui tip de fis, iere începe obligatoriu cu cuvântulfunction

Pentru a crea un fis, ier de tip M se alege, din bara de instrumente (tool-bar), New Script sau New s, i apoi se alege Script (sau Function, dacase dores, te un fis, ier M pentru a defini o funct,ie).

Daca în Command Window se scrie>> edit

se deschide fereastra cu editorul MATLAB-ului.

Apoi aceste fis, iere trebuie salvate. Numele trebuie sa înceapa cu o literacare poate fi urmata apoi de orice litera, cifra sau de simboluri underscore.

Pentru a deschide un fis, ier de tip M deja existent se alege, din bara deinstrumente, Open.

45

Page 50: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

46 3. Fisiere de tip script

Daca în Command Window scriem (în dreptul prompterului) numele e-xact (fara extensie) al acelui fis, ier, MATLAB va executa comenzile scrise înfis, ier, ca s, i cum ar fi fost scrise direct în Command Window. Rezultatele vorapare în Command Window.

De asemenea, fis, ierul se va executa s, i daca utilizam Run din bara deinstrumente sau tastam F5

Ment,ionam ca pentru a executa fis, ierul script folderul ce apare în fe-reastra Current Folder trebuie sa coincida cu cel în care este salvat acel fis, ierscript.

În general, este util sa adaugam s, i o scurta descriere a comenzilor ceapar în acel script. Acestea se pot scrie daca inseram comentarii prin folo-sirea semnului % (liniile care încep cu % nu se vor executa)

Daca dorim sa scriem mai multe linii cu comentarii, putem folosi de-limitatorii %{ %} s, i sa scriem în interiorul lor, pe diferite linii (dar nu îndreptul semnelor %{ s, i %} ).

Exemplul 3.1 Prezentam cont,inutul unui fis, ier de tip script (sau de tip M):

% acesta este primul fisier de tip script% deci este un fisier cu extensia .m

%{vom scrie produsul scalar si norma vectorilormai intai generam doi vectori de dimensiune (4n+1)%}

n = 10 ; x = -n:.5:n ; y = 0:.5:2*n ;

ps1 = x*y’ , ps2 = dot(x,y) , ps3 = sum(x.*y)

norma1 = sqrt(sum(x.^2)) , norma2 = norm(x)

Salvam aces fis, ier cu numele ProdScal_Norma s, i cu extensia .mDaca scriem apoi în Command Window

>> ProdScal_Norma

se va executa acest fis, ier s, i se va afis, a

ps1 = 1435 ps2 = 1435 ps3 = 1435norma1 = 37.8814 , norma2 = 37.8814 �

De asemenea, ment,ionam ca atunci când se executa un fis, ier de tip scriptvariabilele ce sunt utilizate în acel fis, ier trebuie sa fie deja definite s, i cunume atribuit.

Page 51: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

47

În general, definirea s, i numirea unor variabile se poate face în trei mo-duri:

• ori declaram s, i numim variabilele într-un fis, ier de tip script (dupaprima executare a acestuia, toate variabilele declarate în el vor apares, i ele în Workspace);

• ori în Command Window (s, i ele vor apare automat în Workspace);

• sau utilizând comanda input care are structura:

nume_var = input(’text_afisat’)

unde: nume_var este numele dat de noi variabilei iar text_afisateste s, irul de caractere (textul) ce se dores, te sa apara în Command Win-dow.

Când comanda de mai sus este executata, textul va fi afis, at în Co-mmand Window s, i va cere utilizatorului sa introduca o valoare ce va finumita nume_var. Utilizatorul introduce valoarea s, i tasteaza Enter.Daca se adauga semnul ; dupa comanda, atunci valoarea introdusade noi a variabilei nu se va mai afis, a.

Comanda input are s, i posibilitatea de a cere (s, i atribui un nume)unui s, ir de caractere (string):

nume_var = input(’text_afisat’,’s’)

Exemplul 3.2 Daca scriem

>> R = input(’Introduceti raza cercului = ’)

se va afis, a

Introduceti raza cercului =

Apoi utilizatorul trebuie sa introduca o valoare (de exemplu, 5) iar,dupa ce se tasteaza Enter, va apare

R =5 �

As, a cum am vazut deja, MATLAB genereaza automat un display, cândanumite comenzi sunt executate; de exemplu, când o valoare este atribuitaunei variabile s, i se tasteaza Enter s, i apare în display variabila s, i valoareaei.

Page 52: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

48 3. Fisiere de tip script

În afara acestei afis, ari automate MATLAB pune la dispozit,ie alte douacomenzi: comanda disp prin care se poate afis, a un text s, i/sau date nu-merice s, i comanda fprintf prin care se poate afis, a un text s, i/sau datenumerice preferate de noi s, i se pot, eventual, salva într-un fis, ier.

Comanda disp are structura:

disp(’nume_var’)

saudisp(’text_afisat_doar_caractere’)

Comanda disp poate afis, a s, i variabile daca le convertim în caractere. A-ceasta poate fi facuta folosind comanda num2str care are structura:

num2str(nume_var,6)

saunum2str(nume_var,’%-5.2f’)

unde:

• nume_var este variabila a carei valoare se dores, te a fi transformataîn caractere (trebuie sa fie definita în prealabil);

• 6 indica numarul total de cifre (ale variabilei nume_var) ce dorim safie afis, ate;

• % indica începerea operatorului de formatare;

• - indica alinierea la stânga a numarului afis, at (exista s, i varianta +care, daca e utilizata, va afis, a semnul numarului);

• 5 indica lat,imea câmpului;

• 2 indica numarul de zecimale (ale valorii variabilei) ce se dores, te a fiafis, ate;

• f indica formatul de afis, are al numarului (exista s, i variantele: e, g,i).

Pentru a folosi efectiv comanda num2str în cadrul comenzii disp veziurmatorul exemplu.

Page 53: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

49

Exemplul 3.3 Sa introducem trei note (cream vectorul nota s, i introducemcomponentele lui) s, i sa le calculam media:

>> nota(1) = 7; nota(2) = 9; nota(3) = 10;>> media = mean(nota)

Varianta mai simpla de afis, are este (pentru aceasta, mai întâi, cream unvector cu textul de afis, at):

>> a = [’Media notelor introduse este ’ ,num2str(media)];

>> disp(a)

Alta varianta de afis, are este (dorim sa afis, am valoarea în formatul demaxim 4 cifre):

>> b = [’Media notelor introduse este ’ ,num2str(media,4)];

>> disp(b)

Alta varianta de afis, are este (dorim sa afis, am valoarea în formatul denumar cu doua zecimale):

>> c = [’Media notelor introduse este ’ ,num2str(media,’%.2f’)];

>> disp(c)

Sa afis, am notele introduse s, i media lor:

>> d=[’Am introdus notele ’ , num2str(nota(1),’%.2f’),’, ’ , num2str(nota(2),’%.2f’), ’ si’, num2str(nota(3),’%.2f’), ’si am obtinutmedia ’, num2str(media,’%.2f’)];

>> disp(d) �

Comanda fprintf (în varianta mai simpla, de afis, are a unui text) arestructura:

fprintf(’text_afisat_doar_caractere’)

Aceasta comanda poate fi folosita în Command Window, într-un fis, ier de tipscript sau într-un fis, ier de tip function.

Daca se dores, te trecerea pe o linie noua, în cadrul s, irului de caractereafis, ate (de exemplu, daca fraza afis, ata e prea lunga), atunci se insereaza

\n

Page 54: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

50 3. Fisiere de tip script

înaintea caracterului care se dores, te sa apara pe o noua linie.Ment,ionam s, i faptul ca este util sa adaugam \n s, i la sfârs, itul textului de

afis, at; doar as, a prompterul MATLAB va apare pe o linie noua (altfel el vaaparea în continuarea textului afis, at).

Astfel, daca exista mai multe comenzi de tip fprintf (s, i fara semnul; la sfârs, it), atunci ele vor afixa textele lor în continuu, unul dupa altul. Deaceea este util utilizarea comenzii \n pentru a se trece la o alta linie.

De asemenea, daca se dores, te, este util sa adaugam comanda

fprintf(’\n’)

dupa o alta comanda de tip fprintf pentru a insera o linie noua (faracont,inut), adica un spat,iu vertical dupa textul precedent.

Daca se dores, te inserarea unui spat,iu TAB în cadrul s, irului de caractereafis, ate, atunci se insereaza

\t

acolo unde se dores, te inserarea spat,iului.

Exemplul 3.4 Daca scriem

>> fprintf(’Problema nu are solutie. \nVerificatidatele de intrare ! \n’)

se va afis, a

Problema nu are solutie.Verificati datele de intrare !>> �

Daca exista mai multe comenzi de tip fprintf (s, i fara semnul ; lasfârs, it), atunci ele vor afixa textele lor în continuu, unul dupa altul. Deaceea este util utilizarea comenzii \n pentru a se trece la o alta linie.

Comanda fprintf (în varianta de afis, are a unui text dar s, i a datelornumerice) are structura:

fprintf(’text %-5.2f alt text’, nume_var)

unde:

• % indica începerea operatorului de formatare (deci faptul ca inseramvaloarea unei variabile); pot fi scrise mai multe semne % (deci vomapela corespunzator mai multe variabile);

Page 55: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

51

• nume_var este variabila ce se dores, te a fi afis, ata (trebuie sa fie definitaîn prealabil); pot fi enumerate mai multe variabile (deci în text vorapare corespunzator mai multe semne % );

• - indica alinierea la stânga a numarului afis, at (exista s, i varianta +care, daca e utilizata, va afis, a semnul numarului);

• 5 indica lat,imea câmpului;

• 2 indica numarul de zecimale (ale valorii variabilei) ce se doreste a fiafis, ate;

• f indica formatul de afis, are al numarului (exista s, i variantele: e, g,i).

Exemplul 3.5 Daca scriem

>> nota(1) = input(’Introduceti prima nota = ’);>> nota(2) = input(’Introduceti a doua nota = ’);>> nota(3) = input(’Introduceti a treia nota = ’);>> media = mean(nota);>> fprintf(’Am introdus notele %-.2f, %-.2f si

%-.2f \n’,nota(1),nota(2),nota(3))>> fprintf(’\n’)>> fprintf(’Nota %-.4f reprezinta media

notelor \n’, media)se va cere introducerea celor trei note s, i apoi se va afis, a textul s, i vari-

abilele din cadrul comenzilor fprintf �

Page 56: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 57: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 4

Functii

MATLAB furnizeaza câteva structuri care permit sa ne cream propriilefunct,ii. Aceste structuri sunt funct,ii definite de fis, iere separate de tip M(fisiere de tip function), funct,ii de tip anonymous s, i funct,ii de tip inline.

4.1 Fisiere de tip function

Daca dorim sa definim o funct,ie într-un fis, ier separat, de tip M, atuncistructura este, în linii mari, urmatoarea:

function[arg_iesire] = nume_fct(arg_intrare)

%{

· · ·

· · ·

· · ·

comentariu în care explicam definit,ia funct,iei

%}

· · ·

· · ·

· · ·

definirea efectiva a funct,iei nume_fct

end

unde:

• function este cuvântul obligatoriu cu care trebuie sa înceapa primalinie;

53

Page 58: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

54 4. Functii

• nume_fct este numele dat funct,iei s, i trebuie sa fie identic cu numelefis, ierului de tip M care cont,ine acea funct,ie (deci fis, ierul se va numinume_fct.m);

• arg_iesire sunt argumente de ies, ire; daca o funct,ie nu are argu-mente de ies, ire, atunci [arg_iesire] = poate lipsi; daca o funct,ieare doar un argument de ies, ire, atunci parantezele patrate [ ] potlipsi; daca o funct,ie are mai multe argumente de ies, ire, atunci ele sescriu separate printr-un spat,iu sau printr-o virgula;

• arg_intrare sunt argumente de intrare; daca o funct,ie nu are ar-gumente de intrare, atunci parantezele rotunde ( ) pot lipsi; daca ofunct,ie are mai multe argumente de intrare, atunci ele se scriu sepa-rate printr-o virgula;

• end poate lipsi.

Ment,ionam ca un fis, ier de tip M care defines, te o funct,ie nu se poateexecuta (doar fis, ierele de tip script se pot executa).

Exemplul 4.1 Sa definim o funct,ie scalara de argument vectorial. Astfel,cream un fis, ier de tip M cu numele sumapatrate.m

function z = sumapatrate( x,y )% functia da suma patratelor a doua numere% se poate aplica si vectorilorz = x.^2 + y.^2-25;

Apoi, daca în Command Window scriem

>> help sumapatrate

se vor afis, a toate comentariile scrise de noi în fis, ierul M.Daca în Command Window scriem

>> sumapatrate(3,4)

se va afis, a

ans =0

Daca în Command Window scriem

>> rez = sumapatrate(3,4)

se va afis, a

Page 59: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

4.1. Fisiere de tip function 55

rez =0

Daca în Command Window scriem

>> sumapatrate([1 2;3 4],[1 2;3 4])

se va afis, a

ans =

-23 -17

-7 7�

Exemplul 4.2 Sa definim o funct,ie vectoriala de argument scalar. Astfel,cream un fis, ier de tip M cu numele fct_cerc.m care defineste o funct,ie:

function z = fct_cerc(theta)% functia va returna coordonatele (x,y)% ale unui pct de pe cercul x^2+y^2=5^2z = [ 5.*cos(theta) , 5.*sin(theta) ];% din definitia de mai sus se vede ca z este vector

Apoi, daca în Command Window scriem

>> help fct_cerc

se vor afis, a toate comentariile scrise de noi în fis, ierul M.Daca în Command Window scriem

>> fct_cerc(0)

se va afis, a o pereche de coordonate

ans =

5 0

Daca în Command Window scriem

>> fct_cerc([ 0 , pi/6 , pi/3 , pi/2 ])

se vor afis, a patru perechi de coordonate (mai întâi sunt afis, ate toate celepatru valori corespunzatoare lui 5.*cos(theta), apoi cele corespunza-toare lui 5.*sin(theta) )

ans =

5 4.33 2.50 0 0 2.50 4.33 5

Daca în Command Window scriem

Page 60: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

56 4. Functii

>> fct_cerc([ 0 , pi/6 , pi/3 , pi/2 ]’)

se vor afis, a patru perechi de coordonate (dar fiecare pereche (pe linie)reprezinta exact coordonatele unui punct de pe cercul x2 + y2 = 5, cores-punzator fiecarui theta=[ 0 , pi/6 , pi/3 , pi/2 ] )

ans =

5 0

4.33 2.50

2.50 4.33

0 5

Daca în Command Window scriem

>> theta = linspace(1,pi/2,100)>> fct_cerc(theta’)

se vor afis, a o suta de perechi de coordonate (fiecare pereche (pe linie)reprezinta exact coordonatele unui punct de pe cercul x2 + y2 = 5, cores-punzator fiecarui theta=linspace(1,pi/2,100) )

ans =

5 0

4.33 2.50...

......

...

2.50 4.33

0 5�

Exemplul 4.3 Aceleas, i efecte se obt,in daca folosim transpunerea în cadruldefinit,iei funct,iei (s, i nu atunci când apelam funct,ia):

function z = fct_cerc(theta)z = [ (5.*cos(theta))’ , (5.*sin(theta))’ ];

Daca în Command Window scriem

>> fct_cerc([ 0 , pi/6 , pi/3 , pi/2 ])

se vor afis, a patru perechi de coordonate (fiecare pereche (pe linie) re-prezinta exact coordonatele unui punct de pe cercul x2 + y2 = 5, cores-punzator fiecarui theta=[ 0 , pi/6 , pi/3 , pi/2 ] )

Page 61: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

4.2. Functii anonymous 57

ans =

5 0

4.33 2.50

2.50 4.33

0 5�

Exemplul 4.4 Pentru o funct,ie vectoriala de argument scalar exista s, i vari-anta de a scrie:

function [z,w] = fct_cerc(theta)z = (5.*cos(theta)) ;w = (5.*sin(theta)) ;% din notattie se vede ca rezultatul este vector

Daca în Command Window scriem

>> theta = linspace(1,pi/2,100)>> [comp1,comp2] = fct_cerc(theta)

se vor afis, a o suta de perechi de coordonate.

Daca scriem

>> A = [comp1’,comp2’]

se vor afis, a o suta de perechi de coordonate (dar fiecare pereche (pelinie) reprezinta exact coordonatele unui punct de pe cercul x2 + y2 = 5 )

Daca, de exemplu, scriem comanda>> plot(comp1,comp2)vom obt,ine graficul cu toate punctele obt,inute mai sus. �

4.2 Functii anonymous

Exista numeroase situat,ii în care o funct,ie MATLAB sau una definita denoi trebuie utilizata, ca argument, de catre o alta funct,ie, pentru evaluare.Acest lucru poate fi facut daca utilizam funct,iile definite în fis, iere de tip Msau funct,ii de tip anonymous, dar exista s, i o a treia metoda: funct,ii definiteinline (vezi sect,iunea urmatoarea).

Pentru a defini o funct,ie de tip anonymous trebuie sa utilizam un func-tion handle (aceasta se realizeaza scriind caracterul @ în fat,a funct,iei care eargument).

Page 62: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

58 4. Functii

Mai precis, definirea unei functii de tip anonymous este data de comanda

nume_fct = @(arg_iesire) functia_efectiva

Vom folosi, pentru exemplificare, funct,ia ezplot11 care reprezinta, îndoua dimensiuni (2D), graficul unei funct,ii data explicit (i.e. y = f (x) ),implicit (i.e. F (x, y) = 0 ) sau parametric (i.e. x = f (t) , y = g (t) ). Deci ar-gumentul funct,iei ezplot este o alta funct,ie. Domeniul implicit consideratde funct,ia ezplot pentru variabila funct,iei argument este [−2π, 2π] (dar else poate s, i schimba).

Exemplul 4.5 Comanda

>> sq = @(x) x.^2

defines, te funt,ia noua sq (x) = x2; este o funct,ie de tip anonymous (s, i serealizeaza utilizând function handle).

Scriind apoi

>> sq(.7)

obt,inem valoarea funct,iei sq în punctul .7

Comanda

>> ezplot(sq , [-3 3])

va afis, a graficul funct,iei sq (x) = x2 cu x din intervalul [−3, 3] . �

Exemplul 4.6 Comanda

>> functia3 = @(t) t.*sin(t)

defines, te funt,ia noua functia3 (t) = t sin t ; este o funct,ie de tip anony-mous (s, i se realizeaza utilizând function handle).

Scriind apoi

>> functia3(1)

obt,inem valoarea funct,iei functia3 în punctul 1.

Comanda

>> ezplot(functia3)

va afis, a graficul funct,iei f (t) = t sin t cu t din intervalul [0, 2π] . �11 Easy-to-use function plotter

Page 63: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

4.2. Functii anonymous 59

Exemplul 4.7 Comanda

>> functia4 = @(x,y) x.^4+y.^4-1

defines, te funt,ia noua f (x, y) = x4 + y4 − 1 ; este o funct,ie de tip anony-mous.

Scriind apoi

>> functia4(1,3)

va afis, a

ans =9 �

Exemplul 4.8 Comanda

>> ezplot(@(t) t.*sin(t))

va afis, a graficul funct,iei f (t) = t sin t (funct,ie de tip anonymous) cu tdin intervalul [0, 2π] .

Comanda

>> ezplot(@(x,y) x.^4+y.^4-1, [-2 2])

va afis, a graficul funct,iei x4 + y4 − 1 (funct,ie de tip anonymous) cu x dinintervalul [−2, 2] . �

Exemplul 4.9 Comanda

>> functia5 = @(t) exp(-t).*cos(8*t);>> functia6 = @(t) exp(-t).*sin(8*t);

defines, te doua funct,ii noi x (t) , y (t) (funct,ii de tip anonymous) (sau ofunct,ie scalara data parametric: x = x (t) s, i y = y (t) )

Comanda

>> ezplot(functia5,functia6, [0 3])

va afis, a graficul funct,iei data parametric(e−t cos (8t) , e−t sin (8t)

)cu t

din intervalul [0, 3] . �

Exemplul 4.10 Sa cream un fis, ier de tip M cu numele deriv_aprox.m pentrua defini funct,ia numita deriv_aprox care va da valoarea aproximativa aderivatei unei funct,ii, într-un punct (vezi Exemplul 4.19)

function y = deriv_aprox(f,x)

Page 64: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

60 4. Functii

y = (f(x+sqrt(eps))-f(x))/sqrt(eps);

Acum, în Command Window, scriem:

>> deriv_aprox(@exp,1)

s, i obt,inem o aproximare a valorii derivatei funct,iei ex în punctul x = 1,adica

(ex)′∣∣∣x=1≈ ex+h − ex

h, unde h := sqrt(eps)

deci o valoare aproximativa a lui e1 :

ans =2.7183 �

În final, ment,ionam alte câteva cazuri în care un function handle esteutilizat pentru a utiliza o funct,ie (deja definita) drept argument.

Un exemplu util este comanda arrayfun care aplica o funct,ie (dejadefinita de noi sau de MATLAB) tuturor elementelor unei matrice con-form structurii:

B = arrayfun(@(x) functie(x),A)

unde:

• functie este funct,ia pe care vrem sa o aplicam tuturor elementelorlui A ; aceasta funct,ie trebuie sa fie de o variabila reala cu valoriscalare;

• B este matricea cu rezultate, deci B(i,j) = functie(A(i,j)),pentru fiecare i,j;

• A este matricea cu valori asupra careia aplic funct,ia functie

În cazul în care funct,ia functie este definita într-un fis, ier de tip M,putem scrie sub forma:

B = arrayfun(@functie,A)

Exemplul 4.11 Folosim aproximarea ln (x+ 1) '∑n

k=1 (−1)k+1 xk

k , pen-tru orice x ∈ (−1, 1], pentru n suficient de mare.

Sa definim acum un fis, ier de tip function cu numele dezv_ln.m:

function y = dezv_ln(x)

Page 65: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

4.2. Functii anonymous 61

k = 1:100;y = sum((-1).^(k+1).*x.^k./k);

Apoi definim a:

>> a = [-0.5 0 0.5]

Acum putem aplica funt,ia fiecarui element al matricei a:

>> b = arrayfun(@(x) dezv_ln(x),a)

Acelas, i efect se obt,ine daca scriem direct:

>> b = arrayfun(@dezv_ln,a)

(am apelat funct,ia fct_fzero folosind un function handle). �

Exemplul 4.12 În caz ca o funct,ie are mai multe argumente, putem procedaastfel.

Sa luam funct,ia de mai sus depinzând s, i de n (cream un fis, ier de tipfunction cu numele dezv2_ln.m):

function y = dezv2_ln(x,n)k = 1:n;y = sum((-1).^(k+1).*x.^k./k);Apoi definim a:

>> a = [-0.5 0 0.5]

Acum putem aplica funt,ia fiecarui element al matricei a:

>> b = arrayfun(@(x) dezv2_ln(x,100),a) �

Un alt exemplu util este comanda fzero cu ajutorul careia determinamzero-urile unei funct,ii (vezi pagina 89):

Exemplul 4.13 Fie

f (x) = x3 − x2 − 3 arctg (x) + 1 .

Sa definim, mai întâi, un fis, ier de tip function cu numele fct_fzero.m:

function y = fct_fzero(x)y = x.^3-x.^2-3.*atan(x)+1;

Apoi determinam nis, te valori particulare în care funct,ia îs, i schimbasemnul; gasim f (−2) < 0, f (−1) > 0. Zero-urile se pot determina scriind:

>> sol = fzero(@fct_fzero,[-2 -1])

(am apelat funct,ia fct_fzero folosind un function handle). �

Page 66: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

62 4. Functii

Exemplul 4.14 Comanda

>> ezplot(@sin)

va afis, a graficul funct,iei y = sin (x) cu x din intervalul [0, 2π] (am uti-lizat function handle pentru a utiliza funct,ia sin (predefinita în cadrul MAT-LAB) drept argument) �

4.3 Functii inline

O alta modalitate de a avea o funct,ie drept argument este de a utilizao funct,ie definita inline, adica definita în lina de comanda; în acest sensscriem:

nume_fct = inline(’expresie_fct’)

Exemplul 4.15 Comanda

>> functia1 = inline(’x.^4+y.^4-1’)>> ezplot(functia1, [-2 2])

va afis, a graficul funct,iei x4 + y4 − 1 cu x din intervalul [−2, 2] . �

Exemplul 4.16 Evident, comanda

>> ezplot(’x.^4+y.^4-1’, [-2 2])

va afis, a acelas, i grafic ca mai sus. �

Exemplul 4.17 Sa cream, în Command Window, o funct,ie de tip inline (funct,iada suma patratelor a doua numere s, i se poate aplica s, i vectorilor):

>> sumapatrate = inline( ’ x.^2+y.^2 ’ )

Astfel se va afis, a

sumapatrate =Inline function:sumapatrate = x.^2+y.^2

Daca în Command Window scriem

>> sumapatrate(3,4)

se va afis, a

ans =25 �

Page 67: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

4.3. Functii inline 63

Exemplul 4.18 Daca se defines, te inline o funct,ie, atunci ordinea implicita aargumentelor este cea alfabetica:

>> sumapatrate = inline( ’ a*x.^2+b*y.^2 ’ )

s, i se va afis, a

sumapatrate =Inline function:sumapatrate(a,b,x,y) = a*x.^2+b*y.^2

Dar daca se dores, te o anumita ordonare a argumentelor scriem astfel:

>> sumapatrate = inline( ’ a*x.^2+b*y.^2 ’ ,

’x’,’y’,’a’,’b’)

s, i se va afis, a

sumapatrate =Inline function:sumapatrate(x,y,a,b) = a*x.^2+b*y.^2 �

Exemplul 4.19 Sa cream un fis, ier de tip M cu numele deriv_aprox.m pentrua defini funct,ia numita deriv_aprox care va da valoarea aproximativa aderivatei unei funct,ii, într-un punct, folosind faptul ca

f ′ (x) ≈ f (x+ h)− f (x)h

, daca h > 0 este suficient de mic.

function y = deriv_aprox(f,x)%{functia da o aproximare a derivateiunei functii f intr-un punct xvaloarea f’(x) este aproximata de (f(x+h)-f(x))/hiar pe h il vom lua foarte mic, de exempluh = sqrt(eps)%}y = (f(x+sqrt(eps))-f(x))/sqrt(eps);

Acum, în Command Window, definim o funct,ie inline>> functia2 = inline( ’ sqrt(x)./(1+x.^2) ’ )

Daca scriem s, i>> deriv_aprox(functia2,.5)

Page 68: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

64 4. Functii

obt,inem o aproximare a valorii derivatei funct,iei√x

1 + x2în punctul x =

0.5 :ans =

0.1131 �

ç

Page 69: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 5

Programare în MATLAB

Un program este o succesiune de comenzi. Acestea se executa ori unadupa alta (în ordinea în care au fost scrise), ori unele dintre ele se executa înalta ordine în funct,ie de variabilele introduse, ori unele dintre ele se executarepetitiv pâna când apare o valoare data. Schimbarea modului de act,ionarea comenzilor necesita luarea anumitor decizii: când executa urmatoareacomanda, când evita executarea urmatoarei comenzi sau când repeta o a-numita comanda etc. Aceste decizii sunt luate prin compararea valorilorvariabilelor. Iar acest aspect este realizat utilizând operatorii relationali sipe cei logici.

5.1 Operatori relationali si operatori logici

În plus fat,a de operat,iile matematice obis, nuite, MATLAB suporta s, ioperat,ii relat,ionale s, i logice. Scopul acestor operat,ii este de a raspundela întrebari cu doua variante de raspuns: True (1) s, i False (0). Operatorii re-lationali în MATLAB se refera la comparat,iile obis, nuite, as, a cum se poatevedea în urmatorul tabel:

Operator relat,ional Semnificat,ia

< mai mic decât

<= mai mic sau egal decât

> mai mare decât

>= mai mare sau egal decât

65

Page 70: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

66 5. Programare în MATLAB

== egal12cu

∼= diferit de

Daca se compara doua matrice, atunci cele doua matrice trebuie sa aibaaceleas, i dimensiuni s, i se compara element cu element. Rezultatul este omatrice (cu aceleas, i dimensiuni cu matricele comparate) de 0 s, i 1.

Se poate compara s, i un scalar cu o matrice atunci se compara scalarulcu fiecare element al matricei. Rezultatul este o matrice de 0 s, i 1.

Exemplul 5.1 Comenzile>> A = 8:-1:0; B = 9-A; Q1 = A>4

afis, eazaQ1 =

1 1 1 1 0 0 0 0 0iar>> Q2 = (A == B-1)

afis, eazaQ2 =

0 0 0 0 1 0 0 0 0 �

Exemplul 5.2 Comenzile>> A = [1 2 ; 3 4]; B = eye(2); A == B

afis, eazaans =

1 0

0 0iar>> A <= B

afis, eazaans =

1 1

1 0�

12 A nu se confunda operatorul relational == (care compara doua variabile s, i afis, eaza1 (True) daca sunt egale s, i 0 (False) daca sunt diferite) cu = care înseamna atribuirea uneivalori (rezultatul unei operat,ii) unei variabile.

Page 71: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.1. Operatori relationali si operatori logici 67

Exemplul 5.3 Comenzile

>> x = (-3 : 3)/3; y = sin(x)./x

afis, eaza

y =

0.8415 0.9276 0.9816 NaN 0.9816

0.9276 0.8415 �

Exemplul 5.4 Daca se dores, te ocolirea problemeisin 0

0, atunci redefinim

pe x scriind

>> x = x + eps * (x==0); y = sin(x)./x

s, i astfel se afis, eaza

y =

0.8415 0.9276 0.9816 1.0000 0.9816

0.9276 0.8415 �

Operatorii logici furnizeaza o modalitate de a combina sau nega expre-siile relat,ionale. MATLAB ofera urmatorii operatori logici:

Operator logic Semnificat,ia

& S, I (element cu element, pentru tablouri)

| SAU (element cu element, pentru tablouri)

∼ NEGAT, IA

&& S, I (pentru scalari)

|| SAU (pentru scalari)

În plus fat,a de operatorii logici s, i cei relat,ionali ment,ionat,i mai sus MAT-

Page 72: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

68 5. Programare în MATLAB

LAB furnizeaza urmatoarele funct,ii:

Funct,ia Semnificat,ia

and(x,y) echivalenta funct,ional cu x&y

or(x,y) echivalenta funct,ional cu x|y

not(x) echivalenta funct,ional cu ∼x

xor(x,y)SAU exclusiv;1 daca x este nenul sau daca y este nenuls, i 0 daca ambii sunt nuli sau ambii sunt nenuli

any(x)1 daca exista o componenta nenula a vectorului x;1 pentru fiecare coloana a matricei xpentru care exista o componenta nenula

all(x)1 daca toate componentele vectorului x sunt nenule;1 pentru fiecare coloana a matricei xcare are toate elementele nenule

Exemplul 5.5 Comenzile>> A = 8:-1:0 ; B = 9-A ; Q1 = (A>2) & (A<6)

afis, eaza 1 daca A este mai mare ca 4 s, i mai mic ca 6:Q1 =

0 0 0 1 1 1 0 0 0

iar>> Q2 = and(A>4,A<6)

afis, eaza acelas, i lucru. �

Exemplul 5.6 Comenzile>> A = 8:-1:0 ; B = 9-A ; Q3 = (A<2) | (A>6)

afis, eaza 1 daca A este mai mare ca 4 sau mai mic ca 6:Q3 =

1 1 0 0 0 0 0 1 1

iar>> Q4 = or(A<2,A>6)

afis, eaza acelas, i lucru. �

Exemplul 5.7 Comenzile

Page 73: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.1. Operatori relationali si operatori logici 69

>> A = 8:-1:0 ; B = 9-A ; Q5 = ∼ (A>4)

afis, eaza

Q5 =

0 0 0 0 1 1 1 1 1

iar

>> Q6 = not(A>4)

afis, eaza acelas, i lucru. �

Exemplul 5.8 Comenzile

>> a = 0 ; b = pi ; Q1 = a == 0 || b ∼= 1

afis, eaza

Q1 =

1

iar

>> Q2 = b == 1 && a == 0

afis, eaza

Q2 =

0

iar

>> Q3 = (1/a) < 0 || a == 0

afis, eaza, des, i 1/a = Inf,

Q3 =

1

( a == 0 este True ceea ce este suficent pentru a obt,ine rezultatul finalTrue; deci nu se mai calculeaza 1/a , adica a doua expresie nu mai esteevaluata) �

Când MATLAB evalueaza o expresie conteaza s, i ordinea operat,iilor (iar

Page 74: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

70 5. Programare în MATLAB

în acest sens conteaza nivelul de precedent,a):

OperatorulOrdinea descrescatoare

a nivelului deprecedent,a

parantezele 1

transpusa .’ transpusa conjugata ’puterea .^ puterea ^

2

plusul unar + minusul unar - negat,ia ∼ 3

înmult,irea .∗ înmult,irea ∗împart,irea ./ împart,irea /împart,irea .\ împart,irea \

4

adunarea + scaderea - negat,ia logica ∼ 5

generarea unui vector linie :(notat,ia „pentru” coloana)

6

< <= > >= == ∼= 7

& 8

| 9

&& 10

|| 11

Exemplul 5.9 Comenzile>> 1 | 0 & 0

afis, eazaans =

1iar>> 1 | (0 & 0)

afis, eazaans =

1iar>> (1 | 0) & 0

Page 75: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.1. Operatori relationali si operatori logici 71

afis, eazaans =

0 �

Exemplul 5.10 Comenzile

>> x = [0 1 2] ; y = [-1,0,1]; x<=0 & y+1>=0

afis, eazaans =

1 0 0

iar>> xor(x,y)

afis, eazaans =

1 1 0

iar>> all(y)

afis, eazaans =

0iar>> any(y)

afis, eazaans =

1 �

Exemplul 5.11 Comenzile

>> A = [1 0 3 ; 4 5 6] ; all(A)

afis, eazaans =

1 0 1

iar>> any(A)

afis, eazaans =

1 1 1 �

Page 76: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

72 5. Programare în MATLAB

De asemenea, MATLAB furnizeaza numeroase funct,ii care testeaza e-xistent,a unor valori sau condit,ii anume:

Funct,ie Semnificat,ia

ischar testeaza daca argumentul este s, ir de caractere

isempty testeaza daca argumentul este vid

isequal testeaza daca tablourile sunt identice

isfinite testeaza daca elementele unui tablou sunt finite

isinf testeaza daca elementele unui tablou sunt infinite

islogical testeaza daca argumentul este un tablou logic

isprime testeaza daca argumentul este numar prim

isnumeric testeaza daca argumentul este s, ir de caractere

isreal testeaza daca argumentul este un tablou real

Funct,ia find aplicata unui vector spune ce indici corespund componen-telor nenule ale acelui vector. În cazul unei matrice funct,ia find spunece indici corespund elementelor nenule ale acelei matrice (indexarea ele-mentelor matricei se face astfel: se scriu toate coloanele una sub alta s, i senumeroteaza fiecare element în ordine crescatoare).

Exemplul 5.12 Comenzile

>> x = [-1 0 7] ; find(x)

afis, eazaans =

1 3

iar>> y = 1 : 100 ; isprime(y)

afis, eaza un vector linie cu 100 de coloane cu 1 (daca elementul cores-punzator este prim) s, i 0 (daca elementul corespunzator nu este prim).

iar>> find(isprime(y))

afis, eaza indicii (din cei 100) corespunzatori lui 1 (adica numerelor primede la 1 la 100). �

Page 77: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.2. Structuri if-elseif-else-end 73

Exemplul 5.13 Comenzile

>> A = [-1 0 7 ; 3 0 -2] ; find(A)

afis, eazaans =

1

2

5

6

iar>> find(A<0)

afis, eazaans =

1

6�

5.2 Structuri if-elseif-else-end(si variantele if-end, if-else-end)

Structura comenzii if-elseif-else-end este, în linii mari, urma-toarea:

· · ·

· · ·

· · ·

Program MATLAB

if expresie condit,ionata

· · ·

· · ·

· · ·

grup 1 de comenzi MATLAB

elseif expresie condit,ionata

Page 78: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

74 5. Programare în MATLAB

· · ·

· · ·

· · ·

grup 2 de comenzi MATLAB

else

· · ·

· · ·

· · ·

grup 3 de comenzi MATLAB

end

· · ·

· · ·

· · ·

Program MATLAB

Ment,ionam ca elseif s, i grupul 2 de comenzi poate lipsi; astfel constructiase reduce la una de tip if-else-end.

De asemenea, elseif, else s, i grupurile 2 s, i 3 de comenzi pot lipsi;astfel constructia se reduce la cea mai simpla forma a ei: o construct,ie detip if-end.

Pe de alta parte, poate apare în plus un alt elseif însot,it de un alt grupde comenzi.

Daca prima expresia condit,ionata este adevarata (are valoarea 1), atunciprogramul continua sa execute toate comenzile care urmeaza dupa if,adica grupul 1 de comenzi, pâna la elseif.

Daca prima expresie condit,ionata este falsa (are valoarea 0), atunci pro-gramul omite sa execute grupul 1 de comenzi s, i trece direct la elseif.Daca expresia condit,ionata asociata ei este adevarata (are valoarea 1), atunciprogramul continua sa execute toate comenzile care urmeaza dupa elseif,adica grupul 2 de comenzi, pâna la else.

Daca a doua expresie condit,ionata este falsa (are valoarea 0), atunci pro-gramul omite sa execute s, i grupul 2 de comenzi s, i trece direct la else s, i laexecutarea grupului de 3 comenzi, pâna la end.

Exemplul 5.14 Definim:

>> mere = 15 ; cost = mere * 1.5;

Acum calculam noul cost al merelor s, tiind ca daca vom cumpara maimult de 10 mere, atunci se da un discount de 20%:

Page 79: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.2. Structuri if-elseif-else-end 75

>> if mere > 10cost = 0.8 * cost;

end

Acum, daca se scrie

>> cost

va apare

cost =18 �

Exemplul 5.15 Se defines, te, mai întâi, un numar folosind comanda input

>> numar = input(’Introduceti numarul = ’)

se va afis, a

Introduceti numarul =

Apoi utilizatorul trebuie sa introduca o valoare (de exemplu, −5) iar,dupa ce se tasteaza Enter, va apare

numar =-5

Apoi se testeaza: daca variabila noastra are valoarea pozitiva, se pas-treaza, iar daca e negativ, atunci se înlocuies, te valoarea lui cu 0 :

>> if numar < 0numar = 0

end

Acum, daca se tasteaza Enter, va apare

numar =0

(daca numarul introdus ar fi fost pozitiv, atunci nu s-ar fi afis, at nimic).

Acum daca se scrie:

>> fprintf(’Radicalul numarului %.4f este %.4f \n’,numar, sqrt(numar))

se va afis, a

Radicalul numarului 0.0000 este 0.0000 �

Page 80: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

76 5. Programare în MATLAB

Exemplul 5.16 O varianta este urmatoarea:

>> numar = input(’Introduceti numarul = ’)

Apoi utilizatorul trebuie sa introduca o valoare, de exemplu, −5.Apoi se scrie:

>> if numar < 0disp(’In acest caz vom folosi valoarea

absoluta.’)numar = abs(numar)

end>> fprintf(’Radicalul numarului %.4f este %.4f \n’,

numar, sqrt(numar))

s, i se va afis, a

In acest caz vom folosi valoarea absoluta.Radicalul numarului -5.0000 este 2.2361 �

Exemplul 5.17 Putem scrie un program de verificare daca un numar ge-nerat aleator este sau nu mai mic decât 0.5 :

>> x = rand;>> if x < 0.5

disp(x)disp(’Numarul aleator, uniform din (0,1),

generat de MATLAB este mai mic ca 0.5’)else

disp(x)disp(’Numarul aleator, uniform din (0,1),

generat de MATLAB este mai mare ca 0.5’)end �

Exemplul 5.18 Sa cream un fis, ier de tip M cu numele fct_ramuri.m care de-fineste o funct,ie cu ramuri:

function y = fct_ramuri(x)%{definim o functie cu ramuriintr-un fisier de tip M%}if x < -1

y = 1;

Page 81: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.3. Structuri ciclice de tip for-end 77

elseif x == -1

y = 7else

if x <= 2y = x^2

elsey=4

endend

end

Apoi, daca în Command Window scriem

>> fct_ramuri(-5)

se va afis, a

ans =1 �

Exemplul 5.19 Aceeas, i funct,ie cu ramuri se obt,ine daca scriem scriem fi-s, ierul fct_ramuri2.m, folosind elseif

function y = fct_ramuri2(x)if x < -1

y = 1;elseif x == -1

y = 7elseif x <= 2

y = x^2else

y=4end �

5.3 Structuri ciclice de tip for-end

Un ciclu este o alta metoda de a controla desfas, urarea unui program.Fiecare ciclu de executare este numit pas. În fiecare pas cel put,in unei vari-abile îi este atribuita alta valoare. Într-un ciclu executarea unei comenzi saua unui grup de comenzi este repetata de câteva ori: ori este precizat de la

Page 82: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

78 5. Programare în MATLAB

început numarul de pas, i (instruct,iuni de tip for-end) ori se repeta pânacând o anumita condit,ie e satisfacuta (instruct,iuni de tip while-end).

Structura comenzii for-end este, în linii mari, urmatoarea:

· · ·

· · ·

· · ·

Program MATLAB

for k = a:h:b

· · ·

· · ·

· · ·

grup de comenzi MATLAB

end

· · ·

· · ·

· · ·

Program MATLAB

În primul pas avem k=a iar grupul de comenzi este executat cu aceastavaloare a lui k. Apoi noua valoare a lui k este a+h iar grupul de comenzieste executat din nou cu noua valoare a lui k. S, .a.m.d. pâna se ajungeca valoarea k=b când se executa pentru ultima data grupul de comenzifolosind valoarea k=b. Apoi se executa comenzile de dupa comanda end

Evident, pasul h poate fi negativ sau pozitiv. Daca a<b iar h<0 saua>b iar h>0, atunci pasul nu se executa.

Este posibil ca ultimul pas sa nu fie pentru k=b daca b nu poate fi scrissub forma a+n*h, cu n ∈ N. Astfel, ultimul k pentru care se executa pasuleste cel mai mare numar de tipul a+n*h, cu n ∈ N, din stânga lui b.

În loc de vectorul a:h:b se poate scrie orice alta matrice linie se dores, te.

Exemplul 5.20 Vom genera o matrice folosind instruct,iunea for-endMa precis, vom scrie o matrice de ordin n× n cu 2 pe diagonala princi-

pala, −1 deasupra s, i dedesubtul diagonalei principale s, i 0 în rest:

function A = matrice_sistem(n);for k = 1:n

for l = 1:n

Page 83: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.3. Structuri ciclice de tip for-end 79

if k == lA(k,l)=2;

elseif abs(k-l) == 1A(k,l) = -1;

elseA(k,l) = 0;

endend

end �

Exemplul 5.21 Vom calcula suma primilor n termeni ai seriei∞∑k=1

(−1)k k2k

.

Este convenabil sa scriem instruct,iunile într-un fis, ier de tip script s, i apoi saîl executam:

n = input(’Introduceti numarul de termeni = ’)S = 0;for k = 1:n

S = S+(-1)^k*k/2^k;endfprintf(’Suma primilor %-.0f termeni ai seriei

este %-.6f \n’,n,S) �

Exemplul 5.22 S, tim dezvoltarea în serie Taylor a funct,iei sin :

sin (x) =∑∞

k=0

(−1)k x2k+1

(2k + 1)!.

Sa calculam valoarea sin (x) folosind aproximarea data de suma primilorn termeni ai seriei precedente. Este convenabil sa definim un fis, ier de tipfunction cu numele taylor_sin.m:

function y = taylor_sin(x,n)xr = x*pi/180;y=0for k = 0:n-1

y = y+(-1)^k*xr^(2*k+1)/factorial(2*k+1);endfprintf(’Valoarea lui sin in %-.2f radiani este

aproximativ %-.6f (am folosit primii %-.0ftermeni ai dezvoltarii Taylor) \n’,xr,y,n) �

Page 84: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

80 5. Programare în MATLAB

5.4 Structuri ciclice de tip while-end

Ciclul while-end este utilizat în situat,iile când sunt necesari pas, ii repet-itivi dar nu se s, tie dinainte numarul pas, ilor (acesta nu este specificat cândprogramul începe). Pas, ii se repeta pâna când o anumita condit,ie este satis-facuta.

Structura comenzii while-end este, în linii mari, urmatoarea:

· · ·

· · ·

· · ·

Program MATLAB

while expresie condit,ionata

· · ·

· · ·

· · ·

grup de comenzi MATLAB

end

· · ·

· · ·

· · ·

Program MATLAB

În primul pas avem o expresie condit,ionata ce trebuie verificata. Dacavaloarea ei este falsa (are valoarea 0), atunci programul omite sa executegrupul de comenzi s, i trece direct la comenzile de dupa end. Daca expresiacondit,ionata este adevarata (are valoarea 1), atunci programul continua saexecute toate comenzile dintre while s, i end. Apoi programul se întoarcela comanda while s, i verifica din nou expresia condit,ionata s, i se reia pro-cedeul de mai sus.

Expresia condit,ionata trebuie sa cont,ina cel put,in o variabila. În primulpas grupul de comenzi este executat pentru prima data iar valoarea acelei(acelor) variabile este schimbata. Cu aceasta noua valoare este verificatadin nou expresia condit,ionata. Daca e adevarata, atunci se executa dinnou grupul de comenzi iar valoarea acelei (acelor) variabile este din nouschimbata. Grupul de comenzi este executat atâta timp cât valoarea acelei(acelor) variabile verifica expresia condit,ionata.

Page 85: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.4. Structuri ciclice de tip while-end 81

Exemplul 5.23 În acest program o variabila x ia valoarea 1 iar apoi valoa-rea ei este dublata atâta vreme cât valoarea ei este mai mica sau egala cu15 :

>> x=1;>> while x <= 15

x = 2*xend �

Exemplul 5.24 Sa definim o funct,ie care verifica ce factorial este mai micdecât un numar introdus de noi. Cream un fis, ier de tip function cu numelefactorial_max.m:

function y = factorial_max(x)i = 0; fact = 1;while fact <= x

i = i+1;fact = fact*i;

endy = fact/ifprintf(’(am obtinut ca %-.0f ! e mai mic decat

numarul %-.0f introdus de noi)’,i-1,x) �

Exemplul 5.25 S, tim dezvoltarea în serie Taylor a funct,iei exp :

exp (x) =∑∞

k=0

xk

k!.

Sa calculam valoarea exp (x) folosind aproximarea data de suma primilorn termeni ai seriei precedente. Dar sa facem verificarea: daca noul termenadunat la suma este mai mic decât 0.0001 sau daca numarul de termeni de-pas, es, te 40, atunci nu mai adagam nici un termen nou la suma termenilor.Este convenabil sa scriem instruct,iunile într-un fis, ier de tip script s, i apoi saîl executam:

x = input(’Introduceti valoarea = ’)k =1; xk = 1 ; S = xk;while abs(xk) >= 0.0001 & k <= 40

xk = x^k/factorial(k);S = S + xk;k = k+1;

endif k >= 40

Page 86: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

82 5. Programare în MATLAB

disp(’S-au adaugat mai mult de 40 de termeni’)

else

fprintf(’exp(%-.2f) = %-.6f \n(s-au adaugat

%-.0f termeni)\n’, x,S,k)

end �

5.5 Structuri switch-case

Structura comenzii switch-case este, în linii mari, urmatoarea:

· · ·

· · ·

· · ·

Program MATLAB

switch expresie de tip switchcase expresie în cazul 1

· · ·

· · ·

· · ·

grup 1 de comenzi MATLAB

case expresie în cazul 2

· · ·

· · ·

· · ·

grup 2 de comenzi MATLAB

otherwise

· · ·

· · ·

· · ·

grup 3 de comenzi MATLAB

end

· · ·

· · ·

· · ·

Program MATLAB

Page 87: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

5.5. Structuri switch-case 83

O structura de tip switch-case este o alta metoda de a controla des-fas, urarea unui program. Aceasta structura furnizeaza mai multe variantede grupe de comenzi pe care programul sa le execute în funct,ie de expresiade tip switch introdusa de noi. Expresia de tip switch poate fi un scalar sauun s, ir de caractere (de obicei este o variabila care este asociata unui scalarsau unor caractere).

Apoi se verifica daca valoarea variabilei din expresia de tip switch esteîntr-unul dintre cazurile enumerate în program: daca se potrives, te cu va-loarea din cazul 1, se executa grupul 1 de comenzi s, i programul se termina;daca nu este în cazul 1, se studiaza daca se potrives, te cu valoarea din cazul2; s, .a.m.d. pâna se ajunge, eventual, la otherwise

Sa precizam ca expresia dintr-un caz poate cont,ine mai multe variante.Grupul din cazul respectiv este executat daca cel put,in una dintre valori sepotrives, te cu expresia de tip switch.

Exemplul 5.26 Vom scrie un program care sa converteasca centimetrii in-trodus, i de noi într-o alta unitate de masura indicata de noi. Ment,ionam caunitatea de masura trebuie introdusa de noi (fiind un s, ir de caractere) întredoua semne ’

Este convenabil sa scriem instruct,iunile într-un fis, ier de tip script numit,de exemplu, switch_ex1.m s, i apoi sa îl executam:

x = input(’Introduceti valoarea, in centimetri,pe care doriti sa o transformati = ’);

unit = input(’Introduceti unitatea de masurain care doriti sa transformamvaloarea introdusa;\nvariantele sunt:inch (in), feet (ft), metri (m),milimetri (mm), centimetri (cm) = ’);

switch unitcase{’inch’,’in’}y = x / 2.54

case{’feet’,’ft’}y = x / 2.54 / 12

case{’metri’,’m’}y = x / 100

case{’milimetri’,’mm’}y = x * 10

case{’centimetri’,’cm’}y = x

Page 88: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

84 5. Programare în MATLAB

otherwisedisp([’Unitate de masura necunoscuta: ’ unit])y = nan

end �

Exemplul 5.27 Vom scrie un program care sa calculeze norma13, introdusade noi, a unui vector introdus de noi. Este convenabil sa scriem instruct,iu-nile într-un fis, ier de tip script numit, de exemplu, switch_ex2.m s, i apoi sa îlexecutam:

v = input(’Vectorul v = ’);p = input(’Scrieti indicele p al normei pe care

doriti sa o calculam (p = 1,2,inf,-inf)= ’);switch p

case 1disp(’Norma 1 este = ’)y = norm(v,1)

case 2disp(’Norma 2 este = ’)y = norm(v,2)

case infdisp(’Norma Inf este = ’)y = norm(v,inf)

case -infdisp(’Norma -Inf este = ’)y = norm(v,-inf)

otherwisedisp(’Norma nu poate fi calculata in raport

cu p-ul introdus ’)y = nan

end �

13 Comanda norm(A,p) calculeaza norma matricei sau vectorului A în raport cu indicelenormei p care poate fi 1, 2,∞ sau −∞, i.e. norm(A,p)=sum(abs(A)^p)^(1/p). Pen-tru detalii (definit,ii, sintaxa, exemple etc.) utilizeaza comanda doc norm în CommandWindow.

Page 89: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 6

Polinoame

MATLAB furnizeaza o serie de funct,ii ce opereaza asupra polinoamelor(determinarea derivatelor, a integralelor sau gasirea radacinilor).

Valoarea unui polinom într-un punct este data de

polyval(p,x)

unde p este vectorul (linie) cu tot,i coeficient,ii polinomului avut în vedere(coeficient,ii nuli trebuie, de asemenea, trecut,i în p ) iar x este valoarea încare se dores, te calculul polinomului.

Exemplul 6.1 Sa reprezentam grafic funct,ia polinomiala

P (x) = x5 − 12.1x4 + 40.59x3 − 17x2 − 71.95x+ 35.88

pentru −1.5 ≤ x ≤ 6.7.Scriem

>> p1 = [1 -12.1 40.59 -17 -71.95 35.88]>> val = polyval(p1,9)

s, i obt,inem

val =7.2623e+03

iar daca dorim graficul scriem:

>> x = -1.5:0.1:6.7;>> y = polyval(p1,x);>> plot(x,y) �

85

Page 90: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

86 6. Polinoame

Daca dorim sa determinam radacinile unui polinom folosim comanda

roots(p)

unde p este vectorul cu coeficient,ii polinomului avut în vedere.Ment,ionam ca polinomul trebuie introdus ca un vector linie iar radaci-

nile sunt afis, ate ca un vector coloana.

Exemplul 6.2 Sa determinam radacinile polinomului

P (x) = 2x4 − 6x3 + 2x2 + 86.

Scriem

>> p2 = [2 -6 2 0 86]>> r2 = roots(p2)

s, i obt,inem

r2 =2.7147 + 1.5601i

2.7147 - 1.5601i

-1.2147 + 1.7062i

-1.2147 - 1.7062i�

Daca dorim sa determinam polinomul care are nis, te radacini date fo-losim comanda

poly(r2)

unde r2 este vectorul (coloana) al radacinilor.

Exemplul 6.3 Sa determinam polinomul care are radacinile date de vec-torul r2 din exemplul precedent:

>> pol2 = poly(r2)

va afis, a

pol2 =

1.00 -3.00 1.00 0.00 43.00 �

Daca dorim sa determinam produsul a doua polinoame folosim co-manda

conv(p,q)

unde p,q sunt vectorii cu coeficient,ii celor doua polinoame.

Page 91: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

87

Exemplul 6.4 Sa determinam produsul a doua polinoame:

>> p3 = [2 1 -3 1]; p4 = [1 -4 3 23];>> u = conv(p3,p4)

Obt,inem

u =

1 -7 -1 62 10 -66 23 �

Daca dorim sa determinam câtul s, i restul împart,irii a doua polinoamefolosim comanda

deconv(p,q)

unde p,q sunt vectorii cu coeficient,ii celor doua polinoame.

Exemplul 6.5 Sa determinam câtul s, i restul împart,irii a doua polinoame(folosim polinoamele precedente):

>> [cat,rest] = deconv(u,p4)

Obt,inem, evident,

cat =

2 1 -3 1rest =

0 0 0 0 0 0 0 �

Evident, suma s, i diferent,a a doua polinoame se face utilizând sumas, i respectiv scaderea a doi celor doi vectori linie dat,i de coeficient,i. Dacagradele polinoamelor sunt diferite, atunci trebuie adaugat 0 corespunzatorla coeficient,ii polinomului cu gradul mai mic.

Daca dorim sa determinam derivata s, i primitiva unui polinom folosimcomanda

polyder(p)

s, i respectivpolyint(p,C)

unde p este vectorul cu coeficient,ii polinomului iar C este constanta care vaapare ca termen liber al primitivei; daca se scrie doar polyint(p), atuncise considera ca C este luat 0.

Exemplul 6.6 >> v = polyder(p3)>> w = polyint(v,1)

Page 92: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

88 6. Polinoame

Obt,inem

v =

6 2 -3w =

2 1 -3 1 �

Page 93: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 7

Rezolvarea numerica a unorprobleme

Metodele numerice sunt des utilizate în rezolvarea unor probleme ma-tematice atunci când este dificil (sau imposibil) de determinat solut,ia ex-acta. În aceasta sect,iune vom prezenta câteva dintre funct,iile des utilizateîn rezolvarea urmatoarelor probleme: rezolvarea ecuat,iilor cu o necunos-cuta, determinarea minimului s, i maximului unei funct,ii, integrarea numer-ica s, i rezolvarea unor ecuat,ii diferent,iale.

7.1 Rezolvarea ecuatiilor

Ne intereseaza determinarea punctelor în care o funct,ie scalara de ovariabila reala ia o valoare anume. De exemplu, daca dorim sa aflam x ast-fel încât f (x) = y, atunci, în caz ca exista inversa, valoarea x este data dex := f−1 (y) . Dar daca inversa nu exista, atunci, MATLAB trebuie sa es-timeze, printr-o procedura iterativa, valoarea x pentru care g (x) := f (x)−y = 0 (de aceea procedura iterativa se numes, te zero finding).

În MATLAB zero-urile reale ale unei funct,ii pot fi determinate cu aju-torul comenzii

x = fzero(functie,x0)

unde:

• x este un scalar care va fi solut,ia problemei;

• functie este funct,ia la care ne referim; aceasta poate fi introdusa înmai multe moduri (as, a cum este descris în Capitolul 4): utilizând un

89

Page 94: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

90 7. Rezolvarea numerica a unor probleme

fis, ier de tip M, o funct,ie de tip inline, o funct,ie de tip anonymous, unfunction handle sau combinat,ii de acestea;

• x0 poate fi scalar sau un vector cu doua elemente; daca e scalar, atuncix0 este valoarea în jurul careia MATLAB cauta un zero al funct,ieidate; daca e un vector cu doua elemente, atunci x0 reprezinta capeteleunui interval în care funct,ia data trebuie sa îs, i schimbe semnul.

Exemplul 7.1 Sa determinam zero-urile funct,iei:

f (x) = x3 − x2 − 3arctg (x) + 1 .

Sa definim un fis, ier de tip function cu numele fct_fzero.m:

function y = fct_fzero(x)y = x.^3-x.^2-3.*atan(x)+1;

Sa studiem în ce valori f îs, i schimba semnul. Pentru aceasta, mai întâi,sa schit,am graficul lui f :

>> x = -7:0.1:7;>> y = x.^3-x.^2-3.*atan(x)+1;>> plot(x,y)

Apoi determinam nis, te valori particulare în care funct,ia îs, i schimbasemnul; gasim f (−2) < 0, f (−1) > 0 apoi f (0) > 0, f (1) < 0 apoif (1) < 0, f (2) > 0, adica sunt trei zero-uri în intervalele [−2,−1] , [0, 1]s, i respectiv [1, 2] . Zero-urile se pot determina scriind:

>> zero1 = fzero(’fct_fzero’,[-2 -1])>> zero2 = fzero(’fct_fzero’,[0 1])>> zero3 = fzero(’fct_fzero’,[1 2])

s, i se va afis, a

zero1 =1.2780

zero2 =0.3204

zero3 =1.7205

(se poate face s, i proba calculând funct,ia în fiece zero gasit). �

Page 95: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.1. Rezolvarea ecuatiilor 91

Exemplul 7.2 Acelas, i rezultat se obt,ine daca apelam astfel funct,ia f :

>> zero1 = fzero(’x.^3-x.^2-3.*atan(x)+1’,[-2 -1])

>> zero2 = fzero(’x.^3-x.^2-3.*atan(x)+1’,[0 1])

>> zero3 = fzero(’x.^3-x.^2-3.*atan(x)+1’,[1 2]) �

Exemplul 7.3 Acelas, i rezultat se obt,ine daca apelam astfel funct,ia f (folo-sim un function handle):

>> zero1 = fzero(@fct_fzero,[-2 -1])

>> zero2 = fzero(@fct_fzero,[0 1])

>> zero3 = fzero(@fct_fzero,[1 2]) �

Exemplul 7.4 Acelas, i rezultat se obt,ine daca definim funct,ia f ca fiind detip inline:

>> fct_fzero = inline(’y = x.^3-x.^2-3.*atan(x)+1’)

s, i apoi o apelam

>> zero1 = fzero(fct_fzero,[-2 -1])

>> zero2 = fzero(fct_fzero,[0 1])

>> zero3 = fzero(fct_fzero,[1 2]) �

Exemplul 7.5 Acelas, i rezultat se obt,ine daca definim funct,ia f ca fiind detip anonymous (folosim un function handle):

>> fct_fzero = @(x) x.^3-x.^2-3.*atan(x)+1

s, i apoi o apelam

>> zero1 = fzero(fct_fzero,[-2 -1])

>> zero2 = fzero(fct_fzero,[0 1])

>> zero3 = fzero(fct_fzero,[1 2]) �

Exemplul 7.6 Acelas, i rezultat se obt,ine daca definim funct,ia f ca fiind detip anonymous (folosim un function handle):

>> zero1 = fzero(@(x) x.^3-x.^2-3.*atan(x)+1,[-2 -1])

>> zero2 = fzero(@(x) x.^3-x.^2-3.*atan(x)+1,[0 1])

>> zero3 = fzero(@(x) x.^3-x.^2-3.*atan(x)+1,[1 2]) �

Page 96: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

92 7. Rezolvarea numerica a unor probleme

7.2 Determinarea minimului si maximului

Ne intereseaza determinarea valorilor extreme ale unei funct,ii adica apunctelor de minim s, i maxim ale unei funct,ii scalare de o variabila reala.

Aceste valori extreme (în care funct,ia îs, i atinge minimul sau maximul)sunt s, i ele estimate prin proceduri iterative. Având în vedera ca maximulfunct,iei este minimul funct,iei opuse (i.e. punctul de maxim local x0 estedat de −f (x0) = min {−f (x)} iar valoarea maxima este data de f (x0) ),este suficient sa ne referim la procedurile de minimizare.

În MATLAB punctele de minim local ale unei funct,ii pot fi determinatecu ajutorul comenzii

x = fminbnd(functie,x1,x2)

unde:

• x este un scalar care va fi solut,ia problemei; exista s, i varianta de co-manda:

[x,fval] = fminbnd(functie,x1,x2)

unde fval este valoarea funct,iei în punctul x de minim local gasit;

• functie este funct,ia la care ne referim; aceasta poate fi introdusa înmai multe moduri (la fel ca în cazul comenzii fzero);

• x1,x2 sunt capetele intervalului unde se cauta minimul.

Evident, pentru gasirea punctelor de maxim local definim, mai întâi,funct,ia functie2 = opusul funct,iei date s, i apoi scriem

x = fminbnd(functie2,x1,x2)

Exemplul 7.7 Sa determinam punctele de minim s, i maxim local ale funct,i-ei:

f (x) = x3 − 12x2 + 40.25x− 36.5 .

Mai întâi sa schit,am graficul lui f :

>> x = -1:0.1:8;>> y = x.^3-12*x.^2+40.25*x-36.5;>> plot(x,y)

Acum avem o imagine asupra punctelor de extrem. Pentru a determinapunctele de minim local din intervalul [3, 8] scriem:

Page 97: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.3. Integrarea numerica 93

>> [x_min,f_min]=fminbnd(’x^3-12*x^2+40.25*x-36.5’,3,8)

s, i se va afis, a

x_min =5.6073

f_min =-11.8043

Pentru a determina punctele de maxim local din intervalul [0, 4] scriem:

>> x_max=fminbnd(’-x^3+12*x^2-40.25*x+36.5’,0,4)

s, i se va afis, a

x_max =2.3927

Pentru a determina punctele de minim local din intervalul [−1, 3] scriem:

>> [x_min2,f_min2]=fminbnd(’x^3-12*x^2+40.25*x-36.5’,-1,3)

s, i se va afis, a

x_min2 =-1.000

f_min2 =-89.7458 �

7.3 Integrarea numerica

Ne intereseaza calculul integralelor definite din funct,ii scalare de o vari-abila reala. Aceste integrale pot fi determinate analitic, dar, având în vedereca foarte multe funct,ii (mai ales cele din exemplele reale) nu pot fi (sau estedificil) integrate analitic (de exemplu, funct,iile sunt date doar ca o mult,imede date/puncte), este util sa avem metode numerice de calcul a integralelor.

În MATLAB integrala definita poate fi calculata cu ajutorul comenzilor:quad14 (care utilizeaza metoda Simpson de integrare numerica), quadl15

(care utilizeaza metoda Lobatto de integrare numerica) s, i trapz (care uti-lizeaza metoda trapezelor de integrare numerica; este utilizata, mai ales,

14 De la cuvântul din limba engleza quadrature.15 Ultima litera este L de la Lobatto.

Page 98: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

94 7. Rezolvarea numerica a unor probleme

pentru funct,ii care nu sunt date explicit ci doar prin puncte de tipul (x, y) )cu structurile

quad(functie,a,b,tol)

quadl(functie,a,b)

trapz(x,y)

unde:

• functie este funct,ia pe care o integram; aceasta poate fi introdusaîn mai multe moduri (la fel ca în cazul comenzii fzero);

• a,b sunt limitele de integrare; funct,ia f nu trebuie sa aiba punctesingulare în intervalul [a, b] , adica sa nu aiba asimptote verticale înpuncte din [a, b] ;

• tol este un argument opt,ional care indica eroarea cu care se dores, tesa se obt,ina rezultatul (valoarea implicita este 1.0e-6, adica 10−6 );

• x,y sunt vectori de aceeas, i dimensiune reprezentând coordonateleunor puncte (sunt punctele (x, y) cu y = f (x) , unde f este funct,ia deintegrat).

Integrala dubla se calculeaza utilizând comanda dblquad

dblquad(functie,xmin,xmax,ymin,ymax,tol,method)

unde:

• functie este funct,ia f (x, y) pe care o integram;

• xmin,xmax sunt limitele de integrare pentru variabila x;

• ymin,ymax sunt limitele de integrare pentru variabila y;

• tol este un argument opt,ional care indica eroarea cu care se dores, tesa se obt,ina rezultatul (valoarea implicita este 1.0e-6, adica 10−6 );

• method este metoda de calcul (variantele sunt quad (metoda impli-cita), quadl).

Integrala tripla se calculeaza utilizând comanda triplequad

Page 99: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.3. Integrarea numerica 95

Exemplul 7.8 Sa calculam integrala∫ 8

0

(x e−x

0.8+ 0.2

)dx.

Mai întâi sa schit,am graficul lui f pentru a avea o imagine asupra func-t,iei (funct,ia f nu trebuie sa aiba asimptote verticale în intervalul [a, b] ):

>> x = 0:0.1:8;>> y = x.*exp(-x.^0.8)+0.2;>> plot(x,y)

Pentru a calula integrala putem defini funct,ia de integrat în mai multefeluri. De exemplu:

>> int1 = quad(’x.*exp(-x.^0.8)+0.2’,0,8)

sau (daca definim funct,ia de tip anonymous)

>> fct_int1 = @(x) x.*exp(-x.^0.8)+0.2;>> int2 = quad(@fct_int,0,8)sau (daca funct,ia este deja definita într-un fis, ier separat fct_int2.m)

>> int3 = quad(@fct_int2,0,8) �

Exemplul 7.9 Sa calculam, prin metoda trapezelor, integrala∫ π

0sin (x) dx.

>> x = linspace(0,pi,100);>> y = sin(x);>> int4 = trapz(x,y) �

Exemplul 7.10 Sa calculam integrala dubla∫∫

D

(1−6x2y

)dxdy, undeD =

[−1, 1]× [0, 2] :

>> int5 = dblquad(’1-6*x.^2*y’,-1,1,0,2) �

Exemplul 7.11 Sa calculam integrala dubla∫∫

D

(1−6x2y

)dxdy, undeD =

{(x, y) : x ∈ [0, 1] , y ∈ [x, 1]} .Observam ca limitele de integrare nu mai sunt constante. Pentru a

putea folosi comanda dblquad observam ca putem scrie∫∫[0,1]×[x,1]

f (x, y) dxdy =

∫∫[0,1]×[0,1]

f (x, y) 1{y≥x} dxdy.

Notat,ia 1{y≥x} reprezinta funct,ia indicatoare a mult,imii {y ≥ x} , adica

1{y≥x} =

1, daca y ≥ x

0, în rest.

Page 100: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

96 7. Rezolvarea numerica a unor probleme

Deci

>> int6 = dblquad(’(1-6*x.^2*y).*(y-x >= 0)’,0,1,0,1)�

7.4 Algebra liniara

As, a cum am vazut deja (vezi pagina 38 si nota de subsol 9), sistemelede ecuat,ii liniare se rezolva scriind sistemul sub forma matriceala

AX = b,

unde A este matricea sistemului, X este matricea coloana a necunoscuteloriar b este matricea coloana a termenilor liberi.

Solut,ia va fi obt,inuta scriind

X = A\b

O alta metoda de rezolvare este folosind comanda

rref

aplicata matricei extinse asociate unui sistem liniar. Aceasta metoda constaîn rezolvarea sistemului folosind metoda de eliminare a lui Gauss prin carematricea este redusa la forma triunghiulara.Mai întâi scriem matrice extinsa obt,inuta prin concatenarea celor doua ma-trice:

>> Aext = [A b];

Scriem comanda

>> sol = rref(Aext)

Rezultatul sol este o matrice de forma

sol = [C d]

unde C este o matrice superior triunghiulara obt,inuta prin metoda lui Ga-uss iar C s, i d sunt astfel încât vectorul solut,ie X verifica

C*X = d

De aici se pot obt,ine us, or necunoscutele componente ale vectorului X.Evident, din forma matricei triunghiulare C s, i a matricei S deducem s, i

natura sistemului:

Page 101: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.4. Algebra liniara 97

• daca matricea triunghiulara C este chiar matricea unitate (s, i este ma-trice patratica), atunci sistemul este compatibil determinat iar solut,iasistemului este data chiar de coloana d

• daca matricea triunghiulara C are ultima linie formata doar din zero-uri iar matricea sol are s, i ea ultima linie formata din zero-uri16, atuncisistemul este compatibil nedeterminat iar solut,ia sistemului este datade rezolvarea sistemului C*X = d

• daca matricea triunghiulara C are ultima linie formata din zero-uridar matricea sol nu are ultima linie formata din zero-uri17, atuncisistemul este incompatibil.

Exemplul 7.12 Sa rezolvam sistemul cu matricele A =

5 −3 2

−3 8 4

2 4 −9

s, i b =

[10 20 9

]t:

Metoda 1:

>> A = [5 -3 2 ; -3 8 4 ; 2 4 -9]; b = [10 ; 20 ; 9];>> X1 = A\b>> proba1 = A*X1

s, i obt,inem X1 =

3.4441

3.1981

1.1867

.Metoda 2:scriem matrice extinsa obt,inuta prin concatenarea celor doua matrice:

>> Aext = [A b];

16 De exemplu, C =

1 0 −3

0 1 −2

0 0 0

s, i sol =

1 0 −3 3.4

0 1 −2 3.1

0 0 0 0

.

17 De exemplu, C =

1 0 −3

0 1 −2

0 0 0

s, i sol =

1 0 −3 3.4

0 1 −2 3.1

0 0 0 1.1

.

Page 102: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

98 7. Rezolvarea numerica a unor probleme

Solut,ia este data de

>> sol = rref(Aext)

Rezultatul sol este o matrice cu trei linii s, i patru coloane, adica deforma

sol = [C d]

În cazul nostru, obt,inem sol =

1 0 0 3.4441

0 1 0 3.1981

0 0 1 1.1867

Valorile s, i vectorii proprii asociat,i unei matrice sunt dat,i de comandaeig care, aplicata unei matrice, va returna matricea cu vectorii proprii,scris, i pe coloana, s, i o matrice diagonala cu valorile proprii pe diagonala.Mai precis, scriem

[Vect , Val] = eig(A)

unde:

• Vect este numele dat de noi matricei cu vectorii proprii, scris, i pecoloana, returnata de eig

• Val este numele dat de noi matricei diagonala cu valorile proprii pediagonala, returnata de eig

• A este matricea introdusa de noi.

MATLAB furnizeaza s, i funct,ii pentru descompunerea s, i factorizarea

Page 103: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.4. Algebra liniara 99

matricelor:

ComandaMATLAB

Semnificat,ia

[L,U] = lu(A)

factorizarea LU (lower-upper)

MATLAB returneazamatricea inferior triunghiulara Lmatricea superior triunghiulara Uastfel încât L*U = A

[Q,R] = qr(A)

factorizarea QR (ortogonal-triunghiulara)

MATLAB returneazamatricea ortogonala18Qmatricea superior triunghiulara Rastfel încât Q*R = A

R = chol(A)

factorizarea Cholesky

MATLAB returneazamatricea superior triunghiulara Rastfel încât R’*R = A

[U,D,V] = svd(A)

factorizarea SVD (singular value decomposition)

MATLAB returneazamatricea ortogonala U (de tip m×m)matricea ortogonala V (de tip n× n)matricea diagonala D (de tip m× n)astfel încât U*D*V’ = A (de tip m× n)

18 Spunem ca matricea Q este ortogonala daca este matrice patratica s, i are liniile (s, irespectiv coloanele) vectori unitate s, i ortogonali între ei, adica

Qt Q = QQt = I

sau, echivalent, inversa matricei Q coincide cu transpusa Qt, i.e. Q−1 = Qt.

Page 104: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.5 Ecuatii diferentiale

Doar un numar limitat de ecuat,ii diferent,iale pot fi rezolvate analitic.În schimb exista diverse metode numerice care pot rezolva multe tipuri deecuat,ii diferent,iale.

În cadrul acestei sect,iuni vom prezenta comenzile de rezolvare a urma-toarei ecuat,ii diferent,iale de ordinul 1 x′ (t) = f (t, x) , t ∈ [t0, T ]

x (t0) = x0 .

O solut,ie înseamna o funct,ie x = x (t) astfel încât x′ (t) = f (t, x (t)) ,pentru orice t ∈ [t0, T ] . În general sunt mai multe funct,ii care satisfacaceasta ecuat,ie. Pentru determinarea unei singure funct,ii trebuie sa folosims, i condit,ia init,iala x (t0) = x0 .

Ment,ionam ca funct,ia f poate fi vectoriala (deci avem un sistem deecuat,ii diferent,iale de ordinul întâi).

MATLAB furnizeaza urmatoarele comenzi de rezolvarea a ecuat,ii dife-rent,iale de ordinul 1:

ComandaMATLAB

Semnificat,ia

ode45

pentru probleme nonstiffrezolvare într-un singur passe foloses, te ca prima încercareeste bazata pe metoda explicita Runge-Kutta

ode23

pentru probleme nonstiffrezolvare într-un singur paseste bazata pe metoda explicita Runge-Kuttamai rapida dar mai put,in precisa ca ode45

ode113 pentru probleme nonstiffrezolvare în mai mult,i pas, i

ode15spentru probleme stiffrezolvare în mai mult,i pas, ise foloses, te daca ode45 es, ueaza

ode23spentru probleme stiffrezolvare într-un singur paspoate rezolva probleme pe care ode15s nu poate

Page 105: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.5. Ecuatii diferentiale 101

Structura comenzii ode45 este urmatoarea:

[t , y] = ode45(functie,interval,y0)

unde:

• functie este funct,ia care apare în ecuat,ia diferent,iala; aceasta poatefi introdusa în mai multe moduri (la fel ca în cazul comenzii fzero);

• interval este intervalul pe care vom obt,ine solut,ia; acesta cont,inecel put,in doua puncte: daca are doua elemente, este de tipul [t0,T]unde t0 este punctul init,ial s, i T este punctul final al domeniuluisolut,iei s, i se vor afis, a valorile solut,iei x (t) în valori din intervalul[t0,T] considerate de MATLAB; daca are mai multe elemente (pu-tem lua, de exemplu, interval=[t0:h:T] ), atunci se vor afis, a va-lorile funct,iei în valorile indicate de noi;

• y0 este valoarea indicata a funct,iei date în punctul init,ial indicat t0;

• t este vectorul coloana cu toate punctele în care s-a aproximat solut,iade catre MATLAB (primul s, i ultimul sunt respectiv t0 s, i T);

• y este vectorul coloana cu toate valoarea solut,iei x (t) în punctele vec-torului t în care s-a aproximat solut,ia de catre MATLAB (primul s, iultimul sunt respectiv t0 s, i T);

Exemplul 7.13 Sa se rezolve ecuat,ia diferent,iala de ordinul întâi: x′ (t) =t3 − 2x

t, t ∈ [1, 3]

x (1) = 4.2 .

Mai întâi, definim într-un fis, ier fct1_ODE.m funct,ia f (t, x) :

function z = fct1_ODE(t,x)z = (t.^3-2*x)./t

Apoi scriem:

>> [t , y] = ode45(@fct1_ODE,[1,3],4.2)

Daca dorim valoarea solut,iei în câteva valori, indicate de noi, atunciscriem

>> [t , y] = ode45(@fct1_ODE,[1:0.5:3],4.2)

Page 106: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

102 7. Rezolvarea numerica a unor probleme

Daca dorim graficul solut,iei x (t) , atunci luam mai multe valori în in-tervalul [1, 3] :

>> [t , y] = ode45(@fct1_ODE,[1:0.01:3],4.2);>> plot(t,y)

Daca dorim sa comparam cu rezultatele comenzii ode23 scriem

>> [t , y] = ode45(@fct1_ODE,[1,3],4.2)>> plot(t,y,’r’)>> hold on>> [u , z] = ode23(@fct1_ODE,[1,3],4.2)>> plot(u,z,’b’)>> hold off �

În cazul în care dorim sa rezolvam un sistem de ecuat,ii diferent,iale deordinul 1 introducem funct,ia vectoriala f.

În cazul în care dorim sa rezolvam o ecuat,ie diferent,iala de ordin su-perior, o putem reduce la un sistem de ecuat,ii diferent,iale de ordinul 1 s, ireducem problema la cazul de mai sus. Tehnica este prezentata în urma-torul exemplu concret.

Exemplul 7.14 Sa se rezolve ecuat,ia diferent,iala de ordinul al doilea (ecu-at,ia care descrie mis, carea pendulului neliniar): θ + ω2 sin (θ) = 0 , t ≥ 0

θ (0) = 1, θ (0) = 0 .

Mai întâi, transformam ecuat,ia de ordin superior într-un sistem de ecuat,iide ordinul întâi.

Tehnica este standard: Sa notam x1not== θ s, i x2

not== θ s, i obt,inem sistemul

de doua ecuat,ii de ordinul 1:x′1 (t) = x2 (t) ,

x′2 (t) = −ω2 sin (x1 (t)) , t ≥ 0,

x1 (0) = 1, x2 (0) = 0 ,

adica ecuat,ia de ordinul 1:

x′ (t) = f (t,x) ,

Page 107: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

7.5. Ecuatii diferentiale 103

unde

x = [x1, x2]t

f (t,x) = f (t, x1, x2)def==(x2 (t) ,−ω2 sin (x1)

)x (t0 = 0) = x0

def== [1, 0]t .

Definim într-un fis, ier fct2_ODE.m funct,ia vectoriala f (t,x) (luam ω = 2 ):

function z = fct2_ODE(t,x)z = [ x(2) ; -4*sin(x(1))];

Apoi scriem:

>> x0 = [1 ; 0];>> T = input(’Introduceti capatul intervalui T = ’);>> [t , y] = ode45(@fct2_ODE,[0,T],x0)

Solut,ia problemei date este matricea y cu doua coloane s, i mai multelinii (date de dimensiunea vectorului t) iar solut,ia x1 a problemei init,ialeeste prima coloana y(:,1)

Afis, am solut,ia

>> x1 = y(:,1) �

Page 108: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 109: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 8

Reprezentari grafice

Reprezentarile grafice (în diversele ei forme) sunt nis, te instrumente utileîn prezentarea informat,iilor. Acestea se pot seta din punctul de vedere altipului de linie folosit, al grosimii liniei, al culorii etc. Se poate adauga untitlu, comentarii, o legenda. De asemenea, mai multe grafice pot fi facute înacelas, i reper.

8.1 Grafica 2D

În MATLAB reprezentarea grafica în doua dimensiuni poate fi realizatacu comanda plot care are structura

plot(x,y,’setare_linie’,’nume_setare’,valoare_setare)

unde:

• x,y sunt doi vectori de aceeas, i dimensiune; comanda plot va creao imagine cu punctele, din plan, de tipul (xi, yi) unite printr-o liniepoligonala (aceasta figura se va deschide într-o fereastra suplimen-tara) (deci x reprezinta vectorul cu toate abscisele punctelor reprezen-tate iar y reprezinta vectorul cu toate ordonatele punctelor reprezen-tate);

• setare_linie este un argument opt,ional dat de un s, ir de carac-tere (scris între doua apostrofuri) care poate fi utilizat pentru a speci-fica anumite setari pentru tipul liniei, culoarea liniei s, i respectiv tipulde marcaj al punctelor conform tabelelor urmatoare. Ordinea în caresunt scrise comenzile legate de setari nu este importanta.

105

Page 110: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

106 8. Reprezentari grafice

Stilul liniei:

Comanda MATLAB Semnificat,ia

- linie obis, nuita (stilul implicit)

-- linie întrerupta

: linie punctata

-. linie de tip linie-punct

Culoarea liniei:

ComandaMATLAB

Semnificat,iaComandaMATLAB

Semnificat,ia

r ros, ie (red) m purpuriu (magenta)

g verde (green) y galben (yellow)

b albastru (blue) k negru (black)

c turcoaz (cyan) w alb (white)

Tipul de marcaj al punctelor:

ComandaMATLAB

Semnificat,iaComandaMATLAB

Semnificat,ia

+ marcaj cu + s marcaj cu �(square)

o marcaj cu ◦ d marcaj cu 3

(diamond)

* marcaj cu ∗ pmarcaj cu stea cu

cinci colt,uri(pentagram)

x marcaj cu × hmarcaj cu stea cu

s, ase colt,uri(hexagram)

^ marcaj cu4 < marcaj cu C

v marcaj cu5 > marcaj cu B

Page 111: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.1. Grafica 2D 107

Sa ment,ionam ca daca se specifica tipul de marcare al punctelor darnu se specifica tipul liniei, atunci comanda plot va desena doar punc-tele indicate (s, i fara linia poligonala care le unes, te);

• nume_setare este un argument opt,ional dat de un s, ir de caractere(scris între doua apostrofuri) care poate fi utilizat pentru a specificaanumite setari pentru grosimea liniei, marimea marcajului, culoareamarginii marcajului s, i culoarea cu care se umple marcajul;

• valoare_setare este valoarea posibila a setarii indicate de argu-mentul nume_setare conform tabelului urmator:

ComandaMATLAB

(nume_setare)Semnificat,ia

ComandaMATLAB

(valoare_setare)

LineWidth(sau linewidth)

grosimea liniei numar de puncte(implicit este 0.5)

MarkerSize(sau markersize)

marimeamarcajului

numar de puncte

MarkerEdgeColor(sau

markeredgecolor)

culoareamarginii

marcajului

culoarea conformtabelului precedent

MarkerFaceColor(sau

markerfacecolor)

culoareacu care se

umple marcajul

culoarea conformtabelului precedent

Exemplul 8.1 Comanda

>> plot(x,y,’r--s’,’linewidth’,2,’markersize’,12,’markeredgecolor’,’g’,’markerfacecolor’,’k’)

va crea o linie poligonala intrerupta (--), de culoare ros, ie (r), cu grosimeade 2, care unes, te punctele cu abscisele date de vectorul x iar ordonateledate de vectorul y; punctele sunt marcate cu patrate (s), de marime 12, cumarginea de culoare verde (g), cu interiorul de culoare neagra (k). �

Exemplul 8.2 Evident, pentru a crea graficul unei funct,ii y = f (x) putemutiliza comanda plot

Astfel, comenzile:

>> x = -2:.01:4;

Page 112: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

108 8. Reprezentari grafice

>> y = 3.5.^(-0.5*x).*cos(6*x);>> plot(x,y,’g’)

vor crea graficul funct,iei f (x) = 3.5−0.5x cos (6x) în culoarea verde (g). �

Exemplul 8.3 Dorim sa reprezentam doar punctele indicate (fara linia po-ligonala care le unes, te); vom specifica tipul de marcare al punctelor s, i nuvom preciza nimic despre tipul liniei.

Astfel, comenzile:

>> x = -2:.1:4;>> y = 3.5.^(-0.5*x).*cos(4*x);>> plot(x,y,’g*’)

vor crea graficul tuturor punctelor/perechilor (x, y) date de comenzile demai sus, în culoarea verde (g) s, i indicate prin semnul *. �

Pentru reprezentarea grafica a unei funct,ii scalare avem la dispozit,ie s, icomanda fplot care are structura

fplot(’functia’,limite,’setare_linie’)

unde:

• functia este funct,ia al carei grafic se dores, te a fi reprezentat (obt,i-nem o curba plana); aceasta poate fi introdusa ca un s, ir de caractere(scrise între doua apostrofuri) dar s, i prin celelalte metode cunoscute(de exemplu, utilizând un function handle);

• limite este un argument care specifica domeniul pentru x (dacascriem [xmin,xmax] ) sau domeniul pentru x s, i pentru y (daca scri-em sub forma [xmin,xmax,ymin,ymax] );

• setare_linie este un argument opt,ional s, i este acelas, i ca în cazulcomenzii plot

Exemplul 8.4 Comanda

>> fplot(’x^2+4*sin(2*x)-1’,[-3,3])

va crea graficul funct,iei f (x) = x2 + 4 sin (2x)− 1, cu x ∈ [−3, 3] . �

Exemplul 8.5 Comanda

>> fplot(’sin(x)’,[-5,5])

Page 113: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.1. Grafica 2D 109

va crea graficul funct,iei f (x) = sin (x) , cu x ∈ [−5, 5]iar comanda

>> fplot(@(x) sin(x),[-5,5])

va crea aceeas, i imagine. �

Daca dorim reprezentarea mai multor grafice în cadrul aceluias, i reper,atunci avem doua posibilitat,i.

O varianta ar fi sa scriem în cadrul unei singure comenzi plot toategraficele dorite. Astfel comanda

plot(x,y,t,u,v,w)

va reprezenta trei grafice (unul dat de vectorii x,y , altul dat de vectoriit,u iar al treilea dat de vectorii v,w) în acelas, i reper.

Evident, dupa fiecare pereche reprezentata se pot adauga s, i setari legatede tipul liniei s, i tipul marcajului.

Exemplul 8.6 Comenzile

>> x = -6:.01:6;>> plot(x,sin(x),’r--’,x,cos(x),’b:’)

vor crea, în acelas, i reper, graficele funct,iilor sin (cu o linie întrerupta, deculoare ros, ie) s, i cos (cu o linie punctata, de culoare albastra). �

Exemplul 8.7 Comenzile

>> x = -4:.01:4; y = 3*x.^3-26*x+10;>> yder = 9*x.^2-26; ydder = 18*x;>> plot(x,y,’b’,x,yder,’r--’,x,ydder,’g:’)

vor crea, în acelas, i reper, graficul funct,iei f (x) = 3x3 − 26x+ 10 împreunacu graficul derivatelor f ′ s, i f ′′. �

Alta varianta ar fi sa scriem comenzile hold on s, i hold off. Astfel,scriem o prima comanda plot s, i un prim grafic este generat; apoi scriemhold on s, i prima figura este pastrata deschisa s, i orice comanda plot ulte-rioara adauga noile grafice celui deschis de primul plot. Comanda holdoff opres, te acest proces.

Exemplul 8.8 Comenzile

>> x = -4:.01:4; y = 3*x.^3-26*x+10;

Page 114: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

110 8. Reprezentari grafice

>> yder = 9*x.^2-26; ydder = 18*x;>> plot(x,y,’b’)>> hold on>> plot(x,yder,’r--’)>> plot(x,ydder,’g:’)>> hold off

vor crea trei grafice în acelas, i reper (vezi s, i Exemplul 8.7). �

Daca dorim reprezentarea mai multor grafice în cadrul aceleas, i figuridar separat (fiecare grafic cu reperul lui), atunci avem la dispozit,ie co-manda

subplot(m,n,p)

unde m,n reprezinta împart,irea ferestrei (cu figura obt,inuta de noi) înm×nsubfiguri iar p reprezinta pozit,ia în care dorim sa amplasam graficul nostru(numerotarea se face pe linie). De exemplu, subplot(3,2,4) va împart,ifigura în 3× 2 = 6 zone s, i va afis, a graficul în a 4-a pozit,ie, adica elementulde pe linia 2 s, i coloana 2.

Exemplul 8.9 Comenzile

>> subplot(3,2,1);>> fplot(@(x) sin(x),[-pi,2*pi])>> subplot(3,2,2);>> fplot(’cos(x)’,[-pi,2*pi])>> subplot(3,2,3);>> fimplicit(@(x,y) x^2+y^2-2,[-2,2])>> subplot(3,2,5:6);>> fplot(@(x) [tan(x),sin(x),cos(x)],[-2*pi,2*pi,-4,4])

vor deschide o fereastra cu 3 × 2 = 6 regiuni în care se vor amplasa patrurepere (ultimul reper ocupa doua locuri: pozit,iile 5 s, i 6). �

Daca avem mai multe comenzi plot, atunci, în urma primei aparit,ieia comenzii plot, se deschide o fereastra cu imaginea comandata; apoi ur-matoarea comanda plot va înlocui graficul existent, în aceeas, i fereastra,cu noul grafic, s, .a.m.d.

Pentru a avea câte o fereastra pentru fiecare imagine obt,inuta este utilsa folosim, înainte de fiecare grafic obt,inut, comanda

figure

Page 115: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.1. Grafica 2D 111

(numerotarea va fi automata).Daca dorim atribuirea unui anume numar pentru o imagine obt,inuta

putem sa folosim comanda

figure(n)

unde n este numarul dat de noi figurii respective.Daca dorim un nume personalizat al figurii (pe lânga numarul care

apare automat) putem scrie

figure(’Name’,’nume_figura’)

unde nume_figura este numele care va apare în dreptul numarului figuriigenerate de noi.

Pentru a vizualiza o fereastra anume scriem în Command Window co-manda

figure(n)

unde n este numarul figurii pe care dorim sa o vedem.

Pentru a închide o fereastra cu o imagine scriem în Command Windowcomanda

close

care închide fereastra curenta cu imaginea generata de noi sau comanda

close(n)

care închide fereastra numarul n sau comanda

close all

care închide toate ferestrele cu imagini.

Dupa ce scriem comenzile plot s, i fplot sunt permise s, i anumite ele-mente de personalizare a figurilor obt,inute.

Comandaaxis([xmin,xmax,ymin,ymax])

va seta limitele de afis, are ale reperului.Comanda

axis equal

Page 116: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

112 8. Reprezentari grafice

seteaza faptul ca ambele axe vor avea aceas, i scala, iar comanda

axis square

seteaza faptul ca regiunea va fi patrata.

Comandaxlabel(’text_abscisa’)

va afis, a textul text_abscisa în dreptul axei Ox iar comanda

ylabel(’text_ordonata’)

va afis, a textul text_ordonata în dreptul axei Oy.

Comandatitle(’text_titlu’)

va afis, a un titlu al graficului cu textul text_titlu.

Comandatext(x,y,’text_comentariu’)

va afis, a textul text_comentariu cu primul caracter plasat în punctul decoordonate (x, y).

Comanda

legend(’text_1’,’text_2’,pos)

va afis, a o casut,a cu o explicat,ie de tip „legenda”, în pozit,ia data de opt,iuneapos (variantele sunt19 -1,0,1,2,3,4) cu textul text_i corespunzator fi-ecarui grafic în parte.

Comandagrid

va afis, a s, i o grila de linii orizontale s, i verticale desenate în cadrul reperului.

Ment,ionam ca textele din comenzile precedente pot fi s, i ele formatate.

Exemplul 8.10 Comenzile

>> figure(’Name’,’Graficul a doua functii’)>> t = linspace(0,4*pi,200);

19 Varianta 1 este cea implicita s, i înseamna ca legenda va fi pozit,ionata în coltul dindreapta sus

Page 117: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.1. Grafica 2D 113

>> x = sin(t); y = cos(t);>> plot(t,x,’r--’)>> hold on>> plot(t,y,’b:’)>> grid>> axis([-pi 6*pi -2 2])>> title(’Evolutia in timp’)>> xlabel(’Axa Ot (axa timpului)’)>> ylabel(’Axa Ox (axa valorilor)’)>> legend(’x = sin(t)’,’x = cos(t)’)>> hold off

vor crea, în aceas, i fereastra deschisa s, i în acelas, i reper, graficul a douafunct,ii: sin (linie întrerupta, colorata în ros, u) s, i cos (linie punctata, colorataîn albastru). Fereastra deschisa cu graficul nostru are numele „Figure1: Graficul a doua functii”s, i titlul „Evolutia in timp”; axaOx este de la −π la 6π s, i are numele „Axa Ot (axa timpului)” iar axaOy este de la −2 la 2 s, i are numele „Axa Ox (axa valorilor)”; deasemenea, apare s, i grila de linii orizontale s, i verticale precum s, i un text tip„legenda” în colt,ul din dreapta sus (modul implicit) în care am explicat ceînseamna fiecare curba. �

Pentru reprezentarea grafica a unei curbe date implicit avem la dispo-zit,ie comanda ezplot (vezi pagina 58) precum s, i comanda20 fimplicitcare are structura

fimplicit(’functia’,limite,’setare_linie’)

unde:

• functia este funct,ia implicita (data de ecuat,ia F (x, y) = 0) al careigrafic se dores, te a fi reprezentat; aceasta poate fi introdusa ca un s, irde caractere (scrise între doua apostrofuri) dar s, i prin celelalte metodecunoscute (de exemplu, utilizând un function handle);

• limite este un argument care specifica domeniul pentru x (dacascriem [xmin,xmax] ) sau domeniul pentru x s, i pentru y (daca scri-em sub forma [xmin,xmax,ymin,ymax] );

• setare_linie este un argument opt,ional s, i este acelas, i ca în cazulcomenzii plot

20 Aceasta comanda a fost introdusa începând cu versiunea R2016b a MATLAB-ului.

Page 118: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

114 8. Reprezentari grafice

Exemplul 8.11 Comenzile

>> f1 = @(x,y) x.^2 + y.^2 - 1;>> fimplicit(f1,’g:’)>> hold on>> fimplicit(@(x,y) x.^2 - y.^2 - 2)>> hold off

vor crea graficul a doua elipse date sub forma implicita. �

Pentru reprezentarea grafica a unei curbe date în coordonate polareavem la dispozit,ie comanda polar care are structura

polar(theta,rho,’setare_linie’)

unde:

• theta s, i rho sunt vectorii care definesc curba în coordonate polaredata de ρ = f (θ) , unde θ ∈ [a, b] ;

• setare_linie este un argument opt,ional s, i este acelas, i ca în cazulcomenzii plot

Exemplul 8.12 Comenzile

>> theta = 0:.01:6*pi;>> a = input(’Introduceti coeficientul a =’)>> b = input(’Introduceti coeficientul b =’)>> rho = a+b*theta;>> figure(’Name’,’O curba in coordonate polare’)>> polar(theta,rho)>> title(’Spirala lui Arhimede’)

vor crea graficul spiralei lui Arhimede, data de ecuat,ia (scrisa în coordo-nate polare) ρ = a+ bθ, cu θ ∈ [0, 6π] . Fereastra deschisa cu graficul nostruva avea numele „Figure 1: O curba in coordonate polare” s, iva avea titlul „Spirala lui Arhimede”. �

Mai exista s, i alte comenzi care produc grafice (vectorii x,y sunt deaceeas, i dimensiune s, i sunt reprezentat,i grafic):

• semilogy(x,y) axa Oy este scalata logaritmic (în baza 10) iar axaOx este liniara;

Page 119: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.2. Grafica 3D 115

• semilogx(x,y) axa Ox este scalata logaritmic (în baza 10) iar axaOy este liniara;

• loglog(x,y) ambele axe sunt scalate logaritmic (în baza 10);

• errorbar(x,y,e) afis, eaza s, i bare cu erorile, date de vectorul e,în fiecare punct;

• bar(x,y) graficul este sub forma de bare verticale;

• barh(x,y) graficul este sub forma de bare orizontale;

• stairs(x,y) graficul este sub forma de trepte;

• stem(x,y) graficul este sub forma de linii verticale;

• pie(x,y) graficul este sub forma de disc;

• hist(y) graficul este sub forma de histograma.

8.2 Grafica 3D

În MATLAB reprezentarea grafica a unei curbe în spat,iu poate fi real-izata cu comanda plot3 care are structura

plot3(x,y,z,’setare_linie’,’nume_setare’,valoare_setare)

unde:

• x,y,z sunt trei vectori de aceeas, i dimensiune; comanda plot3 vacrea o imagine cu punctele, din spat,iu, de tipul (xi, yi, zi) unite prin-tr-o linie poligonala (aceasta figura se va deschide într-o fereastra su-plimentara);

• setare_linie este un argument opt,ional cu aceas, i semnificat,ie caîn cazul comenzii plot

• nume_setare este un argument opt,ional cu aceas, i semnificat,ie ca încazul comenzii plot

• valoare_setare este valoarea posibila a setarii indicate de argu-mentul nume_setare (cu aceas, i semnificat,ie ca în cazul comenziiplot).

Page 120: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

116 8. Reprezentari grafice

Funct,ioneaza s, i celelalte setari s, i opt,iuni din cazul 2D: de exemplu,comenzile figure, hold on, subplot, axis, xlabel, grid, close

Exemplul 8.13 Evident, daca o curba este data de ecuat,iile parametricex = x (t) ,

y = y (t) ,

z = z (t) , t ∈ [a, b] ,

atunci graficul ei se poate realiza cu comanda plot3Astfel, comenzile:

>> t = 0:.01:6*pi;>> x = sqrt(t).*sin(2*t);>> y = sqrt(t).*cos(2*t);>> z = 0.5*t;>> figure(’Name’,’Graficul unei spirale in spatiu’)>> plot3(x,y,z,’m’,’linewidth’,1)>> grid>> xlabel(’Axa Ox’); ylabel(’Axa Oy’); zlabel(’Axa Oz’)

vor crea graficul curbei

x (t) =

√t sin (2t) ,

y (t) =√t cos (2t) ,

z (t) = 0.5 t, t ∈ [0, 6π] ,

în culoarea pur-

puriu (m), cu o linie de grosime 1, cu o grila de linii s, i cu axele marcate cunis, te texte. �

Exemplul 8.14 Comenzile:

>> t = -6*pi:.001:6*pi;>> x = (1+t.^2).*sin(15*t);>> y = (1+t.^2).*cos(15*t);>> z = t;>> figure(’Name’,’Graficul altei spirale in spatiu’)>> plot3(x,y,z,’b’)>> grid>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)

Page 121: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.2. Grafica 3D 117

vor crea graficul curbei

x (t) =

(1 + t2

)sin (20t) ,

y (t) =(1 + t2

)cos (20t) ,

z (t) = t, t ∈ [−6π, 6π] .�

Pentru reprezentarea grafica a unei curbe data parametric avem la dis-pozit,ie s, i comanda ezplot321 care are structura

ezplot3(functiax,functiay,functiaz,[tmin,tmax])

unde:

• functiax, functiay , functiaz sunt ecuat,iile parametrice ale cur-bei în spat,iu; aceasta poate fi introdusa ca un s, ir de caractere (scriseîntre doua apostrofuri) dar s, i prin celelalte metode cunoscute (de e-xemplu, utilizând un function handle);

• [tmin,tmax] este un argument opt,ional ce indica intervalul de va-riat,ie pentru parametrul curbei; domeniul implicit este [0, 2π] .

Exemplul 8.15 Comenzile:

>> figure(’Name’,’Graficul elicei’)>> ezplot3(’cos(t)’,’sin(t)’,’t’,[0,8*pi])>> grid>> xlabel(’Axa Ox’); ylabel(’Axa Oy’); zlabel(’Axa Oz’)

vor crea graficul curbei

x (t) = cos (t) ,

y (t) = sin (t) ,

z (t) = t, t ∈ [0, 8π] .�

Pentru reprezentarea grafica a unei suprafet,e data de ecuat,ia explicitaz = f (x, y) , unde (x, y) ∈ [a, b] × [c, d] (evident, este inclus s, i cazul uneisuprafet,e data de ecuat,iile parametrice x = x (t) , y = y (t) , z = z (t) undet ∈ [t0 , T ] ) avem la dispozit,ie comenzile mesh s, i surf

Primul pas consta în crearea unei ret,ele de puncte. În acest sens cream,mai întâi, vectorii

x = a:h1:b; y = c:h2:d;

21 Easy-to-use 3-D parametric curve plotter.

Page 122: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

118 8. Reprezentari grafice

apoi, folosind vectorii de mai sus, se creaza o ret,ea de puncte în plan X,Ydata de comanda

[X,Y] = meshgrid(x,y)

Astfel vom obt,ine doua matrice cont,inând coordonatele, abscisele s, i res-pectiv ordonatele, unor puncte din plan care realizeaza o divizare a drep-tunghiului [a, b]× [c, d] .

Apoi definim variabila Z conform funct,iei care da suprafat,a prin

Z = f(X,Y);

(matricea Z are elementul Z(i,j) dat de valoarea funct,iei f în punctulX(i,j) s, i Y(i,j) ).

În final reprezentarea grafica a suprafet,ei se va obt,ine scriind una dintrecomenzile:

mesh(X,Y,Z) sau surf(X,Y,Z)

Exemplul 8.16 Daca lucram cu (x, y) ∈ [−1, 3] × [1, 3] , atunci sa luam, deexemplu, divizarea cu pasul 1

>> x = -1:3; y = 1:3;

s, i apoi sa scriem

>> [X,Y] = meshgrid(x,y)

Vom obt,ine

X =

-1 0 1 2 3

-1 0 1 2 3

-1 0 1 2 3

s, iY =

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

Aceste matrice reprezinta exact abscisele s, i respectiv ordonatele unorpuncte din plan care realizeaza o divizare a dreptunghiului [−1, 3]× [1, 3] ,adica punctele (as, a cum arata ele în plan):

Page 123: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.2. Grafica 3D 119

(−1, 3) (0, 3) (1, 3) (2, 3) (3, 3)

(−1, 2) (0, 2) (1, 2) (2, 2) (3, 2)

(−1, 1) (0, 1) (1, 1) (2, 1) (3, 1)

Exemplul 8.17 Comenzile:

>> figure(’Name’,’Graficul unei suprafete’)>> x = -1:.01:3; y = 1:.01:4;>> [X,Y] = meshgrid(x,y);>> Z = X.*Y.^2./(X.^2+Y.^2);>> mesh(X,Y,Z)>> grid>> xlabel(’Axa Ox’); ylabel(’Axa Oy’); zlabel(’Axa Oz’)

vor crea graficul suprafet,ei z =xy2

x2 + y2, cu (x, y) ∈ [−1, 3]× [1, 4] .

Mai exista s, i alte comenzi care produc grafice de suprafet,e (matriceleX,Y,Z au aceas, i semnificat,ie ca în comanda mesh):

• ezmesh(functia) Easy-to-Use mesh;

• meshz(X,Y,Z) Mesh Curtain Plot;

• meshc(X,Y,Z) Mesh and Countour Plot;

• ezsurf(X,Y,Z) Easy-to-Use surf;

• surfc(X,Y,Z) Surface and Countour Plot;

• surfl(X,Y,Z) Surface Plot with Lighting;

• bar3(Y) 3D Bar Plot; graficul este sub forma de bare verticale; fie-care element din Y reprezinta înalt,imea unei bare;

• pie3(X,explode) graficul este sub forma de disc în spat,iu.

Page 124: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

120 8. Reprezentari grafice

Exemplul 8.18 Comenzile

>> x = -3:0.1:3; y =x;>> [X,Y] = meshgrid(x,y);>> Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*sin(X)

.*cos(0.5*Y);

>> figure(’Name’,’Graficul facut cu diverse comenzi’)>> grid

>> subplot(2,4,1)>> mesh(X,Y,Z)>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’mesh’)

>> subplot(2,4,2)>> ezmesh(’1.8^(-1.5*sqrt(x^2+y^2))*sin(x)

*cos(0.5*y)’,[-3,3])>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’ezmesh’)

>> subplot(2,4,3)>> meshz(X,Y,Z)>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’meshz’)

>> subplot(2,4,4)>> meshc(X,Y,Z)>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’meshc’)

>> subplot(2,4,5)>> surf(X,Y,Z)>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’surf’)

>> subplot(2,4,6)

Page 125: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

8.2. Grafica 3D 121

>> ezsurf(’1.8^(-1.5*sqrt(x^2+y^2))*sin(x)

*cos(0.5*y)’,[-3,3])>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’ezsurf’)

>> subplot(2,4,7)>> surfc(X,Y,Z)>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’surfc’)

>> subplot(2,4,8)>> surfl(X,Y,Z)>> xlabel(’Axa Ox’); ylabel(’Axa Oy’);

zlabel(’Axa Oz’)>> legend(’surfl’)

vor deschide o fereastra (figure) cu un nume dat de noi, cu 2×4 = 8 regiuniîn care se vor amplasa opt repere cu graficul (facut cu diverse comenzi)suprafet,ei data de

z = 1.8−1.5√x2+y2 sin(x) cos(0.5 y), cu (x, y) ∈ [−3, 3]× [−3, 3] .

Am adaugat s, i o legenda în care precizam cu ce comanda este facut graficuls, i am etichetat s, i axele. �

Page 126: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 127: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Capitolul 9

Calcul simbolic22

Toate operat,iile facute de MATLAB în capitolele precedente sunt nu-merice. Dar multe aplicat,ii necesita operat,ii simbolice (sau calcul simbolic)care sunt operat,ii matematice cu variabile simbolice (variabile carora nu leeste specificata o valoare numerica anume, atunci când este efectuat calcu-lul).

Rezultatul unei asemenea operat,ii este o expresie matematica în aceleas, ivariabile simbolice.

Calculul simbolic poate fi folosit doar daca este instalat toolbox-ul Sym-bolic Math. Operat,iile elementare s, i funct,iile pentru efectuarea operat,iilorsimbolice au aceeas, i sintaxa ca în cazul operat,iilor numerice.

MATLAB se poate ocupa de multe tipuri de operat,ii simbolice:

• simplificarea expresiilor matematice s, i substituirea unei variabile sim-bolice cu o valoare data;

• rezolvarea unui sistem de ecuat,ii (nu neaparat liniare);

• limite de funct,ii;

• derivarea;

• integrarea;

• rezolvarea ecuat,iilor diferent,iale ordinare.

Punctul de plecare pentru operat,iile simbolice consta în definirea, înprealabil, a obiectelor (sau variabilelor) simbolice. Acestea pot fi variabile

22 Acest capitol nu este pentru Examen !

123

Page 128: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

124 9. Calcul simbolic

sau numere. Apoi variabilele simbolice declarate sunt utilizate pentru acrea expresii simbolice ce vor fi, eventual, utilizate în operat,ii matematicesimbolice.

9.1 Obiectele simbolice si expresiile simbolice

Un obiect simbolic poate fi o variabila careia nu i-am atribuit nici o val-oare numerica sau un numar sau o expresie simbolica formata din alte vari-abile simbolice sau numere.

Obiectele simbolice pot fi create utilizând comenzile sym s, i/sau symsAstfel, comanda

nume_obiect = sym(’x’)

va crea o variabila simbolica x cu numele nume_obiect (x este un s, ir decaractere ce poate fi format exclusiv din una sau mai multe litere s, i/sauuna sau mai multe cifre, s, i fara spat,ii sau alte semne între ele).

Comandasyms x y z

va crea trei variabile simbolice x,y s, i respectiv z

Exemplul 9.1 Comanda:

>> g = sym(’gamma’)

va crea obiectul simbolic gamma cu numele g

iar comanda

>> a = sym(’a’)

va crea obiectul simbolic a cu numele a

iar comanda

>> syms a b c

va crea trei obiecte simbolice: a,b s, i c �

O expresie simbolica este o expresie matematica formata din una saumai multe obiecte simbolice (create în prealabil). În acest sens se pot apelaoperat,iile s, i funct,iile utilizate în cazul operat,iilor numerice.

Page 129: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.1. Obiectele simbolice si expresiile simbolice 125

Exemplul 9.2 Comenzile:

>> syms a b c x>> f = a*x^2 + b*x + c

vor crea expresia simbolica f s, i va afis, a23

f =a*x^2 + b*x + c

iar comanda:

>> f = sym(’a*x^2 + b*x + c’)

va crea expresia simbolica f s, i va afis, a acelas, i lucru:

f =a*x^2 + b*x + c �

Exemplul 9.3 Comenzile:

>> syms a b c x>> g = 2*a/3 + 4*a/5 - 6*x + x/3 + 2*5/3 -2.2

vor crea expresia simbolica g data de2a

3+

4a

5− 6x +

x

3+

2 · 53− 2.2 s, i va

afis, a s, i varianta cu calculul elementar efectuat:

g =(22*a)/15 - (17*x)/3 + 17/15 �

Diferent,a dintre calculul numeric s, i cel simbolic este ilustrat de urma-torul exemplu:

Exemplul 9.4 Comenzile:

>> a = sym(3); b = sym(5);>> e = b/a + sqrt(2)

vor afis, a (constantele 3 s, i 5 au fost asftel transformate în variabile simbolice)

e =2^(1/2) + 5/3

iar comenzile

>> c = 3; d = 5;>> f = d/c + sqrt(2)

23 Afisarea unei expresii simbolice va fi facuta întotdeauna fara indent.

Page 130: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

126 9. Calcul simbolic

vor afis, a

f =3.0808 �

Putem crea s, i matrice simbolice s, i putem opera cu ele:

Exemplul 9.5 Comenzile:

>> syms a b c d>> A = [a b ; c d]

vor afis, a

A =[a , b][c , d]

iar comenzile

>> B = det(A), C = inv(A), D = A*C

vor afis, a determinantul, inversa matricei A s, i respectiv produsul matricelorA cu C �

Pentru a gasi ce variabile simbolice cont,ine o anumita expresie simboli-ca avem la dispozit,ie comanda findsym care are structura:

findsym(S) sau findsym(S,n)

unde S este expresia simbolica iar n este numarul de variabile simbolice cese dores, te a fi afis, ate.

Exemplul 9.6 Comenzile:

>> syms x a b c;>> f = a*x^2 + b*x + c;>> findsym(f)

vor afis, a

ans =a,b,c,x

iar comanda

>> findsym(f,1)

Page 131: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.2. Schimbarea formei unei expresii simbolice 127

va afis, a

ans =x �

9.2 Schimbarea formei unei expresii simbolice

Comanda collect este utilizata pentru a grupa variabilele cu aceas, iputere (s, i a le scrie în ordinea descrescatoare a puterilor), s, i are structura:

collect(S) sau collect(S,nume_var)

unde S este expresia simbolica iar nume_var este variabila avuta în vedere(în caz ca S cont,ine mai multe variabile s, i se prefera gruparea dupa oanume variabila).

Exemplul 9.7 Comenzile:

>> syms x y;>> S = (x-5+y)*(x-y^2-exp(x));>> T = collect(S)>> U = collect(S,y)

vor afis, a

T =x^2+(-y^2+y-exp(x)-5)*x-(y^2+exp(x))*(y-5)U =-y^3+(5-x)*y^2+(x-exp(x))*y+(x-exp(x))*(x-5) �

Comanda expand este utilizata pentru a dezvolta o expresie care cont,ineproduse de paranteze de termeni s, i/sau funct,ii trigonometrice, exponent,ialesau logaritmice (utilizând formule algebrice), s, i are structura:

expand(S)

unde S este expresia simbolica.

Exemplul 9.8 Comenzile:

>> syms a x y;>> S = (x-a)*(y+a)*sin(x-y);>> T = expand(S)

vor afis, a valoarea lui T cu calculele efectuate s, i dezvoltând sin(x-y) �

Page 132: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

128 9. Calcul simbolic

Comanda factor este utilizata pentru a scrie un polinom ca un produsde polinoame de grad mai mic, s, i are structura:

factor(S)

unde S este expresia simbolica.

Exemplul 9.9 Comenzile:

>> syms x;>> S = x^3 + 3*x^2 - x - 3;>> T = factor(S)

vor afis, aT =[x + 3, x - 1, x + 1] �

Comanda simplify este utilizata pentru a simplifica forma unei ex-presii simbolice (conform operat,iilor matematice ce apar în expresie), s, i arestructura:

simplify(S)

unde S este expresia simbolica.

Exemplul 9.10 Comenzile:

>> syms x y;>> S = (x+y)/(1/x+1/y);>> T = simplify(S)

vor afis, a

T =x*y �

9.3 Calculul numeric al unei expresii simbolice

Comanda subs este utilizata pentru a substitui o valoare numerica încadrul unei expresii simbolice, s, i are structura:

subs(S,{var1,var2},{val1,val2})

Page 133: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.3. Calculul numeric al unei expresii simbolice 129

unde S este expresia simbolica, var1 s, i var2 sunt variabilele pe care vremsa le substituim cu valorile date de valorile numerice val1 s, i respectivval2 (val1 s, i/sau val2 pot fi scalari dar s, i vectori sau matrice de valori).

Daca dorim înlocuirea unei singure variabile, atunci pot lipsi acoladeledin structura comenzii.

Daca expresia S cont,ine o singura variabila simbolica, atunci acea vari-abila poate sa nu mai fie ment,ionata în structura comenzii, ci doar valoareacu care se dores, te a fi înlocuita.

Exemplul 9.11 Comenzile:

>> syms x;>> S = 3*x^2 - 5*x + 1;>> subs(S,x,1)

vor afis, a

ans =-1

iar comanda

>> subs(S,1)

va afis, a acelas, i lucru:

ans =-1

iar comanda

>> subs(S,x,[0,1])

va afis, a

ans =[1,-1] �

Exemplul 9.12 Comenzile:

>> syms a x;>> S = a*x^2 - 5*x + 1;>> subs(S,x,1)

vor afis, a

ans =a-4

Page 134: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

130 9. Calcul simbolic

iar comanda

>> subs(S,a,1)

va afis, a

ans =

x^2 - 5*x + 1

iar comanda

>> subs(S,{a,x},{3,1})

va afis, a

ans =

-1 �

9.4 Sume

Comanda symsum este utilizata pentru a calcula sume de tipulk=j∑k=i

xk ,

s, i are structura:

symsum(xk,k,i,j)

unde xk este termenul general, k este variabila în raport cu care se cal-culeaza suma (daca xk cont,ine o singura variabila simbolica, atunci acestargument poate lipsi), i,j sunt capetele sumei.

Exemplul 9.13 Comenzile:

>> syms k n;

>> xk1 = k; xk2 = k^2; xk3 = k^3;

>> sum1 = symsum(xk1,1,n)

>> sum2 = symsum(xk1,k,1,n)

>> sum3 = symsum(xk2,1,n)

>> sum4 = symsum(xk3,1,n)

>> sum5 = symsum(1/k^2,1,inf)

Page 135: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.5. Rezolvarea ecuatiilor algebrice 131

vor afis, a diverse sume de termeni. Vom obt,ine, bineînt,eles,∑k=n

k=1k =

n (n+ 1)

2

∑k=n

k=1k2 =

n (n+ 1) (2n+ 1)

6∑k=n

k=1k3 =

n2 (n+ 1)2

4∑k=∞

k=1

1

k2=π2

6

9.5 Rezolvarea ecuatiilor algebrice

Comanda solve este utilizata pentru a rezolva un sistem de ecuat,ii, s, iare structura:

[sol1 sol2] = solve(eq1,eq2,var1,var2)

unde:

• eq1 = 0, eq2 = 0 reprezinta sistemul de ecuat,ii avut în vedere;eq1 (sau eq2) poate fi numele unei expresii simbolice definite an-terior sau o expresie ce este scrisa direct în comanda, sub forma de s, irde caractere;

• o ecuat,ie de tipul f (x) = g (x) poate s, i ea fi rezolvata scriind argu-mentul ’f(x) = g(x)’, i.e. ca un s, ir de caractere (între doua apos-trofuri);

• var1 s, i var2 sunt variabilele în raport cu care se dores, te rezolvareaecuat,iilor (trebuie scrise în caz ca sunt mai multe variabile simbolice);

• sol1 este solut,ia pentru var1 iar sol2 este solut,ia pentru var2 ;daca nu avem un sistem de ecuat,ii, atunci pot lipsi parantezele pa-trate din structura comenzii.

• daca ecuat,ia admite mai mult de o solut,ie, atunci solut,ia este o coloa-na cu solut,iile simbolice.

Exemplul 9.14 Comenzile:

>> syms x;

Page 136: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

132 9. Calcul simbolic

>> f = 3*exp(x) - 5;

>> sol = solve(f)

vor afis, a

sol =

log(5/3)

iar comanda

>> sol2 = solve(3*exp(x) - 5)

va afis, a acelas, i lucru:

sol2 =

log(5/3)

iar comanda

>> sol3 = solve(3*exp(x) - 5,x)

va afis, a acelas, i lucru:

sol3 =

log(5/3)

iar comanda

>> sol4 = solve(’3*exp(x) - 5’,x)

va afis, a acelas, i lucru:

sol4 =

log(5/3) �

Exemplul 9.15 Comenzile:

>> syms x;

>> sol = solve(’cos(2*x)+3*sin(x)=2’)

vor afis, a

sol =

pi/2

pi/6

(5*pi)/6 �

Page 137: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.5. Rezolvarea ecuatiilor algebrice 133

Exemplul 9.16 Comenzile:

>> syms a b x;>> g = x^2 + (b-2*a)*x - 2*a*b;>> sol = solve(g,x)

vor afis, a

sol =2*a-b �

Exemplul 9.17 Comenzile:

>> syms x y;>> [solx soly] = solve(5*x-y-2,2*x+2*y-8)

vor afis, a

solx =1soly =3 �

Exemplul 9.18 Comenzile:

>> syms x y;>> [solx soly] = solve(’5*x-y-2’,’2*x+2*y-8’)

vor afis, a acelas, i lucru ca în exemplul precedent. �

Exemplul 9.19 Comenzile:

>> syms x y;>> [solx soly] = solve(’5*x-y-2’,’2*x+2*y-8’,x,y)

vor afis, a acelas, i lucru ca în exemplul precedent. �

Exemplul 9.20 Comenzile:

>> syms x y t;>> S = 10*x+12*y+16*t;>> [solx soly] = solve(S,’5*x-y=13*t’)

vor afis, asolx =2*tsoly =-3*t �

Page 138: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

134 9. Calcul simbolic

Exemplul 9.21 Comenzile:

>> syms a b c x;>> f = a*x^2 + b*x + c;>> solve(f)

vor afis, a solut,iile ecuat,iei f = 0 în raport cu variabila x

Comanda

>> solve(f,x)

va afis, a acelas, i lucru. �

Comanda solve este utila, de exemplu, s, i în determinarea punctelorde intersect,i dintre doua curbe date:

Exemplul 9.22 Comenzile:

>> syms x y R;>> [solx soly] = solve(’(x-2)^2+(y-4)^2=R^2’,’2*y-x=1’)

vor afis, a punctele de intersect,ie ale cercului (x− 2)2 + (y − 4)2 = R2 cudreapta 2y − x = 1. �

9.6 Limite de functii

Comanda limit este utilizata pentru a calcula limite de funct,ii, s, i arestructura:

limit(S,var,a,’d’)

unde:

• S este expresia simbolica (definita anterior sau scrisa direct în co-manda, sub forma de s, ir de caractere);

• var este variabila în raport cu care se calculeaza limita (daca S cont,i-ne o singura variabila simbolica, atunci acest argument poate lipsi);

• a este punctul limita; acesta poate fi numar sau variabila simbolica;

• d este un argument opt,ional s, i indica direct,ia limitei, în cazul în carese dores, te calculul unor limite laterale; variantele sunt right s, i left

Page 139: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.7. Derivarea 135

Exemplul 9.23 Comenzile:

>> syms n x;>> S1 = (1+1/n)^n; S2 = sin(x)/x; S3 = abs(x)/x;>> lim1 = limit(S1,inf)>> lim2 = limit(S1,n,inf)>> lim3 = limit(S2,0)>> lim4 = limit(S2,x,0)>> lim5 = limit(S3,x,0,’right’)>> lim6 = limit(S3,x,0,’left’)

vor afis, a diverse limite. �

9.7 Derivarea

Comanda diff este utilizata pentru a deriva o expresie simbolica, s, iare structura:

diff(S,var,n)

unde S este expresia simbolica (definita anterior sau scrisa direct în co-manda, sub forma de s, ir de caractere), var este variabila în raport cu carese calculeaza derivata (daca S cont,ine o singura variabila simbolica, atunciacest argument poate lipsi) iar n este ordinul de derivare (daca ordinuldorit este 1, atunci acest argument poate lipsi).

Exemplul 9.24 Comenzile:

>> syms a b x y;>> S = a*exp(4*x)+b*cos(x*y);>> der1 = diff(S)% derivarea se face in raport cu variabila implicita>> der2 = diff(S,x)>> der3 = diff(S,y)>> der4 = diff(a*exp(4*x)+b*cos(x*y),x)>> der5 = diff(’a*exp(4*x)+b*cos(x*y)’,x)>> der6 = diff(S,x,2)>> der7 = diff(a*exp(4*x)+b*cos(x*y),x,2)>> der8 = diff(’a*exp(4*x)+b*cos(x*y)’,x,2)

vor afis, a diverse tipuri de derivate: în raport cu x s, i în raport cu y, cu Sdefinita în prealabil sau introdusa direct în comanda ca s, ir de caractere, deordinul 1 sau de ordinul al 2-lea. �

Page 140: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

136 9. Calcul simbolic

Matricea jacobiana

D (f, g)

D (x, y):=

∂f

∂x

∂f

∂y

∂g

∂x

∂g

∂y

se calculeaza folosind comanda

jacobian([f;g],[x,y])

Exemplul 9.25 Consideram coordonatele polare s, i ecuat,iile de legatura cucoordonatele carteziene.

Comenzile:

>> syms rho theta x y;>> x = rho*cos(theta); y = rho*sin(theta);>> J1 = jacobian([x,y],[rho,theta])>> det1 = det(J1)>> det2 = simplify(det(J1))

vor afis, a matricea jacobiana precum s, i determinantul ei (s, i apoi într-o formasimplificata, adica valoarea ρ). �

Exemplul 9.26 Consideram coordonatele sferice s, i ecuat,iile de legatura cucoordonatele carteziene.

Comenzile:

>> syms rho phi theta x y z;>> x = rho*cos(theta)*sin(phi);>> y = rho*sin(theta)*sin(phi);>> z = rho*cos(phi);>> J2 = jacobian([x,y,z],[rho,theta,phi])>> det3 = det(J2)>> det4 = simplify(det(J2))

vor afis, a matricea jacobiana precum s, i determinantul ei (s, i apoi într-o formasimplificata, adica valoarea −ρ2 sin (ϕ) ). �

9.8 Integrarea

Comanda int este utilizata pentru a integra o expresie simbolica, s, i arestructura:

int(S,var,a,b)

Page 141: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.8. Integrarea 137

unde:

• S este expresia simbolica (definita anterior sau scrisa direct în co-manda, sub forma de s, ir de caractere);

• var este variabila în raport cu care se calculeaza integrala (daca Scont,ine o singura variabila simbolica, atunci acest argument poatelipsi);

• a,b sunt limitele de integrare; acestea pot fi numere sau variabile sim-bolice (daca nu se dores, te determinarea unei integrale definite ci aunei primitive, atunci aceste argumente lipsesc).

Exemplul 9.27 Comenzile:

>> syms x y;

>> S = 2*exp(4*x)-3*x*y;

>> int1 = int(S)

% integrarea se face in raport cu variabila implicita

>> int2 = int(S,x)

>> int3 = int(S,y)

>> int4 = int(2*exp(4*x)-3*x*y,x)

>> int5 = int(’2*exp(4*x)-3*x*y’,x)

>> int6 = int(S,x,0,1)

>> int7 = int(2*exp(4*x)-3*x*y,x,0,1)

>> int8 = int(’2*exp(4*x)-3*x*y’,x,0,1)

vor afis, a diverse tipuri de integrale: în raport cu x s, i în raport cu y, cu Sdefinita în prealabil sau introdusa direct în comanda ca s, ir de caractere, culimite de integrare sau fara limite de integrare. �

Exemplul 9.28 Putem calcula s, i integrale improprii, de exemplu integrala

lui Gauss,∫ +∞

−∞e−x

2dx :

>> syms x;

>> f = exp(-x^2);

>> intGauss = int(f,-inf,inf)

Valoarea afis, ata va fi, bineînt,eles,√π. �

Page 142: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

138 9. Calcul simbolic

9.9 Rezolvarea ecuatiilor diferentiale ordinare

Comanda dsolve este utilizata pentru a determina solut,ia unei ecuat,iidiferent,iale ordinare, s, i are structura:

dsolve(’eq1’,’eq2’,’cond1’,’cond2’,’var’)

unde:

• eq1 este ecuat,ia diferent,iala ce trebuie scrisa direct în comanda, sub

forma de s, ir de caractere: derivata y′ saudy

dttrebuie scrisa sub forma

Dy; de exemplu, ecuat,ia diferent,iala y′ (t) + 3y (t) = 5 va fi scrisa subforma ’Dy+3y=5’; daca este un sistem de ecuat,ii apare s, i eq2;

• cond1,cond2 etc. sunt condit,iile int,iale ce trebuie satisfacute desolut,ia ecuat,ii diferent,iale;

• var este variabila în raport cu care se calculeaza solut,ia ecuat,iei; dacaeq cont,ine o singura variabila simbolica, atunci acest argument poatelipsi; daca eq cont,ine mai multe variabile simbolice s, i nu indicamvariabila în raport cu care sa rezolvam ecuat,ia, atunci se lucreaza cuvariabila implicita (luata t).

Exemplul 9.29 Solut,ia ecuat,iei diferent,iale de ordinul întâi

y′ = 2y + 4t (saudy

dt= 2y + 4t )

se va gasi scriind

>> dsolve(’Dy=2*y+4*t’)% nu este necesar sa definim, in prealabil,% variabile simbolice

s, i vom obt,ineans =C1*exp(2*t) - 2*t - 1 �

Exemplul 9.30 Solut,ia ecuat,iei diferent,iale de ordinul al doilea

d2x

dt2+ 2

dx

dt+ x = 0 (sau x′′ + 2x′ + x = 0 )

se va gasi scriind

Page 143: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

9.9. Rezolvarea ecuatiilor diferentiale ordinare 139

>> dsolve(’D2x+2*Dx+x=0’)% nu este necesar sa definim, in prealabil,% variabile simbolice

s, i vom obt,ineans =C1*exp(-t) + C2*t*exp(-t) �

Exemplul 9.31 Solut,ia ecuat,iei diferent,iale

ds

dt= ax2 (sau s′ (t) = ax2, cu x independent de t )

se va gasi scriind

>> dsolve(’Ds=a*x^2’)% nu este necesar sa definim, in prealabil,% variabile simbolice

% nu am precizat variabila,% deci se va considera t drept variabila implicita

s, i vom obt,ineans =a*t*x^2 + C1 �

Exemplul 9.32 Solut,ia ecuat,iei diferent,iale

ds

dx= ax2 (sau s′ (x) = ax2 )

se va gasi scriind

>> dsolve(’Ds=a*x^2’,’x’)

s, i vom obt,ineans =(a*x^3)/3 + C1 �

Exemplul 9.33 Solut,ia ecuat,iei diferent,iale

ds

da= ax2 (sau s′ (a) = ax2 )

se va gasi scriind

>> dsolve(’Ds=a*x^2’,’a’)

Page 144: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

140 9. Calcul simbolic

s, i vom obt,ineans =(a^2*x^2)/2 + C1 �

Exemplul 9.34 Solut,ia ecuat,iei diferent,iale cu condit,ii init,iale y′ + 3y = 5

y (0) = 1

se va gasi scriind

>> dsolve(’Dy+3*y=5’,’y(0)=1’)

s, i vom obt,ineans =5/3 - (2*exp(-3*t))/3 �

Exemplul 9.35 Solut,ia ecuat,iei diferent,iale cu condit,ii init,iale y′′ − 2y′ + 2y = 0

y (0) = 1, y′ (0) = 0

se va gasi scriind

>> dsolve(’D2y-2*Dy+2*y’,’y(0)=1’,’Dy(0)=0’)

s, i vom obt,ineans =exp(t)*cos(t) - exp(t)*sin(t) �

Exemplul 9.36 Solut,ia sistemului de ecuat,ii diferent,iale cu condit,ii init,ialex′ = x+ y

y′ = t− x

x (0) = 1, y (0) = 2

se va gasi scriind

>> [solx soly] = dsolve(’Dx=x+y’,’Dy=t-x’,’x(0)=1’,’y(0)=2’)

Astfel se va afis, a solut,ia solx s, i solut,ia soly �

Page 145: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Bibliografie selectiva

[1] Stormy Attaway, MATLAB R©. A practical Introduction to Programmingand Problem Solving (Fourth Edition), Elsevier, Amsterdam, 2017.

[2] Tobin A. Driscoll, Learning MATLAB, Society for Industrial and AppliedMathematics (SIAM), 2009.

[3] Amos Gilat, MATLAB R©. An Introduction with Applications (Fifth Edition),Wiley, 2015.

[4] Duane Hanselman, Bruce Littlefield, Mastering MATLAB R©, Pearson,2012.

[5] Brian R. Hunt, Ronald L. Lipsman, Jonathan M. Rosenberg, A Guide toMATLAB R© for Beginners and Experienced Users (Second Edition), Cam-bridge University Press, 2006.

[6] William J. Palm III, A Concise Introduction to MATLAB, McGraw-Hill,New York, 2008.

[7] Rudra Patrap, Getting Started with MATLAB. A Quick Introduction forScientists and Engineers, Oxford University Press, 2010.

141

Page 146: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 147: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

MATLAB – LABORATOARE

Page 148: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 149: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 11∗

1. Sa se evalueze urmatoarele expresii s, i sa se afis, eze rezultatul evaluarii:

(a) x =3 + 22

53 + 1+ 4

23−1 · 8; (b) y = 7x− 5;

(c) sinπ

4+ cos2

3; (d) ey − ln (e) .

2. Sa se atribuie variabilei x valoarea 3. Apoi sa se foloseasca pentru a evalua expresiile:

(a)x3

6; (b) ex

2−1 ; (c)x− 1√x2 + 1

;

(d) x3 sin (x− 2x) ; (e) 213x ; (f)

arctg (x)

1 + x2.

3. Sa se genereze s, i sa se afis, eze:

(a) Un vector cu elemente de la − 1 la 1, cu pasul 1 s, i apoi cu pasul 0.01.

Sa se determine s, i sa se afis, eze dimensiunea vectorului ın ambele cazuri;

(b) O matrice A de tip 2× 3 cu toate elementele 1;

(c) O matrice B prin adaugarea liniei [2 3 4] la matricea A de la (b) ;

(d) O matrice C prin replicarea matricei B ın 3× 2 blocuri.

Sa se determine s, i sa se afis, eze dimensiunea lui C.

Sa se afis, eze linia a 5-a s, i coloana a 2-a a lui C.

Sa se s, tearga ultimele doua linii s, i doua coloane ale lui C.

4. Sa se genereze s, i sa se afis, eze vectorul x = (xn)n=1,100 , unde

(a) xn = n (n+ 1) ; (b) xn = n√n+ 1.

5. Sa se genereze s, i sa se afis, eze urmatoarele matrice:

(a) de tip (2n+ 1)× (2n+ 1) , cu n ≥ 20, n ∈ N, de forma

−n 1 0 0 · · · 0 0

1 −n+ 1 1 0 · · · 0 0

0 1 −n+ 2 1 · · · 0 0

......

.... . .

......

...

0 0 0 1 n− 2 1 0

0 0 0 0 1 n− 1 1

0 0 0 0 0 1 n

;

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1

Page 150: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic – Laboratorul 11 (MATLAB)

(b) de tip n× n, cu n ≥ 20, n ∈ N, de forma

2 −1 0 0 · · · 0 0

−1 2 −1 0 · · · 0 0

0 −1 2 −1 · · · 0 0

......

.... . .

......

...

0 0 0 −1 2 −1 0

0 0 0 0 −1 2 −1

0 0 0 0 0 −1 2

;

(c) de tip n× n, cu n ≥ 20, n ∈ N, de forma

1 n 0 0 · · · 0 0

−2 2 n− 1 0 · · · 0 0

0 −3 3 n− 2 · · · 0 0

......

.... . .

......

...

0 0 0 −n+ 2 n− 2 3 0

0 0 0 0 −n+ 1 n− 1 2

0 0 0 0 0 −n n

.

2

Page 151: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab11_MATLAB_script.m 1 of 3

% problema 1.ax1 = (3+2^2)/(5^3+1)+4^(2/3-1)*8 % problema 1.by1 = 7*x1-5 % problema 1.cz1 = sin(pi/4)+(cos(2*pi/3))^2 % problema 1.dw1 = exp(y1)-log(exp(1)) % problema 2.ax = 3 ; x2a = x^3/6 % problema 2.bx = 3 ; x2b = exp(x^2-1) % problema 2.cx = 3 ; x2c = (x-1)/sqrt(1+x^2) % problema 2.dx = 3 ; x2d = (x^3)*sin(x-2^x) % problema 2.ex = 3 ; x2e = 2^(1/(3*x)) % problema 2.fx = 3 ; x2f = atan(x)/(1+x^2) % problema 3.ax3b = -1:1dimx = length(x3b)y3b = -1:0.01:1;dimy = length(y3b) % problema 3.bA = ones(2,3)

Page 152: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab11_MATLAB_script.m 2 of 3

% problema 3.c;% varianta: linia noua este prima linie a matricei AA = ones(2,3) ; B1 = [ [2 3 4] ; A] % problema 3.c;% varianta: linia noua este ultima linie a matricei AA = ones(2,3) ; B2 = [A ; [2 3 4]] % problema 3.c;% varianta: linia noua este intre prima si a doua linie a matricei AA = ones(2,3); B3 = [A(1,:) ; [2 3 4] ; A(2,:)] % problema 3.c;% varianta: adaug o coloana noua intre coloana a 2-a si a 3-a a matricei AA = ones(2,3); B3 = [A(:,1:2) , [2 3]' , A(:,3)] % problema 3.dA = ones(2,3); B = [A ; [2 3 4]];C = repmat(B,3,2)dimC = size(C)l5C = C(5,:)c2C = C(:,2)partC = C(1:7,1:4) % problema 4.a% vom lua cazul n=1:10% (trebuie scris si in cazul n=1:100, dar fara a afisa rezultatul)m = 1:10 , x_m = m.*(m+1)% introducerea de spatii intre . si operator va conduce la erori % apoi scriem cazul:n = 1:100 ; x_n = n.*(n+1);% introducerea de spatii intre . si operator va conduce la erori % problema 4.bn = 1:100 ; y_n = n.*sqrt(n)+1;% introducerea de spatii intre . si operator va conduce la erori % problema 5.a; vom lua cazul n=7% (trebuie scris si in cazul n=50, dar fara a afisa rezultatul)A1=diag(-7:7)

Page 153: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab11_MATLAB_script.m 3 of 3

B1=diag(diag(eye(14)),1) % ce face comanda "diag(diag(matrice))"?C1=diag(diag(eye(14)),-1)D1=A1+B1+C1 % problema 5.b; vom lua cazul n=7% (trebuie scris si in cazul n=50, dar fara a afisa rezultatul)A2=2*eye(7)B2=diag(diag(eye(6)),1)C2=diag(diag(eye(6)),-1)D2=A2-B2-C2 % problema 5.c; vom lua cazul n=7% (trebuie scris si in cazul n=50, dar fara a afisa rezultatul)A3=diag(1:7)B3=diag(7:-1:2,1)C3=diag(-2:-1:-7,-1)D3=A3+B3+C3

Page 154: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 155: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 12∗

1. Sa se genereze s, i sa se afis, eze matricea

A =

1 2 −1 37 6 0 13 −2 −1 −10 1 −4 5

.

(a) Sa se scrie transpusa matricei A;

(b) Sa se calculeze At A s, i AAt;

(c) Sa se determine rangul, determinantul s, i inversa matricei A;

(d) Fie B = At. Sa se calculeze 3A− 5B3.

2. Sa se rezolve urmatoarele sisteme de ecuat,ii liniare:

(a)

5x1 + 2x2 + x3 = 12

5x1 − 6x2 + 2x3 = −1

−4x1 + 2x2 + x3 = 3

(b)

2x1 − x2 = 1

−x1 + 2x2 − x3 = 1

−x2 + 2x3 − x4 = 1

...

−xn−2 + 2xn−1 − xn = 1

−xn−1 + 2xn = 1

pentru n ≥ 2, n ∈ N.

3. Fie tablourile:

(a) x = [1 2 3 ; 0 − 2 5 ; 6 3 9] ; (b) x = −10 : .1 : 10; (c) z = 5 ∗ randn(5).

Sa se scrie o comanda care sa determine numarul de elemente mai mari ca 1 ale acestor tablouri.

4. Sa se construiasca o matrice de tip 25 × 25 care sa cont,ina toate numerele naturale de la 1 la 625as, ezate ın ordine crescatoare, linie dupa linie.

Sa se ınlocuiasca cu 0 numerele care nu sunt prime.

Sa se scrie comenzile corespunzatoare ıntr-un fis, ier script.

5. Sa se construiasca o matrice de tip 5 × 5 de numere aleatoare, uniform distribuite ın intervalul[0, 1]. Sa se calculeze media aritmetica a elementelor mai mari decat 0.5. Sa se scrie comenzilecorespunzatoare ıntr-un fis, ier script.

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1

Page 156: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic – Laboratorul 12 (MATLAB)

6. Sa se construiasca un vector cu elementele xn =(−1)n+1

2n− 1, unde n ia valoari de la 1 la 100. Sa se

calculeze suma elementelor acestui vector.

7. Sa se calculeze produsul 1 · 2 · 3 · . . . · 24 · 25.

8. Sa se calculeze suma 1 + 22 + 32 + . . .+ 1992 + 2002.

9. Sa se aproximeze numeric suma seriei∑∞

n=1

1

n (n+ 1).

10. Sa se creeze, ıntr-un fis, ier de tip M, funct,ia f, unde:

(a) f (x) =x3

1 + x2; (b) f (x) =

2x

2 + 5x; (c) f (x) =

x

1 +√x.

Sa se apeleze funct,ia f cu argumentele x = 2.3 s, i respectiv x = [0 0.2 . . . 1.8 2] .

2

Page 157: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab12_MATLAB_script.m 1 of 4

% problema 1.aA = [1 2 -1 3 ; 7 6 0 1 ; 3 -2 -1 -1 ; 0 1 -4 5]trans1_A = A.'% sau varianta care transpune si face si conjugatele elementelor% care este identica in cazul nostru cu A'trans2_A = A' % problema 1.bA = [1 2 -1 3 ; 7 6 0 1 ; 3 -2 -1 -1 ; 0 1 -4 5];prod1 = A*A'prod2 = A'*A % problema 1.cA = [1 2 -1 3 ; 7 6 0 1 ; 3 -2 -1 -1 ; 0 1 -4 5];rang_A = rank(A)det_A = det(A)inv_A = inv(A) % problema 1.dA = [1 2 -1 3 ; 7 6 0 1 ; 3 -2 -1 -1 ; 0 1 -4 5];B = A'C = 3*A-5*B^3 % problema 2.a% avem un sistem liniar de tipul AX=b% solutia este data de X = A\b% solutia este data si de X = A^(-1)*b% dar precizia ei nu este la fel de mare in comparatie cu A\B% (diferentele se vad cand dimensiunea sistemului este mai mare% si cand matricea A are forma mai putin regulata)A = [5 2 1 ; 5 -6 2 ; -4 2 1 ]; b = [12 ; -1 ; 3]met1a_X = A\bmet2a_X = A^(-1)*b % matricea sistemului este cea generata la Lab 11, Problema 5.b% vom lua cazul n=7% (trebuie scris si in orice alt caz, dar fara a afisa rezultatul)A = 2*eye(7)-diag(diag(eye(6)),1)-diag(diag(eye(6)),-1)b = ones(7,1)met1a_X = A\bmet2a_X = A^(-1)*b

Page 158: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab12_MATLAB_script.m 2 of 4

% problema 3x = [1 2 3 ; 0 -2 5 ; 6 3 9]y = -10:.1:10;z = 5*rand(5) % am generat numere aleatoare distribuite uniform in intervalul (0,5)w = 5*randn(5)% am generat numere aleatoare distribuite normal standard (medie 0 si dispersie 1)% si apoi le-am inmutit cu 5% am obtinut numere aleatoare distribuite normal de medie 0 si dispersie 5^2)a1 = x>1b1 = sum(x>1)suma_x = sum(sum(x>1)) a2 = y>1b2 = sum(y>1)suma_y = sum(sum(y>1)) a3 = z>1b3 = sum(z>1)suma_z = sum(sum(z>1)) a4 = w>1b4 = sum(w>1)suma_w = sum(sum(w>1)) % problema 4A = 1:49;B = reshape(A,7,7)C = B'D = isprime(C)E = D.*C % sau varianta (dar e mai greu de vizualizat)A = 1:625;B = reshape(A,25,25)C = B'D = isprime(C)E = D.*C % problema 5A = rand(5);B = A>0.5;C = A.*B;sum(sum(C))/sum(sum(B))

Page 159: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab12_MATLAB_script.m 3 of 4

% problema 6% vom lua cazul n=1:10% (trebuie scris si in cazul n=1:100, dar fara a afisa rezultatul)m = 1:10,x_m = ((-1).^(m+1))./(2*m-1)% introducerea de spatii intre . si operator va conduce la erori SumaElem1 = sum(x_m) % apoi scriem cazul:n = 1:100;x_n = ((-1).^(n+1))./(2*n-1);% introducerea de spatii intre . si operator va conduce la erori SumaElem2 = sum(x_n) % problema 7x = 1:25 ; Prod = prod(x) % problema 8n = 1:200 ; y_n = n.^2;% introducerea de spatii intre . si operator va conduce la erori SumaElem3 = sum(y_n) % problema 9n = 1:300 ; z_n = (n.*(n+1)).^(-1);% introducerea de spatii intre . si operator va conduce la erori SumaElem4 = sum(z_n) % problema 10val1_f1 = functia1(1)x = 2.3val2_f1 = functia1(x)y = 0:.2:2;val3_f1 = functia1(y) val1_f2 = functia2(1)x = 2.3

Page 160: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:31 D:\Lab12_MATLAB_script.m 4 of 4

val2_f2 = functia2(x)y = 0:.2:2;val3_f2 = functia2(y) val1_f3 = functia3(1)x = 2.3val2_f3 = functia3(x)y = 0:.2:2;val3_f3 = functia3(y)

Page 161: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:41 D:\functia1.m 1 of 1

function y = functia1(x) % definim, cu un fisier de tip M, o functie in cadrul Laboratorului 12,% Problema 10(a) y = (x.^3)./(1+x.^2);

Page 162: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:42 D:\functia2.m 1 of 1

function y = functia2(x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 12, Problema 10(b)%} y = (2.^x)./(2+5.^x);

Page 163: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:42 D:\functia3.m 1 of 1

function y = functia3(x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 12, Problema 10(c)%} y = x./(1+sqrt(x));

Page 164: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 165: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 13 & 14∗

1. Sa se defineasca funct,ia f : R → R, f (x) = x2 + ex ın cele trei moduri: utilizand un fis, ier de tip M,funct,ie de tip inline, funct,ie de tip anonymous (cu un function handle).

Apoi sa se calculeze valorile funct,iei ın argumentele:

(a) x1 = 1 ; (b) x2 = −2 ; (c) x3 =[2 3

]. (d) x4 =

[1 23 4

].

2. Sa se scrie o funct,ie care genereaza, pentru o valoare n ∈ N ceruta de program, o matricea A de tipn× n cu elementele

ai,j =1

i+ j − 1, i, j = 1, n .

3. Sa se scrie o funct,ie care genereaza, pentru o valoare n ∈ N ceruta de program, matricea de tip(2n)× (2n) :

1 1 0 0 0 · · · · · · · · · 0 0 0

1 2 2 0 0 · · · · · · · · · 0 0 0

0 0 3 1 0 · · · · · · · · · 0 0 0

0 0 1 4 2 · · · · · · · · · 0 0 0...

......

.... . .

......

......

......

......

......

... n...

......

......

......

......

...... n

......

......

......

......

......

.... . .

......

...0 0 0 0 0 · · · · · · 1 3 2 0

0 0 0 0 0 · · · · · · · · · 0 2 1

0 0 0 0 0 · · · · · · · · · 0 1 1

.

4. Sa se calculeze eficient sumaSn =

∑n

k=1

1

k2.

Cat de bine aproximeaza Sn suma seriei∑∞

k=1

1

k2=π2

6?

Sa se afis, eze texte cu explicat,ii s, i cu rezultatele obt,inute (conform variabilei n introdusa de noi)folosind comanda disp s, i apoi folosind comanda fprintf (textul trebuie sa cont,ina s, i caractere s, ivariabilele definite ın cadrul problemei).

5. Sa se creeze, ıntr-un fis, ier de tip M, funct,ia f care evalueaza dezvoltarea Mac-Laurin a funct,ieiln (x+ 1) :

ln (x+ 1) =∑∞

n=1(−1)n+1 xn

n, pentru orice x ∈ (−1, 1].

Sa se apeleze funct,ia f cu argumentele x din intervalul [−0.5, 0.5] . Sa se verifice ce se ıntampla candx se apropie de −1 sau de 1.

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1

Page 166: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic – Laboratorul 13 & 14 (MATLAB)

Sa se afis, eze texte cu explicat,ii s, i cu rezultatele obt,inute (conform variabilei x introdusa de noi)folosind comanda disp s, i apoi folosind comanda fprintf (textul trebuie sa cont,ina s, i caractere s, ivariabilele definite ın cadrul problemei).

6. Sa se creeze, ıntr-un fis, ier de tip M, funct,ia f aproximeaza, prin metoda trapezelor, integrala uneifunct,ii pe intervalul [a, b] . Algoritmul este urmatorul:

(a) se defines, te integrandul f s, i se indica limitele de integrare a, b;

(b) intervalul [a, b] se ımparte ın n subintervale, se calculeaza lungimea h := (b− a) /n a subinter-valului s, i se obt,in nodurile echidistante x1, . . . , xn ;

(c) se aproximeaza integrala prin termenul I =h

2

∑n

k=1(f (xk) + f (xk+1)) ;

(d) se afis, eaza valoarea aproximativa a integralei∫ b

a

f (x) dx.

Sa se afis, eze texte cu explicat,ii s, i cu rezultatele obt,inute (conform variabilelor a, b, n, f introdusede noi) folosind comanda disp s, i apoi folosind comanda fprintf (textul trebuie sa cont,ina s, icaractere s, i variabilele definite ın cadrul problemei).

7. Sa se determine care e cea mai mare valoare a lui n astfel ıncat

Sn =∑n

k=1k2 < L ,

unde L este dat.

Sa se afis, eze texte cu explicat,ii s, i cu rezultatele obt,inute (conform variabilei L introdusa de noi)folosind comanda disp s, i apoi folosind comanda fprintf (textul trebuie sa cont,ina s, i caractere s, ivariabilele definite ın cadrul problemei).

2

Page 167: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

02/12/19 17:59 D:\Lab13_Lab14_MATLAB_script.m 1 of 4

%{problema 1_modalitatea 1:cream separat o functie de tip M cu numele functia4.mo apelam scriind:%}y1 = functia4(1)y2 = functia4(-2)y3 = functia4([2 3])y4 = functia4([1 2 ; 3 4]) % problema 1_modalitatea 2: cream o functie de tip inlinefunctia4b = inline('x.^2+exp(x)')z1 = functia4b(1)z2 = functia4b(-2)z3 = functia4b([2 3])z4 = functia4b([1 2 ; 3 4]) % problema 1_modalitatea 3: cream o functie de tip anonymous (folosim un function handle)functia4c = @(x) x.^2+exp(x)w1 = functia4c(1)w2 = functia4c(-2)w3 = functia4c([2 3])w4 = functia4c([1 2 ; 3 4]) %{problema 2: cream separat o functie de tip M cu numele functia5.mo apelam scriind, de exemplu:%}H5 = functia5(5)H7 = functia5(7) %{problema 3: cream separat o functie de tip M cu numele functia6.mo apelam scriind, de exemplu:%}M5 = functia6(5)M7 = functia6(7)

Page 168: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

02/12/19 17:59 D:\Lab13_Lab14_MATLAB_script.m 2 of 4

%{problema 4: trebuie scrisa pentru n=10, n=50, n=100 etc.pentru a vedea cum arata eroarea%}k = 1:10; S_n = sum(1./k.^2)suma = pi^2/6eroarea = abs(S_n - suma) %{problema 5: trebuie scrisa pentru n=4, n=10, n=100, n=1000 etc.pentru a vedea cum arata eroarea%}x1 = -.5; val1 = functia7(x1,4)suma1 = log(x1+1)eroarea1 = abs(val1 - suma1) x2 = .5; val2 = functia7(x2,4)suma2 = log(x2+1)eroarea2 = abs(val2 - suma2) x3 = 1; val3 = functia7(x3,4)suma3 = log(x3+1)eroarea3 = abs(val3 - suma3) x4 = -1; val4 = functia7(x4,1000)suma4 = log(x4+1)eroarea4 = abs(val4 - suma4) % problema 6_modalitatea 1:%{definim, mai intai, functia8, intr-un fisier de tip M, care defineste algoritmul de calcul(metoda de aproximare a integralei (alta decat cea folosita de MATLAB))careia vrem sa ii aproximam integrala%} % apoi introducem efectiv functia pe care vrem sa o integram;% alegem functia exp(-x^2/2)

Page 169: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

02/12/19 17:59 D:\Lab13_Lab14_MATLAB_script.m 3 of 4

fct_test = inline('exp(-x.^2/2)')a = input('Introduceti limita a de la integrala definita = ')b = input('Introduceti limita b de la integrala definita = ')n = input('Introduceti numarul de pasi in aproximarea cu metoda trapezelor = ')I_aprox = functia8(a,b,n,fct_test)I = quad('exp(-x.^2/2)',a,b)%{calculez si integrala cu metoda MATLAB, adica, de exemplu, folosind comanda quad(vine de la quadrature: adica metoda de a determina o aproximare numerica aintegralei definite prin metoda cuadraturilor (i.e. calcul de arii cunoscute))%}fprintf('Am aproximat integrala definita, dintr-o functie data,\nde la a = %.2f la b = %.2f cu un numar de n = %.0f de pasi\n',a,b,n)fprintf('\n')fprintf('Integrala calculata de noi prin metoda trapezelor are valoarea %.8f \niar valoarea ei calculata de MATLAB prin comanda quad este %.8f\n',I_aprox,I)fprintf('\n')fprintf('Diferenta dintre cele doua valori/metode de calcul este de %.12f\n',abs(I-I_aprox))fprintf('\n') % problema 6_modalitatea 2:%{definim, mai intai, functia9, intr-un fisier de tip M, care defineste algoritmul de calcul(metoda de aproximare a integralei (alta decat cea folosita de MATLAB))careia vrem sa ii aproximam integrala(functia9 este functia8 scrisa in alta modalitate)%} % apoi introducem efectiv functia pe care vrem sa o integram;% alegem functia exp(-x^2/2) fct_test2 = inline('exp(-x.^2/2)')a = input('Introduceti limita a de la integrala definita = ')b = input('Introduceti limita b de la integrala definita = ')n = input('Introduceti numarul de pasi in aproximarea cu metoda trapezelor = ')I_aprox2 = functia9(a,b,n,fct_test2)I = quad('exp(-x.^2/2)',a,b)%{calculez si integrala cu metoda MATLAB, adica, de exemplu, folosind comanda quad%}fprintf('Am aproximat integrala definita, dintr-o functie data,\nde la a = %.2f la b = %.2f cu un numar de n = %.0f de pasi\n',a,b,n)fprintf('\n')fprintf('Integrala calculata de noi prin metoda trapezelor are valoarea %.8f \niar valoarea ei calculata de MATLAB prin comanda quad este %.8f\n',I_aprox2,I)fprintf('\n')

Page 170: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

02/12/19 17:59 D:\Lab13_Lab14_MATLAB_script.m 4 of 4

fprintf('Diferenta dintre cele doua valori/metode de calcul este de %.12f\n',abs(I-I_aprox2))fprintf('\n') % problema 7_modalitatea 1:L = input('Introduceti pragul L = ')s = 0; k = 0;while s < L - (k+1)^2 k = k+1; s = s + k^2;endfprintf('Suma de patrate de valoare maxima care este mai mica decat L=%.2f este %.2f\n',L,s)fprintf('\n')fprintf('Ea este obtinuta pentru adunarea primilor %.0f termeni\n',k)fprintf('\n') % problema 7_modalitatea 2:L = input('Introduceti pragul L = ');n = input('Introduceti numarul de termeni n = ');k = 1:n;s2 = cumsum(k.^2)% gasim termenii care verifica: suma patratelor este < L dat de noi% si luam maximul acestorarang_max = max(find(s2<L))fprintf('Suma de patrate de valoare maxima \ncare este mai mica decat L = %.2f\neste obtinuta pentru rangul %.0f\n',L,rang_max)

Page 171: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:43 D:\functia4.m 1 of 1

function y = functia4(x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13 & 14, Problema 1%} y = x.^2+exp(x); end

Page 172: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:43 D:\functia5.m 1 of 1

function y = functia5(n) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13 & 14, Problema 2%} for i = 1:n for j = 1:n y(i,j)=1./(i+j-1); endend end

Page 173: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:44 D:\functia6.m 1 of 1

function y = functia6(n) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13 & 14, Problema 3%} x = 1:n; y = n:-1:1; z = [x , y]; A = diag(z);a = repmat([1 2],1,n-1); b = [a , 1]; B = diag(b,1);c = repmat([1 0],1,n-1); d = [c , 1]; C = diag(d,-1);y = A + B + C; end

Page 174: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:44 D:\functia7.m 1 of 1

function y = functia7(x,n) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13 & 14, Problema 5%} k = 1:n;y = sum((-1).^(k+1).*x.^k./k); end

Page 175: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:45 D:\functia8.m 1 of 1

function y = functia8(a,b,n,f) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13 & 14, Problema 6%} h = (b-a)/n;x = a:h:b;suma = 0;for k = 1:n suma = suma + f(x(k)) + f(x(k+1));endy = (h/2)*suma; end

Page 176: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:45 D:\functia9.m 1 of 1

function y = functia9(a,b,n,f) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13 & 14, Problema 6 (a 2-a modalitate (o alta varianta la functia8))%} h = (b-a)/n;x = a:h:b;sir1 = f(x(1:n));sir2 = f(x(2:(n+1))); y = (h/2)*sum(sir1+sir2); end

Page 177: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 15 & 16∗

1. Sa se reprezinte grafic funct,ia f : [0, 2π]→ R data de

f (x) = ex sin (x) .

2. Sa se reprezinte grafic funct,ia y = f (x) data de ecuat,iile parametrice{x (t) = 1 + |t| ,

y (t) =∣∣1− t2∣∣ , t ∈ [−2, 2] .

Sa se foloseasca s, i comanda subplot pentru a desena graficele funct,iilor x (t) , y (t) s, i y (x) .

3. Sa se reprezinte grafic funct,ia y = f (x) data ın coordonate polare de

r = 2 sin (2θ) , θ ∈ [0, 2π] .

4. Sa se reprezinte grafic funct,ia y = f (x) data ın coordonate polare de

r2 = 2 cos (2θ) , θ ∈ [0, 2π]

(graficul obt,inut se numes, te Lemniscata lui Bernoulli (data ın coordonate polare)).

5. Sa se reprezinte grafic funct,ia y = f (x) data ın coordonate polare de

r = sin (2θ) cos (2θ) , θ ∈ [0, 2π] .

6. Sa se reprezinte grafic funct,ia y = f (x) data implicit de(x2 + y2 − 1

)3+ 27x2y2 = 0, (x, y) ∈ [−1, 1]× [−1, 1]

(graficul obt,inut se numes, te Astroida (data ın coordonate carteziene, sub forma implicita)).

7. Sa se reprezinte grafic funct,ia y = f (x) data implicit de(x2 + y2

)2= x2 − y2, (x, y) ∈ [−1, 1]× [−1, 1]

(graficul obt,inut se numes, te Lemniscata lui Bernoulli (data ın coordonate carteziene, sub formaimplicita)).

8. Sa se reprezinte grafic funct,ia y = f (x) data implicit de

x3 + y3 − 3xy = 0, x ∈ [−a, a] ,

unde a este o valoare introdusa de noi.

(graficul obt,inut se numes, te Foliul lui Descartes1 (dat ın coordonate carteziene, sub forma im-plicita)).

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1 Pentru alte exemple de curbe interesante vezi [1], ıncepand cu pagina 152 (sunt prezentate ecuat,ii s, i coduri MATLAB pen-tru curbele: Loxodroma, Cicloida, Epicicloida (incluzand Cardioida), Hipocicloida (incluzand Astroida), Spirala lui Arhimede,Lemniscata lui Bernoulli, Curbe Lissajous)

1

Page 178: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic – Laboratorul 15 & 16 (MATLAB) Bibliografie

9. Sa se reprezinte grafic cercul de centru (2, 3) s, i de raza R = 4 (folosind ecuat,ia implicita a cercului).

10. Sa se reprezinte grafic cercul de centru (x0, y0) s, i de raza R (folosind ecuat,ia implicita a cercului).

11. Sa se scrie un program care calculeaza radacinile reale ale ecuat,iei de gradul al doilea

ax2 + bx+ c = 0, a, b, c ∈ R, a 6= 0,

punand ın evident, a pe acelas, i grafic radacinile gasite (daca este cazul), maximul sau minimulfunct,iei.

12. Sa se defineasca urmatoarea funct,ie cu ramuri s, i apoi sa se reprezinte grafic: f : [−1, 1]→ R data de

f (x) =

{−x, x ∈ [−1, 0),

x2, x ∈ [0, 1] .

Bibliografie

[1] Nicoleta Breaz, Marian Craciun, Pastorel Gas, par, Maria Miroiu, Iuliana Paraschiv-Munteanu, Mode-larea matematica prin MATLAB, Editura StudIS, Ias, i, 2006.

2

Page 179: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab15_Lab16_MATLAB_script.m 1 of 5

% problema 1, modalitatea 1figure(1)x = 0:0.01:2*pi;y = exp(x).*sin(x);plot(x,y) % problema 1, modalitatea 2functia_ex1_lab11 = inline('exp(x).*sin(x)')figure(2)ezplot(functia_ex1_lab11, [0 , 2*pi]) % problema 2t = -2:0.01:2;x = 1+abs(t); y = abs(1-t.^2);figure('Name','O functie data parametric')% folosim si comanda "subplot" pentru a desena 3 grafice diferite in cadrul% aceleasi figuri numita "Figure 3: O functie data parametric"subplot(1,3,1); plot(t,x)title('Graficul functiei x(t)'); gridsubplot(1,3,2); plot(t,y)title('Graficul functiei y(t)'); gridsubplot(1,3,3); plot(x,y)title('Graficul functiei y(x)'); gridaxis([0 4 -1 5])% fiecare grafic va avea titlul ei% cel de-al treilea grafic are axa Ox de la 0 la 4 si Oy de la -1 la 5% la fiecare grafic apare si grila de linii orizontale si verticale. %{% Avem si varianta mai simpla:figure(3)t = -1:0.01:1;x = 1+abs(t);y = abs(1-t.^2);plot(x,y)%} % problema 3figure(4)

Page 180: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab15_Lab16_MATLAB_script.m 2 of 5

% folosim si comanda "subplot" pentru a desena 2 grafice diferite in cadrul% aceleasi figuri numita "Figure 4"theta1 = 0:0.01:pi; r1 = 2*sin(2*theta1);theta2 = 0:0.01:2*pi; r2 = 2*sin(2*theta2);subplot(1,2,1)polar(theta1,r1)subplot(1,2,2)polar(theta2,r2) % problema 5figure(5)theta = 0:0.01:2*pi;r = sin(2*theta).*cos(2*theta);polar(theta,r) % problema 6figure(6)ezplot('(x.^2+y.^2-1).^3+27*x.^2*y.^2', [-1 1 -1 1]) % problema 7figure(7)ezplot('(x.^2+y.^2).^2 = x.^2-y.^2', [-1 1 -1 1]) % problema 9x0 = 2; y0 = 3; R = 4figure(8)ezplot(@(x,y) (x-x0).^2+(y-y0).^2 - R.^2) % problema 10x0 = input('Introduceti abscisa centrului, x_0 = ');y0 = input('Introduceti ordonata centrului, y_0 = ');R = input('Introduceti raza cercului R = ');figure(9)ezplot(@(x,y) (x-x0).^2+(y-y0).^2 - R.^2)

Page 181: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab15_Lab16_MATLAB_script.m 3 of 5

% problema 11a = input('Introduceti coeficientul nenul a = ');b = input('Introduceti coeficientul b = ');c = input('Introduceti coeficientul c = ');figure(10)coef = [a b c];rad = roots(coef) % am determinat zero-urile cu ajutorul comenzii roots aplicata pentru polinoamefct_pol = @(x) a*x.^2+b.*x+cval0 = input('Introduceti valoarea in jurul careia sa cautam solutia = ');rad_val0 = fzero(fct_pol,val0)ezplot(fct_pol) rad_sort = sort(rad)%{am scris radacinile in ordine crescatoarea astfel incat sa la pot folosiin determinarea minimului/maximului; le vom folosi scriind rad_sort(1) si rad_sort(2)%}if a<0 val_min = nan fprintf('Deoarece %.2f este <0, functia nu admite puncte de minim (local)\n',a)else val_min = fminbnd(fct_pol,rad_sort(1),rad_sort(2))end fct_pol2 = @(x) -a*x.^2-b.*x-c %{am definit o noua functie = opusul primeiaacum o pot folosi in determinarea maximuluix_maxim(f) = x_minim(-f)%}if a<0 val_max = fminbnd(fct_pol2,rad_sort(1),rad_sort(2))else val_max = nan fprintf('Deoarece %.2f este >0, functia nu admite puncte de maxim (local)\n',a)end % desenam acum un grafic in care sa apara si graficul functiei si anumite puncte particularea1 = input('Introduceti acum intervalul pentru doriti sa desenam graficul functiei. Primul punct = ' );b1 = input('Introduceti acum intervalul pentru doriti sa desenam graficul functiei. Al doilea punct = ' );x = a1:0.01:b1;y = fct_pol(x); figure(11)

Page 182: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab15_Lab16_MATLAB_script.m 4 of 5

plot(x,y)% !! mai multe grafice in acelasi reper% folosim comanda: hold on - hold offhold onplot(rad_sort,fct_pol(rad_sort),'r*') plot(val_min,fct_pol(val_min),'gx') plot(val_max,fct_pol(val_max),'bx')hold off%{ r = red (culoarea liniei (punctelor) desenate cu plot) g = green (culoarea liniei (punctelor) desenate cu plot) b = blue (culoarea liniei (punctelor) desenate cu plot) * = marcarea cu * a liniei (punctelor) desenate cu plot (se foloseste, de exemplu, daca desenam doar cateva puncte, pentru a le scoate in evidenta) x = marcarea cu x a liniei (punctelor) desenate cu plot (se foloseste, de exemplu, daca desenam doar cateva puncte, pentru a le scoate in evidenta)%} % !! mai multe grafice in acelasi reper% folosim un singur plot:figure(12)plot(x,y,rad_sort,fct_pol(rad_sort),'r*',val_min,fct_pol(val_min),'gx',val_max,fct_pol(val_max),'bx') % problema 12% daca vrem doar valori ale functiei definim functia10.m si o apelamx10 = input('Introduceti valoarea in care vreti sa calculati functia = ');val_x10 = functia10(x10) % daca vrem doar valori ale functiei definim, intr-un mod similar, functia11.m% si o apelamx10_var2 = input('Introduceti valoarea in care vreti sa calculati functia = ');val_x10_var2 = functia11(x10_var2) % daca vrem sa reprezentam grafic functia din enuntfigure(13)x = -1:0.01:1;y = (-x).*(x<0) + (x.^2).*(x>=0);plot(x,y,'r:')% : = marcarea cu o linie punctata a liniei (punctelor) desenate cu plot

Page 183: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab15_Lab16_MATLAB_script.m 5 of 5

% daca vrem sa reprezentam grafic functia din enunt (modalitatea 2)figure(14)x = -1:0.01:1; n = length(x); for i = 1:n if x(i)<0 y(i) = -x(i); else y(i) = x(i)^2; endend plot(x,y,'b--')% -- = marcarea cu o linie intrerupta a liniei (punctelor) desenate cu plot

Page 184: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 185: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:46 D:\functia10.m 1 of 1

function y = functia10(x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 15 & 16, Problema 12%}if x < -1 y = nan; fprintf('Valoarea %.2f introdusa nu este din domeniul functiei f\n',x)elseif x <= 0 y = -x;elseif x <= 1 y = x.^2;else y = nan; fprintf('Valoarea %.2f introdusa nu este din domeniul functiei f\n',x)end end

Page 186: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:46 D:\functia11.m 1 of 1

function y = functia11(x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 15 & 16, Problema 12 (varianta in care domeniul este [-1,1] )%} if x >= -1 if x <=0 y = -x; elseif x<=1 y = x.^2; endend end

Page 187: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 17 & 18∗

1. Sa se reprezinte grafic funct,ia f data de ecuat,iile parametrice

x (t) = sin t,

y (t) = cos t,

z (t) = t, t ∈ [−5π, 5π] .

2. Sa se reprezinte grafic funct,ia f : [2, 5]× [1, 3]→ R data de f (x, y) = x+ 2y − 4.

3. Sa se reprezinte grafic suprafat,a data de z = 1− x2 − y2, cu x, y ∈ [−3, 3] .

4. Sa se reprezinte grafic suprafat,a data de ecuat,iile parametrice

x = ρ cos θ,

y = ρ sin θ,

z = ρ, ρ ∈ [0, 1] , θ ∈ [0, 2π] .

5. Sa se reprezinte grafic sfera de centru (x0, y0, z0) s, i de raza R data de ecuat,iile parametricex = x0 +R cos θ sinϕ,

y = x0 +R sin θ sinϕ,

z = z0 +R cosϕ, θ ∈ [0, 2π] , ϕ ∈ [0, π] .

6. Determinat,i valoarea urmatoarelor integrale:

(a)

∫ 2

1

(5√x+

1

x3

)dx ; (b)

∫ 1

0

x3 (m− x) dx (pentru diverse valori ale lui m)

7. Determinat,i solut,iile ecuat,iei f (x) = 0 ın intervalele specificate, unde:

(a) f (x) = 2− x2, ın [1, 2] ; (b) f (x) = x3 − 2x2 + 3x− 1, ın [0, 1] ;

(c) f (x) = 4.5 cos2(x3

)− x

4, ın [2, 4] ; (d) f (x) = ex − 1, ın [−1, 1] .

8. Sa se reprezinte grafic, ın aceeas, i figura, funct,iile date de (a) s, i (d) de la Problema 7, precedenta.Determinat,i s, i punctele de extrem local ale acestor doua funct,ii.

9. Sa se determine radacinile ecuat,iilor:

(a) x2 − 2 = 0; (b) x3 − 2x2 + 3x− 1 = 0; (c) x4 − 3x2 + 2 = 0.

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1

Page 188: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 189: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:36 D:\Lab17_Lab18_MATLAB_script.m 1 of 4

% problema 1figure(1)t = -5*pi:0.01:5*pi;x = sin(t); y = cos(t); z = t;plot3(x,y,z) % problema 2figure(2)[x,y] = meshgrid(2:5,1:3);z = x+2*y-4;mesh(x,y,z) % problema 3figure(3)[x,y] = meshgrid(-3:0.01:3);z = 1-x.^2-y.^2;mesh(x,y,z) % problema 3, modalitatea a 2-afigure(4)[x,y] = meshgrid(-3:0.01:3);z = 1-x.^2-y.^2;surf(x,y,z) % problema 4figure(5)rho = linspace(0,1,100); theta = linspace(0,2*pi,100);[r,t] = meshgrid(rho,theta);x = r.*cos(t); y = r.*sin(t); z = r;mesh(x,y,z) % problema 5figure(6)x0 = input('Introduceti centrul sferei: valoarea x_0 = ');y0 = input('Introduceti centrul sferei: valoarea y_0 = ');z0 = input('Introduceti centrul sferei: valoarea z_0 = ');

Page 190: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:36 D:\Lab17_Lab18_MATLAB_script.m 2 of 4

R = input('Introduceti raza sferei R = ');theta = linspace(0,2*pi,100); phi = linspace(0,pi,100);[t,fi] = meshgrid(theta,phi);x = x0 + R*cos(t).*sin(fi); y = y0 + R*sin(t).*sin(fi); z = z0 + R*cos(fi);surf(x,y,z) % problema 6(a)a1 = input('Introduceti domeniul de integrare: capatul a1 = ');b1 = input('Introduceti domeniul de integrare: capatul b1 = ');functia1_lab12 = inline('5*sqrt(x)+1./x.^3');int1 = quad(functia1_lab12,a1,b1) % problema 6(a), modalitatea 2a2 = input('Introduceti domeniul de integrare: capatul a2 = ');b2 = input('Introduceti domeniul de integrare: capatul b2 = ');functia2_lab12 = @(x) 5*sqrt(x)+1./x.^3;int2 = quad(functia2_lab12,a2,b2) % problema 6(b)a3 = input('Introduceti domeniul de integrare: capatul a3 = ');b3 = input('Introduceti domeniul de integrare: capatul b3 = ');m = input('Introduceti parametrul m = ');functia3_lab12 = @(x) (x.^3).*(m-x);% daca functia '(x.^3).*(m-x)' ar fi introdusa se tip inline, atunci aparitia parametrului m va conduce la erori int3 = quad(functia3_lab12,a3,b3) % problema 7(a)a4 = input('Introduceti domeniul in care sa cautam solutia: a4 = ');b4 = input('Introduceti domeniul in care sa cautam solutia: b4 = ');% trebuie ca functia in cele doua puncte sa ia semne contrare% (doar astfel exista o solutie (un zero) in intervalul specificat)

Page 191: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:36 D:\Lab17_Lab18_MATLAB_script.m 3 of 4

functia4_lab12 = inline('2-x.^2');if functia4_lab12(a4)*functia4_lab12(b4) >0 fprintf('\n') fprintf('Functia data nu isi schimba semnul intre cele doua valori introduse\n') fprintf('\n') fprintf('deci nu exista nici un zero al ei in intervalul [%.2f,%.2f]\n',a4,b4)else sol1 = fzero(functia4_lab12,[a4,b4]); fprintf('\n') fprintf('Solutia ecuatiei f(x)=0 este %.4f \n',sol1)end% se deseneaza usor si graficul; vom lua, de exemplu, x din [-7,7]figure(7)x = -7:0.01:7; y = functia4_lab12(x);plot(x,y) % problema 8functia5_lab12 = @(x) 2-x.^2functia6_lab12 = @(x) exp(x)-1% pentru grafice vom lua, de exemplu, x din [-7,7]figure(9)x = -2:0.01:2;y1 = functia5_lab12(x); y2 = functia6_lab12(x);plot(x,y1);hold on;plot(x,y2);hold offa5 = input('Introduceti domeniul in care sa cautam pct. de extrem local a5 = ');b5 = input('Introduceti domeniul in care sa cautam pct. de extrem local b5 = ');val_min1 = fminbnd(functia5_lab12,a5,b5)val_min2 = fminbnd(functia6_lab12,a5,b5) functia5b_lab12 = @(x) -2+x.^2;functia6b_lab12 = @(x) -exp(x)+1;val_max1 = fminbnd(functia5b_lab12,a5,b5)val_max2 = fminbnd(functia6b_lab12,a5,b5) figure(10)x = -3:0.01:3;y1 = functia5_lab12(x); y2 = functia6_lab12(x);plot(x,y1);hold on;plot(x,y2);plot(val_min1,functia5_lab12(val_min1),'r*')

Page 192: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:36 D:\Lab17_Lab18_MATLAB_script.m 4 of 4

plot(val_min2,functia6_lab12(val_min2),'r*') plot(val_max1,functia5_lab12(val_max1),'bx') plot(val_max2,functia6_lab12(val_max2),'bx') hold off % problema 9(a)figure(11)coef = [1 0 -2];rad = roots(coef) % am determinat zero-urile cu ajutorul comenzii roots aplicata pentru polinoamex = -7:0.01:7; y = x.^2-2;plot(x,y) % problema 9(b)figure(12)coef = [1 -2 3 -1];rad = roots(coef) % am determinat zero-urile cu ajutorul comenzii roots aplicata pentru polinoamex = -7:0.01:7; y = x.^3-2*x.^2+3*x-1;plot(x,y) % problema 9(c)figure(13)coef = [1 0 -3 0 2];rad = roots(coef) % am determinat zero-urile cu ajutorul comenzii roots aplicata pentru polinoamex = -7:0.01:7; y = x.^4-3*x.^2+2;plot(x,y)

Page 193: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 19∗

Sa se determine solut,ia urmatoarelor ecuat,ii diferent,iale cu valori init,iale.

Sa se compare grafic solut,iile obt,inute prin diverse metode de calcul (ode45, ode23).

Sa se determine solut,ia folosind s, i calculul simbolic.

Sa se compare grafic solut,iile obt,inute prin aproximare numerica s, i prin calcul simbolic.

Sa se determine numeric s, i simbolic solut,ia obt,inuta ın diverse puncte.

1.

x′ (t) = x (t)− 2t

x (t), t > 0,

x (0) = 1.

2.

2x (t) x′ (t) =et

et + 1, t > 0,

x (0) = 1.

3.

x′1 (t) = x1 (t) + x2 (t) ,

x′2 (t) = t− x1 (t) , t > 0,

x1 (0) = 0.1, x2 (0) = 0.2.

4.

x′1 (t) = x1 (t) + x2 (t)− 3x3 (t) ,

x′2 (t) = 4x1 (t) + x2 (t)− 2x3 (t) ,

x′3 (t) = 2x1 (t) + x2 (t)− 6x3 (t) , t > 0,

x1 (0) = 2, x2 (0) = 1, x3 (0) = −1.

5.

{x′′ (t) = −1.2x′ (t)− x (t) + 10 , t > 0,

x (0) = 2, x′ (0) = 0.

6.

{x(4) (t) + 5x(2) (t) + 4x (t) = 0 , t > 0,

x (0) = x′ (0) = x′′ (0) = x′′′ (0) = 1.

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1

Page 194: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 195: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab19_MATLAB_script.m 1 of 4

% problema 1, modalitatea 1 (las MATLAB sa discretizeze el intervalul [0,T])% functia e introdusa in fisierul functia12.m T = input('Introduceti capatul intervalui T = ');[t1 , y1] = ode45(@functia12,[0,T],1) % afisez si graficul, adica punctele plane M(t,y)figure(1)plot(t1,y1) % problema 1, modalitatea 2 (indic eu pasul de discretizare al intervalului [0,T])% functia e introdusa in fisierul functia12.mT = input('Introduceti capatul intervalui T = ');[t2 , y2] = ode45(@functia12,[0:0.1:T],1) % valoarea intr-un punct este data de:t2_0 = find(t2==0.2) % returneaza indicele unde se afla valoarea 0.2val1 = y2(t2_0) % problema 1, modalitatea 3 (indic eu pasul de discretizare al intervalului [0,T])% functia este definita inlinefct1_ODE = inline('x - 2*t./x');T = input('Introduceti capatul intervalui T = ');[t3 , y3] = ode45(fct1_ODE,[0:0.1:T],1)% s-ar putea ca metoda numerica "ode45" sa nu functioneze pentru aceasta functie;% incearca si "ode23" % valoarea intr-un punct este data de:t3_0 = find(t3==0.9) % returneaza indicele unde se afla valoarea 0.9val2 = y3(t3_0) % problema 1, modalitatea 4 (indic eu pasul de discretizare al intervalului [0,T])% functia este definita inline dar schimb si metoda; folosesc ode23fct1_ODE = inline('x - 2*t./x');T = input('Introduceti capatul intervalui T = ');[t4 , y4] = ode23(fct1_ODE,[0:0.1:T],1) figure(2)plot(t4,y4)% valoarea intr-un punct este data de:t4_0 = find(t4==0.5) % returneaza indicele unde se afla valoarea 0.5

Page 196: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab19_MATLAB_script.m 2 of 4

val3 = y4(t4_0) % !! problema 1, modalitatea 5: CALCUL SIMBOLICsyms t x; % nu se foloseste virgula "," (adica nu se scrie "syms t,x")% rezolvam simbolic ecuatia diferentialax = dsolve('Dx = x-2*t/x','x(0)=1') % determinam valoarea solutiei intr-un punct; nu mai trebuie comanda syms t xt1 = 0.1; val1 = subs(x,t1) t2 = 0.5; val2 = subs(x,t2) % determinam valoarea solutiei intr-un punct;% trebuie comanda syms t x (calculam variabila x in variabila t pentru valoarea 0.5)val3 = subs(x,t,0.5) % problema 2: indicam doar functiafct2_ODE = inline('exp(t)./(1+exp(t))*1./(2*x)'); % problema 3x0 = [0.1 ; 0.2];T = input('Introduceti capatul intervalui T = ');[t5 , y5] = ode45(@functia13,[0,T],x0) % Solutia este matricea y cu doua coloane% necunoscuta x_1 este prima coloana y5(:,1) iar necunoscuta x_2 este coloana a doua y5(:,2)% afisez solutia problemei din enunt (x1,x2):x1 = y5(:,1)x2 = y5(:,2) % problema 4x0 = [ 2 ; 1 ; -1 ];T = input('Introduceti capatul intervalui T = ');[t6 , y6] = ode45(@functia14,[0,T],x0) % Solutia este matricea y cu trei coloane% necunoscuta x_1 este prima coloana y6(:,1)% necunoscuta x_2 este coloana a doua y6(:,2)

Page 197: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab19_MATLAB_script.m 3 of 4

% iar necunoscuta x_3 este coloana a treia y6(:,3)% afisez solutia problemei din enunt (x1,x2,x3):x1 = y6(:,1)x2 = y6(:,2)x3 = y6(:,3) % afisez si graficul cu toate cele 3 curbe% nu folosesc hold onfigure(3)plot(t6,y6(:,1),'r',t6,y6(:,2),'b',t6,y6(:,3),'g') % !! problema 4, modalitatea 2: CALCUL SIMBOLICsyms t x1 x2 x3 % nu se foloseste virgula ","% rezolvam simbolic ecuatia diferentiala[x1 , x2 , x3] = dsolve('Dx1 = x1+x2-3*x3','Dx2 = 4*x1+x2-2*x3','Dx3 = 2*x1+x2-6*x3','x1(0)=2','x2(0)=1','x3(0)=-1') solutia_comp1 = x1solutia_comp2 = x2solutia_comp3 = x3 % determinam valoarea solutiei intr-un punct;% nu mai trebuie comanda syms t x1 x2 x3t1 = 0.1;val1 = subs(x1,t1) val2 = subs(x2,t1)val3 = subs(x3,t1) % determinam valoarea solutiei intr-un punct;% trebuie comanda syms (calculam variabila x1 in variabila t pentru valoarea 0.1 etc.)val4 = subs(x1,t,0.1)val5 = subs(x2,t,0.1)val6 = subs(x3,t,0.1) % problema 5x0 = [2 ; 0];T = input('Introduceti capatul intervalui T = ');[t7 , y7] = ode45(@functia15,[0:0.1:T],x0)

Page 198: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:13 D:\Lab19_MATLAB_script.m 4 of 4

% Solutia este matricea y cu doua coloane% necunoscuta x_1 este prima coloana y7(:,1) iar necunoscuta x_2 este coloana a doua y7(:,2)% necunoscuta problemei date in enunt este doar prima coloana y7(:,1)% afisez solutia problemei din enunt x :sol_probl5 = y7(:,1)% afisez si graficul, adica punctele plane M(t7,sol_probl5)figure(4)plot(t7,sol_probl5) % problema 6x0 = [1 ; 1 ; 1 ; 1];T = input('Introduceti capatul intervalui T = ');[t8 , y8] = ode45(@functia16,[0:0.1:T],x0) % Solutia este matricea y cu patru coloane% necunoscuta x_1 este prima coloana y8(:,1)% iar necunoscuta x_2 este coloana a doua y8(:,2) etc.% necunoscuta problemei date in enunt este doar prima coloana y8(:,1)% afisez solutia problemei din enunt x :sol_probl6 = y8(:,1)% afisez si graficul, adica punctele plane M(t8,sol_probl6)figure(5)plot(t8,sol_probl6) % !! problema 6, modalitatea 2: CALCUL SIMBOLICsyms t x1 x2 x3 x4% rezolvam simbolic ecuatia diferentiala[x1 , x2 , x3 , x4] = dsolve('Dx1 = x2','Dx2 = x3','Dx3 = x4','Dx4 = -4*x1-5*x3','x1(0)=1','x2(0)=1','x3(0)=1','x4(0)=1')

Page 199: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 14:46 D:\functia12.m 1 of 1

function y = functia12(t,x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 19, Problema 1%} y = x - 2*t./x;end

Page 200: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:23 D:\functia13.m 1 of 1

function z = functia13(t,x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13, Problema 3%} z = [ x(1)+x(2) ; t-x(1)]; % introducerea de spatii in expresia matricei z (mai precis spatiile din cadrul expresiilor matematice) va conduce la erori end

Page 201: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:23 D:\functia14.m 1 of 1

function z = functia14(t,x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13, Problema 4%} z = [ x(1)+x(2)-3*x(3) ; 4*x(1)+x(2)-2*x(3) ; 2*x(1)+x(2)-6*x(3) ]; % introducerea de spatii in expresia matricei z (mai precis spatiile din cadrul expresiilor matematice) va conduce la erori end

Page 202: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:24 D:\functia15.m 1 of 1

function z = functia15(t,x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13, Problema 5%} z = [ x(2) ; -1.2*x(2)-x(1)+10]; % introducerea de spatii in expresia matricei z (mai precis spatiile din cadrul expresiilor matematice) va conduce la erori end

Page 203: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

16/12/19 22:24 D:\functia16.m 1 of 1

function z = functia16(t,x) %{definim, cu un fisier de tip M, o functie in cadrulLaboratorului 13, Problema 6%} z = [ x(2) ; x(3) ; x(4) ; -5*x(3)-4*x(1) ]; % introducerea de spatii in expresia matricei z (mai precis spatiile din cadrul expresiilor matematice) va conduce la erori end

Page 204: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 205: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Soft Matematic (MATLAB)

Laboratorul 20∗

Sa se rezolve urmatoarele probleme folosind calculul simbolic.

1. Sa se determine solut,ia ecuat,iilor diferent,iale cu valori init,iale din cadrul Laboratorului 19. Sa secompare grafic solut,iile obt,inute prin aproximare numerica s, i prin calcul simbolic. Sa se determinenumeric s, i simbolic solut,ia obt,inuta ın diverse puncte.

2. Sa se dezvolte determinantul urmator punandu-l sub forma de produs∣∣∣∣∣∣∣∣a+ b −a+ b− c b+ c

a− b− c a+ b a+ c

a+ c b+ c −a− b+ c

∣∣∣∣∣∣∣∣3. Sa se transforme fract,ia

P (x)

Q (x)ıntr-o fract,ie ireductibila, unde

P (x) = x6 − x5 − 3x4 + x3 − 4x− 3,

Q (x) = 2x4 − 6x2 − 8x− 6.

4. Sa se calculeze 2a2 + 8b3a− 3 (b− a) pentru b = 4.

5. Sa se rezolve urmatoarea ecuat,ie ın raport cu variabila x :

x2 − 2 (m+ 2)x+m2 − 1 = 0, m ∈ R.

6. Sa se rezolve urmatoarea ecuat,ie ın raport cu variabila x :

2x + a3x

2x − a3x= 2 , a ∈ R.

7. Sa se rezolve urmatorul sistem de ecuat,ii liniare:3x+ 4y +mz = 0,

4x+my + 3z = 6,

mx+ 3y + 4z = 3 +m, m ∈ R.

8. Sa se determine matricea A astfel ıncat:

(2A− 3 (1, 2, 0))t= 3At + (2, 1,−1)t .

9. Sa se calculeze lungimea arcului de curba (γ) dat de f (x) = ln (sinx) , x ∈ [π/3, π/2] folosind

formula L (γ) =∫ b

a

√1 + (f ′ (x))

2dx.

10. Sa se calculeze suma

Sn = 13 + 43 + 73 + . . .+ (3n− 5)3+ (3n− 2)

3, n ∈ N.

11. Sa se calculeze:

(a) limx→0x>0

e1x ; (b) limx→0

x<0e

1x ; (c)

∫3√1 + 4√x√

x.

∗ Pentru examen trebuie avute ın vedere si toate exemplele din Cursul disponibil pe pagina personala:https://www.math.uaic.ro/∼maticiuc/didactic/MATLAB Curs.pdf

1

Page 206: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 207: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 15:02 D:\Lab20_MATLAB_script.m 1 of 3

% problema 1% vezi Laboratorul 19 % problema 2, modalitatea 1syms a b c; % nu se foloseste virgula "," (adica nu se scrie "syms a,b,c")A1 = [ a+b , -a+b-c , b+c ; a-b-c , a+b , a+c ; a+c , b+c , -a-b-c];detA1 = simplify(det(A1))pretty(det(A1)) % in caz ca se doreste, comanda "pretty" afiseaza o forma apropiata de scrierea matematica % problema 2, modalitatea 2syms a b c; % nu se foloseste virgula "," (adica nu se scrie "syms a,b,c")A2 = [ a+b , -a+b-c , b+c ; a-b-c , a+b , a+c ; a+c , b+c , -a-b-c];detA2 = factor(det(A2)) %{problema 2, modalitatea 2(exemplu simplu pentru vizualizarea rezultatului comenzilor "simplify" si "factor")%}syms a b; % nu se foloseste virgula "," (adica nu se scrie "syms a,b")A3 = [ a+b , a-b ; a-b , a+b];detA3 = simplify(det(A3))detA3 = factor(det(A3))pretty(det(A3)) % in caz ca se doreste, comanda "pretty" afiseaza o forma apropiata de scrierea matematica % problema 3syms x;Px = x^6-x^5-3*x^4+x^3-4*x-3;Qx = 2*x^4-6*x^2-8*x-6;simplify(Px/Qx)pretty(simplify(Px/Qx)) % problema 4syms a b;S4 = 2*a^2+8*b^3*a-3*(b-a)subs(S4,b,4) % problema 5syms x m; % nu se scrie "syms x,m"

Page 208: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 15:02 D:\Lab20_MATLAB_script.m 2 of 3

sol1 = solve('x^2 - 2*(m+2)*x+m^2-1',x)sol2 = solve(x^2 - 2*(m+2)*x+m^2-1,x)sol3 = solve(x^2 - 2*(m+2)*x+m^2-1) % rezolvarea se face in raport cu variabila implicita (considerata "x" in acest caz) % problema 6syms a x;S6 = (2.^x+a*3.^x)/(2.^x-a*3.^x)-2;sol1 = solve(S6) % rezolvarea se face in raport cu variabila implicita (considerata "x" in acest caz)sol2 = solve(S6,x) % problema 7syms x y z m;[x y z] = solve('3*x+4*y+m*z=0','4*x+m*y+3*z=6', 'm*x+3*y+4*z=3+m',x,y,z);sol_x = simplify(x)sol_y = simplify(y)sol_z = simplify(z)pretty(x) % in caz ca se doreste, comanda "pretty" afiseaza o forma apropiata de scrierea matematica % problema 8A8 = [a,b,c];S8 = transpose(2*A8-3*[1 2 0]-3*A8-[2,1,-1]);S8[sola solb solc] = solve(S8(1),S8(2),S8(3)) % problema 9syms x;f9 = log(sin(x));der_f9 = diff(f9)g9 = sqrt(1+der_f9^2);lungime = int(g9,x,pi/3,pi/2) % problema 10syms k n;Sn = symsum((3*k-2)^3,1,n) % daca este o singura variabila simbolica in x_n, atunci aceasta poate sa nu fie precizata

Page 209: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

28/09/19 15:02 D:\Lab20_MATLAB_script.m 3 of 3

% daca sunt mai multe variabile simbolice in x_n, atunci, daca nu se% precizeaza variabila, atunci se sumeaza dupa variabila implicitaSn_var = symsum((3*k-2)^3,k,1,n) % problema 11, pct. (a)syms x;f11 = exp(1/x);lim_1 = limit(f11, x, 0, 'right') % problema 11, pct. (b)syms x;g11 = exp(1/x);lim_2 = limit(g11, x, 0, 'left') % problema 11, pct. (c)syms x;h11 = (1+x^(1/4))^(1/3)/sqrt(x);h11int = int(h11,x)

Page 210: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila
Page 211: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Examen MATLAB– Checklist –

1. Crearea s, i lucrul cu fis, iere de tip script ; executarea lor (trei metode) . . . . . . . . . . . . . . . pct.

2. Inserarea de comentarii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

3. Stabilirea Current Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

4. Utilizarea sistemului de Help al MATLAB: help, doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

5. Variabile predefinite: ans, pi, eps, inf, nan etc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

6. Operat,ii elementare (inclusiv împărt,irea la stânga \) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

7. Funct,ii elementare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

8. Definirea de variabile; atribuirea de valori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

9. Definirea de variabile de intrare folosind input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

10. Afis,area de texte s, i/sau date numerice rezultate folosind disp

comanda num2str

setări de afis,are ale valorilor numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

11. Afis,area de texte s, i/sau date numerice rezultate folosind fprintf

scrierea pe mai multe linii: comanda \nsetări de afis,are ale valorilor numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

12. Evaluare de expresii matematice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

13. Utilizarea: clear clc ; ↑ ↓ CTRL+C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

14. Stabilirea formatului de afis,are: format long, format short etc. . . . . . . . . . . . . . . . . . . pct.

15. Operarea cu tablouri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

16. Operarea element cu element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

17. Generare de vectori (a:h:b s, i linspace) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

18. Comenzi pentru determinarea dimensiunii unui vector s, i a unei matrice . . . . . . . . . . . . pct.

19. Generare de matrice: zeros, ones, eye, repmat, reshape . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

20. Generare de matrice: rand, randn, randperm, randi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

21. Matrice făcute din alte matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

22. Afis,area la o matrice: a unui element, a unei linii, a unei coloane . . . . . . . . . . . . . . . . . . . pct.

23. Adăugarea unei linii (nu neapărat prima sau ultima) între

alte două linii ale unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

Page 212: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Checklist

24. Adăugarea unei coloane (nu neapărat prima sau ultima) între

alte două coloane ale unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

25. Înlocuirea unei linii (nu neapărat prima sau ultima) a unei matrice . . . . . . . . . . . . . . . . . pct.

26. Înlocuirea unei coloane (nu neapărat prima sau ultima) a unei matrice . . . . . . . . . . . . . pct.

27. Eliminarea unei linii (nu neapărat prima sau ultima) a unei matrice . . . . . . . . . . . . . . . . pct.

28. Eliminarea unei coloane (nu neapărat prima sau ultima) a unei matrice . . . . . . . . . . . . pct.

29. Scrierea elementelor unui s, ir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

30. Produsul scalar s, i produsul vectorial a doi vectori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

31. Generare de matrice de tip bandă folosind diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

32. Transpusa, rangul, determinantul unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

33. Crearea de funct,ii folosind fis, iere de tip M; apelare unei asemenea funct,ii

(funct,ii scalare sau vectoriale, de argument scalar sau vector) . . . . . . . . . . . . . . . . . . . . . . pct.

34. Crearea de funct,ii folosind comanda inline; apelarea unei asemenea funct,ii . . . . . . . . pct.

35. Crearea de funct,ii folosind un function handle; apelarea unei asemenea funct,ii . . . . . . pct.

36. Aplicarea unei funct,ii unei matrice: comanda arrayfun . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

37. Folosirea operatorilor relat,ionali s, i a operatorilor logici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

38. Determinarea elementelor unei matrice care satisfac anumite condit,ii

(s, i determinarea numărului lor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

39. Comenzile max, min, sort, sum, cumsum, prod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

40. Variantele max(max), min(min), sum(sum), diag(diag) . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

41. Comenzile mod, isprime, find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

42. Utilizarea structurii if-elseif-else-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

43. Utilizarea structurii for-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

44. Utilizarea structurii while-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

45. Definirea unei funct,ii cu ramuri (folosind if-elseif-else-end);

apelarea acestei funct,ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

46. Definirea unei funct,ii care generează o matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

47. Suma primilor n termeni ai unei serii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

48. Comanda abs (pentru a determina “eroarea”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

49. Polinoame: polyval, roots, poly, conv, deconv, polyder, polyint . . . . . . . . . . . . . . . pct.

50. Solut,iile unei ecuat,ii: fzero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

51. Minime s, i maxime de funct,ii scalare: fminbnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

52. Integrarea numerică: quad, quadl, trapz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

53. Integrarea numerică: dblquad, triplequad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

54. Sisteme de ecuat,ii liniare: A\b s, i rref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

55. Valori s, i vectori proprii: comanda eig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

Page 213: MATLAB – CURSmaticiuc/didactic/MATLAB... · MATLAB foloses,te variabile speciale (care au nume rezervate ce nu pot fi folosite pentru a desemna alte variabile) precum: Variabila

Checklist

56. Factorizarea LU: comanda lu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

57. Factorizarea QR: comanda qr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

58. Factorizarea Cholesky: comanda chol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

59. Factorizarea SVD: comanda svd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

60. Ecuat,ii diferent,iale de ordinul 1: ode45, ode23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

61. Sisteme de ecuat,ii diferent,iale de ordinul 1: ode45, ode23 . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

62. Ecuat,ii diferent,iale de ordin superior (reducerea la un sistem deecuat,ii diferent,iale de ordinul 1): ode45, ode23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

63. Grafica 2D: comenzile plot, fplot, fimplicit, ezplot, polar . . . . . . . . . . . . . . . . . . . . . pct.

64. Grafica 2D pentru funct,ii date explicit, implicit sau parametric(s, i definite într-unul dintre cele trei moduri posibile) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

65. Setări ale modului de afis,are:forma, culoarea s, i grosimea curbei; forma, culoarea s, i mărimea marcajelor . . . . . . . . . . pct.

66. Comanda plot: afis,area doar a punctelor (fără linia poligonală care le unes,te) . . . . . pct.

67. Număr sau nume dat unei figuri: comanda figure(n), figure(’Name’) . . . . . . . . . . . pct.

68. Vizualizarea unei anume figuri: comanda figure(n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

69. Închiderea figurilor: comanda close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

70. Grafice în aceeas, i figură s, i/sau reper:o singură comandă plot sau hold on - hold off sau subplot . . . . . . . . . . . . . . . . . . . . pct.

71. Alte setări ale modului de afis,are:mărimea s, i etichetarea axelor, titlul s, i legenda figurii, grila de linii . . . . . . . . . . . . . . . . . pct.

72. Grafica 3D, curbe în spat,iu: comenzile plot3, ezplot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

73. Grafica 3D, suprafet,e: comenzile meshgrid, mesh, ezmesh, surf, ezsurf . . . . . . . . . . . pct.

74. Număr sau nume dat unei figuri: comanda figure(n), figure(’Name’) . . . . . . . . . . . pct.

75. Vizualizarea unei anume figuri: comanda figure(n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

76. Închiderea figurilor: comanda close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

77. Grafice în aceeas, i figură s, i/sau reper: hold on - hold off sau subplot . . . . . . . . . . . pct.

78. Alte setări ale modului de afis,are:mărimea s, i etichetarea axelor, titlul s, i legenda figurii, grila de linii . . . . . . . . . . . . . . . . . pct.

79. Calcul simbolic: crearea de variabile (syms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

80. Calcul simbolic: schimbarea formei (collect, expand, factor, simplify, subs) . . . . pct.

81. Calcul simbolic pentru: calculul de sume (symsum) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

82. rezolvarea unui sistem de ecuat,ii (solve) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

83. calculul de limite de funct,ii (limit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

84. calculul de derivate (diff) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

85. calculul de primitive s, i integrale definite (int) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.

86. rezolvarea ecuat,iilor diferent,iale (dsolve) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pct.


Top Related