21.07.2014 Views

download - Sisteme de Programare pentru Modelare si Simulare

download - Sisteme de Programare pentru Modelare si Simulare

download - Sisteme de Programare pentru Modelare si Simulare

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8. FUNCŢII MATEMATICE ÎN MATLAB<br />

Funcţiile matematice uzuale şi speciale se apelează cu <strong>si</strong>ntaxa generală:<br />

y=nume_funcţie(argument)<br />

un<strong>de</strong>:<br />

• nume_funcţie, este numele uneia dintre funcţiile matematice;<br />

• argument, este valoarea <strong>pentru</strong> care se evaluează funcţia;<br />

• y este variabila în care se returnează rezultatul.<br />

Dacă argumentul este o matrice, funcţiile matematice operează asupra<br />

fiecărui element.<br />

8.1. Funcţii trigonometrice<br />

Principalele funcţii trigonometrice directe, apelabile în Matlab sunt:<br />

• <strong>si</strong>n(x) , care calculează <strong>si</strong>nusul argumentului x, dat în radiani;<br />

• cos(x) , care calculează co<strong>si</strong>nusul argumentului x, dat în radiani;<br />

• tan(x) , care calculează tangenta argumentului x, dat în radiani;<br />

• cot(x) , care calculează cotangenta argumentului x, dat în radiani;<br />

• sec(x) , care calculează secanta argumentului x, dat în radiani;<br />

• csc(x) , care calculează cosecanta argumentului x, dat în radiani.<br />

Dacă, <strong>de</strong> exemplu, argumentul x este vectorul:<br />

x = [ pi/6 pi/4 pi/3 pi/2<br />

pi/2+pi/6 pi/2+pi/4 pi/2+pi/3 pi<br />

pi+pi/6 pi+pi/4 pi+pi/3 pi+pi/2<br />

3*pi/2+pi/6 3*pi/2+pi/4 3*pi/2+pi/3 2*pi ],<br />

care în radiani este,<br />

x =[ 0.5236 0.7854 1.0472 1.5708<br />

2.0944 2.3562 2.6180 3.1416<br />

3.6652 3.9270 4.1888 4.7124<br />

5.2360 5.4978 5.7596 6.2832],<br />

atunci <strong>pentru</strong>:<br />

<strong>si</strong>n(x) se obţine,<br />

ans =<br />

0.5000 0.7071 0.8660 1.0000<br />

0.8660 0.7071 0.5000 0.0000<br />

-0.5000 -0.7071 -0.8660 -1.0000<br />

-0.8660 -0.7071 -0.5000 -0.0000<br />

cos(x) se obţine,<br />

ans =<br />

0.8660 0.7071 0.5000 0.0000


170<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

-0.5000 -0.7071 -0.8660 -1.0000<br />

-0.8660 -0.7071 -0.5000 -0.0000<br />

0.5000 0.7071 0.8660 1.0000.<br />

Pentru y = [pi/3 pi/4 pi/6], dacă se calculează:<br />

tan(y) se obţine,<br />

ans =<br />

1.7321 1.0000 0.5774,<br />

cot(y) se obţine,<br />

ans =<br />

0.5774 1.0000 1.7321,<br />

sec(y) se obţine,<br />

ans =<br />

2.0000 1.4142 1.1547,<br />

csc(y) se obţine,<br />

ans =<br />

1.1547 1.4142 2.0000.<br />

Principalele funcţii trigonometrice inverse, apelabile în Matlab sunt:<br />

• a<strong>si</strong>n(x), care calculează arc<strong>si</strong>nusul argumentului x;<br />

• acos(x), care calculează arcco<strong>si</strong>nusul argumentului x;<br />

• atan(x), care calculează arctangenta argumentului x;<br />

• atan2(y,x), care calculează arctangenta părţii reale a elementelor x şi y,<br />

cu condiţia ca . -pi


Funcţii matematice în Matlab 171<br />

8.2. Funcţii hiperbolice<br />

Principalele funcţii hiperbolice directe, apelabile în Matlab sunt:<br />

• <strong>si</strong>nh(x), care calculează <strong>si</strong>nusul hiperbolic al argumentului x;<br />

• cosh(x), care calculează co<strong>si</strong>nusul hiperbolic al argumentului x;<br />

• tanh(x), care calculează tangenta hiperbolică a argumentului x;<br />

• coth(x), care calculează cotangenta hiperbolică a argumentului x;<br />

• sech(x), care calculează secanta hiperbolică a argumentului x;<br />

• csch(x), care calculează cosecanta hiperbolică a argumentului x;<br />

Con<strong>si</strong><strong>de</strong>rând x=[0 pi/6 pi/2 pi/3 pi] şi calculând:<br />

<strong>si</strong>nh(x) se obţine,<br />

ans =<br />

0 0.5479 2.3013 1.2494 11.5487,<br />

cosh(x) se obţine,<br />

ans =<br />

1.0000 1.1402 2.5092 1.6003 11.5920,<br />

tanh(x) se obţine,<br />

ans =<br />

0 0.4805 0.9172 0.7807 0.9963,<br />

coth(x) se obţine,<br />

ans =<br />

Inf 2.0813 1.0903 1.2809 1.0037,<br />

sech(x) se obţine,<br />

ans =<br />

1.0000 0.8770 0.3985 0.6249 0.0863,<br />

csch(x) se obţine,<br />

ans =<br />

Inf 1.8253 0.4345 0.8004 0.0866.<br />

Principalele funcţii hiperbolice inverse, apelabile în Matlab, sunt:<br />

• a<strong>si</strong>nh(x), care calculează arc<strong>si</strong>nusul hiperbolic al argumentului x;<br />

• acosh(x), care calculează arcco<strong>si</strong>nusul hiperbolic al argumentului x;<br />

• atanh(x), care calculează arctangenta hiperbolică a argumentului x;<br />

• acoth(x), care calculează arccotangenta hiperbolică a argumentului x;<br />

• asech(x), care calculează arcsecanta hiperbolică a argumentului x;<br />

• acsch(x), care calculează arccosecanta hiperbolică a argumentului x;<br />

Dacă x = [0 1/2 1], calculând:<br />

a<strong>si</strong>nh(x) se obţine,<br />

ans =<br />

0 0.4812 0.8814,<br />

acosh(x) se obţine,


172<br />

sunt:<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

ans =<br />

0 + 1.5708i -0.0000 + 1.0472i 0,<br />

atanh(x) se obţine,<br />

ans =<br />

0 0.5493 Inf.<br />

Pentru argumente numere complexe <strong>de</strong> forma z=x+iy, relaţiile <strong>de</strong> calcul<br />

<strong>si</strong>n(z) = <strong>si</strong>n(x)*cosh(y) + i*cos(x)*<strong>si</strong>nh(y);<br />

cos(z) = cos(x)*cosh(y) - i*<strong>si</strong>n(x)*<strong>si</strong>nh(y);<br />

tan(z) = <strong>si</strong>n(z)/cos(z);<br />

cot(z) = cos(z)/<strong>si</strong>n(z).<br />

8.3. Funcţii <strong>de</strong> tip exponenţial<br />

După cum am arătat anterior, ridicarea unui număr a la puterea n se face<br />

prin instrucţiunea a^n. Exponentul n poate avea orice valoare, reală sau complexă.<br />

Pentru a calcula radicalul <strong>de</strong> ordinul n dintr-un număr a, se utilizează funcţia<br />

putere sub forma a^(1/n). De exemplu, dacă a = 9 şi n=2, atunci a^n este 9^2,<br />

respectiv 81, iar a^(1/n) este 9^(1/2), respectiv 3.<br />

Ridicarea la puterea x a numărului 2 (2 x ), se poate face prin funcţia<br />

pow2(x). Dacă x este o matrice, atunci rezultatul va fi o matrice <strong>de</strong> aceleaşi<br />

dimen<strong>si</strong>uni, funcţia acţionând element cu element. Pentru x=3.1, pow2(x) este<br />

8.5742. Calculul unui număr <strong>de</strong> forma y=m*2 n , se realizează printr-o instrucţiune<br />

<strong>de</strong> forma y=pow2(m,n). Pentru m=20.1 şi n=3.5, cu comanda y=pow2(m,n) se<br />

obţine 161.2.<br />

Pentru calculul exponenţialei e x (un<strong>de</strong> e=2.71828182845…), se utilizează<br />

funcţia exp(x), un<strong>de</strong> x este argumentul. Dacă x=[1 2 –2 –1], atunci exp(x) conduce<br />

la:<br />

ans =<br />

2.7183 7.3891 0.1353 0.3679.<br />

Dacă argumentul este un număr complex <strong>de</strong> forma z=x+i*y, atunci rezultatul<br />

z x<br />

se calculează cu relaţia: e = e ( cos( y) + i ⋅ <strong>si</strong>n( y)<br />

). Pentru z=2+3*i se obţine:<br />

ans =<br />

-7.3151 + 1.0427i.<br />

Pentru calculul logaritmului natural, al logaritmului în baza 2 sau al<br />

logaritmului zecimal (în baza 10) al numărului a (real, sau complex), sunt<br />

disponibile funcţiile log, log2 şi respectiv log10, apelabile cu <strong>si</strong>ntaxele:<br />

x=log(a); x=log2(a); x=log10(a).<br />

Dacă a = [2 ^2 3^2 2^5 10^3 10^(-2) 2^(-3)], atunci:<br />

log(a) este [1.3863 2.1972 3.4657 6.9078 -4.6052 -2.0794],


Funcţii matematice în Matlab 173<br />

log2(a) este [2.0000 3.1699 5.0000 9.9658 -6.6439 -3.0000], iar<br />

log10(a) este [0.6021 0.9542 1.5051 3.0000 -2.0000 -0.9031].<br />

Atunci când argumentul funcţiei log este un număr complex, <strong>de</strong> forma<br />

z=x+i*y, rezultatul este calculat cu relaţia: log(z) = log(abs(z)) + i * atan2(y,x).<br />

Funcţia log2 , <strong>de</strong> argument complex, se calculează cu relaţia:<br />

log2(z) = log2(abs(z)) + i * atan2(y,x)/log(2), iar funcţia log10 prin relaţia,<br />

log10(z) = log(abs(z)) + i * atan2(y,x)/log(10).<br />

Pentru z = 5+ 7* i se obţine că log(z) este 2.1520 + 0.9505i, log2(z) este<br />

3.1047 + 1.3713i, iar log10(z) este 0.9346 + 0.4128i.<br />

Funcţia log2 <strong>de</strong> argument real X (număr sau vector), poate fi apelată prin<br />

<strong>si</strong>ntaxa [F,E]=log2(x), <strong>si</strong>tuaţie în care returnează un număr real F, uzual în<br />

domeniul 0.5


174<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

z = x + y⋅i<br />

, respectiv unghiului, în radiani, făcut în planul complex (x – i y), se<br />

realizează prin funcţia angle(z), care este echivalentă cu atan(y/x). În general,<br />

argumentul ϕ este <strong>de</strong>terminat, în afara unui multiplu <strong>de</strong> 2 π , prin<br />

x y<br />

cos ( ϕ ) = , <strong>si</strong>n( ϕ ) = . Cu cele <strong>de</strong> mai sus, forma trigonometrică a numărului<br />

r r<br />

complex este: z = r( cos( ϕ ) + i <strong>si</strong>n( ϕ ))<br />

. Pentru z=2+3*i, prin angle(z) se obţine<br />

0.9828, acelaşi rezultat ca şi prin atan(3/2).<br />

Partea reală x, a unui număr complex z = x + y⋅i<br />

, se extrage prin funcţia<br />

real(z), iar partea imaginară prin funcţia imag(z). Pentru z=2+3*i, prin real(z) se<br />

obţine valoarea 2, iar prin imag(z) se obţine 3. Calculul părţii reale şi imaginare a<br />

numerelor complexe, exprimate în formă polară, se poate face şi cu funcţia<br />

unwrap.<br />

Pentru un număr complex z = x + y⋅i<br />

, conjugatul său este z = x − y ⋅ i şi<br />

poate fi obţinut prin funcţia conj(z). Dacă z=2+3*i, atunci conj(z) este 2-3*i.<br />

Determinarea <strong>si</strong>tuaţiei, dacă un vector sau matrice X are toate elementele<br />

numere reale (respectiv dacă partea imaginară a fiecărui element este 0) se<br />

realizează prin funcţia isreal(X), care răspun<strong>de</strong> prin 1, dacă toate elementele sunt<br />

reale şi prin 0, altfel. Pentru X=[2 i 5+2*i 7] prin isreal(X) se obţine 0, iar <strong>pentru</strong><br />

XX=[2 -1 7], cu isreal(XX) se obţine 1.<br />

Sortarea unor numere complexe conjugate perechi (sau reale – partea<br />

conjugată 0), în ordinea crescătoare a părţii reale, se realizează prin funcţia<br />

cplxpair. Dacă X=[8 1+2*i 4 1-2*i 2 3-2*i 3+2*i], atunci funcţia<br />

cplxpair(X), returnează [1+2i 1-2i 3+2i 3-2i 2 4 8].<br />

8.5 Funcţii <strong>pentru</strong> aproximarea numerelor<br />

Funcţiile Matlab <strong>pentru</strong> aproximarea cu numere întregi sunt:<br />

• fix – care rotunjeşte la cel mai apropiat întreg spre zero ;<br />

• floor – ce rotunjeşte la cel mai apropiat întreg spre minus infinit (- ∞) ;<br />

• ceil - care rotunjeşte la cel mai apropiat întreg spre plus infinit (+∞) ;<br />

• round - care rotunjeşte la cel mai apropiat întreg.<br />

Funcţiile <strong>de</strong> mai sus operează asupra fiecărui element al unei matrice sau<br />

vector şi se apelează cu <strong>si</strong>ntaxa nume_funcţie(argument), un<strong>de</strong> nume_funcţie este<br />

numele uneia dintre funcţiile <strong>de</strong> mai sus (fix, floor, ceil, round), iar argument<br />

poate fi un scalar, un vector sau o matrice, ale cărui elemente se doresc a fi<br />

rotunjite. Atunci când elementele din argument sunt numere complexe, funcţiile <strong>de</strong><br />

mai sus operează in<strong>de</strong>pen<strong>de</strong>nt asupra fiecărei părţi (reală sau imaginară). Dacă<br />

con<strong>si</strong><strong>de</strong>răm vectorul, V = [-0.25 -7.2 –2.4-2.6i 0.499 0.501 2.71+3.49i


Funcţii matematice în Matlab 175<br />

11.5i], atunci:<br />

fix(V) este [ 0 -7 -2-2i 0 0 2+3i 11i ];<br />

floor(V) este [ -1 -8 -3-3i 0 0 2+3i 11i ];<br />

ceil(V) este [ 0 -7 -2-2i 1 1 3+4i 12i ];<br />

round(V) este [ 0 -7 -2-3i 0 1 3+3i 12i ].<br />

Pentru aproximarea numerelor reale cu fracţii continue se utilizează<br />

funcţia rat, apelată cu una dintre <strong>si</strong>ntaxele,<br />

[N,D] = rat(x), [N,D] = rat(x,tol),<br />

un<strong>de</strong>: x este numărul care trebuie aproximat cu fracţii continue ; tol este toleranţa<br />

care se acceptă între numărul x dat şi numărul y (aproximat), astfel încât<br />

y − x ≤ tol , având valoarea implicită, tol=10 -6 ; N, D sunt numărătorul, respectiv<br />

numitorul fracţiei, care aproximează pe x cu toleranţă tol, astfel încât abs(N./D - X)<br />


176<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

ans =<br />

1/4 27/20 -691/200 841/625.<br />

Funcţia mod(x,y) calculează modulus (restul cu semn după împăţirea dintre<br />

x şi y), astfel că mod(x,y) = x - y.*floor(x./y) dacă y ~= 0, iar prin convenţie,<br />

mod(x,0) este x. Intrările x şi y trebuie să fie matrice reale <strong>de</strong> aceeaşi dimen<strong>si</strong>une,<br />

sau una trebuie să fie scalar.<br />

Funcţia rem(x,y) calculează restul împărţirii lui x la y, element cu element,<br />

astfel că mod(x,y) = x - y.*fix(x./y) dacă y ~= 0, iar prin convenţie, rem(x,0) este<br />

NaN. Intrările x şi y trebuie să fie matrice reale <strong>de</strong> aceeaşi dimen<strong>si</strong>une sau una<br />

trebuie să fie scalar.<br />

Dacă se calculează restul împărţirii vectorului x=[1 3 -6], la y=[2 3 4], cu<br />

z=rem(z,y), se ob=[2 3 4], cu z=rem(z,y), se obţine<br />

z=[ 1 0 -2]<br />

Funcţia mod(x,y) are acelaşi semn cu y, atunci când rem(x,y) are semnul lui<br />

x. Cele două funcţii mod(x,y) şi rem(x,y) sunt egale dacă x şi y au acelaşi semn,<br />

dar diferă dacă y sau x au semne diferite. Dacă X=[1.5 9 -4.5] şi Y=[-0.5 -3 4],<br />

atunci mod(X,Y) este [ 0 0 3.5], iar rem(X,Y) este [0 0 -0.5], dar mod(Y,X)<br />

este [1 6 -0.5], iar rem(Y,X) este [-0.5 -3 4]. Con<strong>si</strong><strong>de</strong>rând X1=[2.5 6 –7] şi<br />

Y1=3, atunci rem(X1,Y1) este [2.5 0 -1], iar rem(Y1,X1) este [0.5 3 3], pe<br />

când mod(X1,Y1) este [2.5 0 2], iar mod(Y1,X1) este [0.5 3 -4].<br />

Funcţia <strong>si</strong>gn(x) asociază fiecărui element al vectorului x elementele –1, 0, 1,<br />

⎧1,<br />

x > 0<br />

⎪<br />

după următoarea regulă: <strong>si</strong>gn ( x)<br />

= ⎨0, x = 0 . Dacă x este complex, atunci<br />

⎪<br />

⎩-1<br />

x < 0<br />

<strong>si</strong>gn(x)=x./abs(x).<br />

8.6. Funcţii <strong>pentru</strong> aflarea unor numere importante<br />

Factorii primi ai unui număr natural pozitiv N, alţii <strong>de</strong>cât 1, sunt calculaţi<br />

cu funţia factor(N). Dacă N=33, atunci factor(N), găseşte ca factori primi 3 şi 11.<br />

Generarea unei liste cu toate numerele prime mai mici sau egale cu un<br />

număr natural pozitiv N (altele <strong>de</strong>cât 1), se face prin utilizarea funcţiei primes(N).<br />

Dacă N=33, atunci primes(33), produce lista,<br />

ans =<br />

2 3 5 7 11 13 17 19 23 29 31,<br />

care conţine toate numerele prime mai


Funcţii matematice în Matlab 177<br />

obţine răspunsul 1 atunci când este prim şi 0, altfel. De exemplu, <strong>pentru</strong><br />

isprime(31) se obţine 1, iar <strong>pentru</strong> isprime(33) se obţine 0.<br />

Calculul celui mai mare divizor comun G, a două numere întregi a şi b,<br />

se obţine prin utilizarea funcţiei G=gcd(a,b). Pentru a=2310 şi b=273, funcţia<br />

gcd(a,b) găseşte 21, care este cel mai mare divizor comun.<br />

Calculul celui mai mic multiplu comun M, a două numere întregi a şi b,<br />

se realizează prin utilizarea funcţiei M=lcm(a,b). Pentru a=2310 şi b=273, funcţia<br />

lcm(a,b) se găseşte 30030, care este cel mai mic multiplu comun.<br />

Numărul tuturor combinaţiilor a N elemente, luate câte K (K


178<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

• prin limita şirului<br />

( x)<br />

( x + 1) ⋅( x + 2) ( x + n)<br />

1 x ⋅<br />

K<br />

= lim<br />

n<br />

x<br />

Γ → ∞ n!<br />

⋅n<br />

Principalele proprietăţi ale funcţiei Gamma sunt:<br />

• dacă argumentul x este un întreg, atunci funcţia Gamma este i<strong>de</strong>ntică cu<br />

funcţia factorial, respectiv n ! = Γ( n +1)<br />

;<br />

Γ x + 1 = xΓ<br />

x ;<br />

• <strong>pentru</strong> orice z finit, este satisfăcută relaţia <strong>de</strong> recurenţă ( ) ( )<br />

• cunoscând valoarea <strong>pentru</strong> x > 1, valorile <strong>pentru</strong> x < 1 se <strong>de</strong>termină din<br />

⋅ x<br />

ecuaţia complementelor Γ( 1 π<br />

π<br />

− x)<br />

=<br />

=<br />

Γ x <strong>si</strong>n π ⋅ x Γ x + 1 <strong>si</strong>n π ⋅ x<br />

;<br />

• <strong>pentru</strong><br />

1 ⎛ 1 ⎞<br />

x = funcţia Γ⎜<br />

⎟ = π .<br />

2 ⎝ 2 ⎠<br />

( ) ( ) ( ) ( )<br />

În Matlab, funcţia Gamma se apelează cu <strong>si</strong>ntaxa y=gamma(x), un<strong>de</strong> x este<br />

argumentul iar y este valoarea calculată. Pentru x=2.5 se obţine 1.3293, iar <strong>pentru</strong><br />

x=–0.5 se obţine -3.5449.<br />

Pentru x>0 se poate calcula logaritmul natural al funcţiei Gamma cu<br />

instrucţiunea gammaln(x), care corespun<strong>de</strong> lui log(gamma(x)), însă calculul se<br />

face printr-o metodă directă, fără a calcula gamma(x).<br />

Funcţia Gamma incompletă, gammainc(x,a), este <strong>de</strong>finită <strong>de</strong> relaţia,<br />

x<br />

1 −t<br />

a−1<br />

P( x,<br />

a)<br />

= ∫ e t dt,<br />

a > 0, a ∈ R+<br />

x ∈ R ,<br />

Γ(<br />

a)<br />

şi are limitele: ( 0 , a) = 0, P(<br />

∞,<br />

a)<br />

= 1<br />

0<br />

P .<br />

Pentru x=1.25 şi a=0.5, cu gammainc(1.25,0.5) se obţine 0.8862.<br />

Pentru x=[0:0.1:15] şi diverse valori ale lui a, funcţia Gamma incompletă se<br />

obţine prin instrucţiunile:<br />

g_05=gammainc(x,0.5); g_1=gammainc(x,1);<br />

g_3=gammainc(x,3); g_10=gammainc(x,10),<br />

iar valorile sunt prezentate în figura 8.1.<br />

Complementul funcţiei P(x,a), notată cu Q(x,a), este <strong>de</strong> multe ori confundată<br />

cu funcţia gamma incompletă,<br />

Γ(<br />

x,<br />

a)<br />

1 −t<br />

a−1<br />

Q ( x,<br />

a)<br />

= 1−<br />

P(<br />

x,<br />

a)<br />

= = ∫ e t dt,<br />

a > 0, a ∈ R+<br />

Γ(<br />

a)<br />

Γ(<br />

a)<br />

x<br />

x<br />

.<br />

x ∈ R<br />

şi are limitele,<br />

( 0 , a)<br />

= 1, P(<br />

∞,<br />

a)<br />

= 0<br />

Q .


Funcţii matematice în Matlab 179<br />

Fig. 8.1. Funcţia Gamma incompletă <strong>pentru</strong> diverse valori ale lui a şi x<br />

8.7.2. Funcţiile Beta şi Beta incompletă<br />

B , , sau funcţia lui Euler <strong>de</strong> prima speţă, <strong>de</strong> variabile<br />

complexe p şi q, poate fi <strong>de</strong>finită prin integrala,<br />

Funcţia Beta, ( p q)<br />

B<br />

1<br />

p−<br />

( p q) = t<br />

1 ( 1−<br />

t)<br />

∫<br />

0<br />

q−1<br />

, dt ,<br />

convergentă <strong>pentru</strong> R( p ) > 0 , ( ) > 0<br />

R q .<br />

Principalele proprietăţi ale funcţiei Beta sunt:<br />

• funcţia Beta, B ( p, q)<br />

, este <strong>si</strong>metrică în raport cu p şi q, B ( p q) B( q,<br />

p)<br />

obţinută prin schimbarea <strong>de</strong> variabilă 1 − t = τ , astfel că<br />

0<br />

1<br />

p p<br />

q p<br />

B p, q = − 1−τ τ dτ<br />

= τ 1−τ<br />

dτ<br />

B(<br />

q,<br />

p)<br />

;<br />

( ) ( ) ( )<br />

∫ ∫ =<br />

1<br />

0<br />

, = ,


180<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

• între funcţiile lui Euler B ( p, q)<br />

şi ( z)<br />

Γ<br />

( )<br />

( p) Γ( q)<br />

B p, q = ;<br />

Γ( p + q)<br />

Γ există relaţia<br />

• <strong>pentru</strong> funcţia lui Euler <strong>de</strong> prima speţă avem egalitatea,<br />

( p) Γ( q + 1)<br />

( p + q + 1)<br />

( p + 1) Γ( q)<br />

( p + 1+<br />

q)<br />

Γ<br />

Γ<br />

pB ( p, q + 1)<br />

= p<br />

= q<br />

= qB( p + 1,<br />

q)<br />

.<br />

Γ<br />

Γ<br />

În Matlab, funcţia Beta se apelează cu <strong>si</strong>ntaxa b=beta(p,q), un<strong>de</strong> p şi q sunt<br />

argumentele, iar b este valoarea calculată. Pentru p=0.5 şi q=1.5 se obţine 1.5708.<br />

Pentru x>0 se poate calcula logaritmul natural al funcţiei beta, cu<br />

instrucţiunea betaln(p,q), care corespun<strong>de</strong> lui log(beta(p,q)), însă calculul se face<br />

printr-o metodă directă, fără a calcula beta(p,q). Pentru p=0.5 şi q=1.5 se obţine<br />

0.4516.<br />

Funcţia Beta incompletă, betainc(x,p,q), este <strong>de</strong>finită <strong>de</strong> relaţia,<br />

B<br />

cu,<br />

inc<br />

( x,<br />

p,<br />

q)<br />

=<br />

1<br />

B(<br />

p,<br />

q)<br />

p , q > 0, p,q ∈ R+ x ∈[0,1]<br />

şi limitele:<br />

( 0 , p,<br />

q) = 0<br />

x<br />

p q ∞<br />

p−1<br />

q−1<br />

x<br />

( )<br />

( 1−<br />

x)<br />

⎡ B( p + 1, n + 1)<br />

n+<br />

1⎤<br />

∫ t 1−<br />

t dt =<br />

( )<br />

⎢1<br />

+ ∑ x<br />

pB p,<br />

q B( p + q,<br />

n + 1)<br />

⎥ ⎦<br />

B inc , B inc ( ∞,<br />

p,<br />

q)<br />

= 1.<br />

0 n=<br />

0<br />

Pentru x=[0:0.01:1] şi diverse valori ale lui p şi q, funcţia Beta incompletă se<br />

obţine prin:<br />

b1=betainc(x,0.5,5), b2=betainc(x,1,3),<br />

b3=betainc(x,8,10), b4=betainc(x,0.5,0.5),<br />

iar graficul este prezentat în figura 8.2.<br />

Pentru calculul funcţiei Beta incompletă se utilizează algoritmul din funcţia<br />

betacore, apelată în betainc(x,a,c) prin instrucţiunea betacore(x,a,b).<br />


Funcţii matematice în Matlab 181<br />

Fig. 8.2. Funcţia Beta incompletă <strong>pentru</strong> diverse valori ale lui p, q şi x<br />

8.7.3. Funcţiile lui Bessel<br />

Printre funcţiile speciale, <strong>de</strong>osebit <strong>de</strong> importante sunt funcţiile lui Bessel,<br />

<strong>de</strong>oarece se întâlnesc în diverse probleme din mai toate domeniile fizicii şi ale<br />

tehnicii.<br />

Ecuaţia diferenţială<br />

2<br />

(<br />

2 2<br />

x y′′<br />

( x)<br />

+ xy′<br />

( x)<br />

+ x −ν<br />

) y(<br />

x)<br />

= 0 ⇔<br />

2<br />

2 d y(<br />

x)<br />

dy(<br />

x)<br />

2 2<br />

x + x + ( x −ν<br />

) y(<br />

x)<br />

= 0<br />

2<br />

dx dx<br />

un<strong>de</strong> ν este un parametru real sau complex, se numeşte ecuaţia lui Bessel, iar<br />

soluţiile acestei ecuaţii se numesc funcţii Bessel.<br />

Funcţiile Bessel se mai numesc şi funcţii cilindrice datorită faptului că apar<br />

la rezolvarea ecuaţiei lui Laplace în coordonate cilindrice, în problemele la limită<br />

din teoria potenţialului (electric, termic, chimic).<br />

Soluţia generală a ecuaţiei lui Bessel <strong>pentru</strong> ν ≠ n întreg este<br />

y = C J x)<br />

+ C J ( )<br />

1 ν<br />

(<br />

2 −ν<br />

x<br />

un<strong>de</strong> C 1 şi C 2 sunt constante arbitrare, iar J ν şi J -ν sunt funcţiile Bessel <strong>de</strong> speţa întâi<br />

şi ordinul ν, respectiv –ν.<br />

Funcţia Bessel <strong>de</strong> speţa întâi şi ordinul ν, <strong>pentru</strong> o valoare x, din domeniul <strong>de</strong>


182<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

olomorfie (x)-T, un<strong>de</strong> T este o semidreaptă cu originea în x=0, este dată <strong>de</strong> relaţia<br />

J<br />

( −1)<br />

⎛ x ⎞<br />

⎜ ⎟<br />

⎝ 2 ⎠<br />

ν + 2 p<br />

∑ ∞ p<br />

ν<br />

( x)<br />

=<br />

.<br />

p=<br />

0 p!<br />

Γ( ν + p + 1)<br />

Între funcţiile Bessel cu indici <strong>de</strong> semne contrare, J ν şi J -ν , există relaţia<br />

n<br />

J<br />

− ν<br />

( x)<br />

= ( −1) Jν<br />

( x)<br />

.<br />

În Matlab, funcţia Bessel <strong>de</strong> speţa întâi şi ordinul niu (ν) real, pozitiv şi<br />

argumentul x se calculează cu instrucţiunea J=besselj(niu,x). Dacă x şi niu sunt<br />

vectori <strong>de</strong> dimen<strong>si</strong>unile m şi respectiv n, atunci J va fi o matrice cu dimen<strong>si</strong>unea<br />

m x n, în care elementul din poziţia (j,k) este dat <strong>de</strong> J(j,k)=besselj(niu(j),x(k)), cu<br />

j=1,…,m


Funcţii matematice în Matlab 183<br />

punctelor un<strong>de</strong> se evaluază funcţia Neumann.<br />

Fig. 8.3. Funcţiile Bessel <strong>de</strong> speţa întâi şi ordin întreg<br />

Funcţiile Bessel <strong>de</strong> prima speţă (numite <strong>de</strong> multe ori <strong>de</strong> primul sau întâiul<br />

ordin) şi speţa a doua (numite şi <strong>de</strong> ordinul doi) sunt asemănătoare cu funcţiile<br />

trigonometrice şi, <strong>de</strong> fapt, funcţia J ν (x) corespun<strong>de</strong> lui cos(x) şi funcţia Y ν (x)<br />

corespun<strong>de</strong> lui <strong>si</strong>n(x). Aceasta sugerează <strong>de</strong>ci să se <strong>de</strong>finească <strong>pentru</strong> funcţiile<br />

cilindrice, funcţii care sunt legate <strong>de</strong> J ν şi Y ν în acelaşi mod cum funcţiile<br />

exponenţiale sunt legate <strong>de</strong> cele trigonometrice, adică<br />

( 1 ) ( ) ( 2<br />

H ( x)<br />

J ( x)<br />

iY x , H<br />

) ( x)<br />

J ( x)<br />

iY ( x ),<br />

ν<br />

=<br />

ν<br />

+<br />

ν<br />

ν<br />

=<br />

ν<br />

−<br />

ν<br />

un<strong>de</strong> i este unitatea imaginară.<br />

( 1) ( 2)<br />

Funcţiile Hν ( x),<br />

Hν<br />

( x)<br />

se numesc funcţiile lui Bessel <strong>de</strong> speţa a treia<br />

(sau <strong>de</strong> ordinul trei) sau funcţiile lui Hankel. Acestea sunt cunoscute ca funcţiile<br />

( 1)<br />

( 2)<br />

Hankel <strong>de</strong> speţa întâi , H ν<br />

( x)<br />

, respectiv <strong>de</strong> speţa a doua, H ν<br />

( x)<br />

.<br />

Dacă ν ≠ n întreg, atunci<br />

−iνπ<br />

( ) Jν<br />

( x) e J<br />

ν<br />

( )<br />

H<br />

1 ν<br />

( x)<br />

i<br />

x<br />

iνπ<br />

−<br />

−<br />

( ) Jν<br />

( x) e − J<br />

ν<br />

( )<br />

= ,<br />

2 ν<br />

( )<br />

x −<br />

H x = −i<br />

.<br />

<strong>si</strong>nνπ<br />

<strong>si</strong>nνπ<br />

Schimbând pe ν în − ν , rezultă evi<strong>de</strong>nt,<br />

( 1) iνπ<br />

( 1)<br />

( 2) −iνπ<br />

( 2)<br />

H<br />

− ν<br />

( x)<br />

= e Hν<br />

( x)<br />

, H<br />

− ν<br />

( x)<br />

= e Hν<br />

( x)<br />

.


184<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

În Matlab, funcţiile Bessel <strong>de</strong> ordinul trei sau funcţiile lui Hankel sunt<br />

calculate cu instrucţiunea H=besselh(niu,k,z), un<strong>de</strong> niu este ordinul, k este ordinul<br />

sau speţa (k=1 <strong>pentru</strong> speţa întâi şi k=2 <strong>pentru</strong> speţa a doua), iar x ordonatele<br />

punctelor un<strong>de</strong> se evaluază funcţia Hankel.<br />

sunt:<br />

Valorile funcţiilor Bessel <strong>pentru</strong> valori foarte mici ale argumentului (|x|


Funcţii matematice în Matlab 185<br />

d<br />

dx<br />

2<br />

2<br />

Y<br />

( x) Y ′′ ( x)<br />

( n −1)<br />

⎡n<br />

⎤ 1<br />

=<br />

n<br />

=<br />

⎢<br />

−1<br />

Yn<br />

( x) + Yn<br />

( x)<br />

2<br />

+<br />

⎣ x ⎥<br />

.<br />

⎦ x<br />

n 1<br />

Dacă ordinul funcţiei Bessel este un multiplu impar al lui 1/2, atunci funcţia<br />

Bessel <strong>de</strong> prima speţă (ordinul întâi) poate fi exprimată, sub formă compactă, cu<br />

ajutorul funcţiilor trigonometrice elementare şi al puterilor negative, întregi şi<br />

fracţionale, ale lui x,<br />

J<br />

2<br />

xπ<br />

2<br />

xπ<br />

( x) = <strong>si</strong>n x,<br />

J ( x) = cos ,<br />

1 1<br />

x<br />

−<br />

2<br />

2<br />

2 ⎛ 1 ⎞<br />

2 ⎛ 1<br />

J ⎜<br />

⎟<br />

3 3 ⎜<br />

2<br />

⎟ ⎞<br />

xπ<br />

⎝ x ⎠<br />

− xπ<br />

⎝<br />

⎠<br />

J<br />

2<br />

( x) = <strong>si</strong>n x − cos x , J ( x) = − <strong>si</strong>n x + cos x ,<br />

2 ⎡<br />

x<br />

⎛ 1 ⎞<br />

⎜ ⎟<br />

⎝ x ⎠<br />

⎛ 1 ⎞<br />

⎜ ⎟<br />

⎝ x ⎠<br />

( x) = A <strong>si</strong>n x + B cos x , întreg,<br />

1 ⎢ n<br />

n<br />

n<br />

n+ π<br />

2 ⎣<br />

2<br />

⎥ ⎦<br />

⎤<br />

iar<br />

⎛ 1 ⎞<br />

An<br />

⎜ ⎟,<br />

B<br />

⎝ x ⎠<br />

n<br />

⎛ 1 ⎞<br />

⎜ ⎟<br />

⎝ x ⎠<br />

sunt<br />

polinoame în x<br />

1 <strong>de</strong> grad cel mult n.<br />

Liouville a arătat că acestea sunt <strong>si</strong>ngurele funcţii Bessel care pot fi<br />

exprimate prin funcţii elementare, iar toate celelalte sunt funcţii transcen<strong>de</strong>nte noi.<br />

Funcţiile Bessel <strong>de</strong> prima speţă şi <strong>de</strong> ordin întreg pot fi reprezentaţi printr-o<br />

integrală <strong>de</strong>finită. Astfel,<br />

J<br />

J<br />

2π<br />

2π<br />

1<br />

1<br />

1<br />

n<br />

i 2π ∫<br />

2π<br />

∫<br />

π ∫<br />

0<br />

0<br />

0<br />

ix cosθ<br />

inθ<br />

ix <strong>si</strong>nθ<br />

−inθ<br />

( x) = e e dθ<br />

= e e dθ<br />

= cos( x <strong>si</strong>nθ<br />

− nθ<br />

)<br />

n<br />

,<br />

0<br />

1<br />

π<br />

π<br />

( x) = ∫ cos( x <strong>si</strong>nθ<br />

) dθ<br />

= ∫ cos( x <strong>si</strong>nθ<br />

) dθ<br />

= ∫<br />

0<br />

2<br />

π<br />

π<br />

2<br />

0<br />

2<br />

π<br />

1<br />

0<br />

π<br />

cos ux<br />

1−<br />

u<br />

2<br />

du .<br />

De asemenea, funcţiile Bessel <strong>de</strong> prima speţă şi <strong>de</strong> ordin întreg, J n<br />

( x)<br />

,<br />

1<br />

=<br />

i2π<br />

x⎛<br />

1 ⎞<br />

⎜ζ<br />

−<br />

⎟<br />

2⎝<br />

ζ ⎠<br />

admit reprezentarea<br />

n<br />

( ) ∫ n+<br />

J<br />

x<br />

C<br />

e<br />

ζ<br />

1<br />

dθ<br />

dζ<br />

, un<strong>de</strong> C este un cerc cu centrul în<br />

punctul ζ = 0 sau o curbă <strong>si</strong>mplă închisă care înconjură acest punct.


186<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

8.7.4. Dezvoltarea în serie <strong>de</strong> funcţii Bessel a unei funcţii<br />

oarecare. Ortogonalitatea funţiilor Bessel <strong>de</strong> prima speţă<br />

şi zerourile lor.<br />

Se poate <strong>de</strong>monstra că o funcţie oarecare poate fi exprimată sub forma<br />

( x) a J ( ξ x)<br />

= ∑ ∞ f ν n ν<br />

, cu 0 ≤ x ≤ 1, adică poate fi exprimată cu ajutorul unui<br />

ν =1<br />

număr mare <strong>de</strong> funcţii Bessel <strong>de</strong> ordinul n. În această expre<strong>si</strong>e ξ , ξ ,... 2<br />

ξ ,... sunt<br />

1 ν<br />

J ordonate după mărime (n>-1), n fiind număr real.<br />

rădăcinile funcţiei<br />

n<br />

( ξ )<br />

Dacă n este real n>-1, toate zerourile funcţiei ( x)<br />

corespunzătoare are toţi coeficienţii reali. Funcţia ( x) = 0<br />

J n<br />

sunt reale, întrucât seria<br />

J n<br />

, cu n real, are o<br />

infinitate <strong>de</strong> rădăcini reale.<br />

Valorile coeficienţilor le obţinem în modul obişnuit, înmulţind ambii<br />

membrii ai egalităţii cu o asemenea funcţie, încât în membrul drept al egalităţii,<br />

integrând în domeniul 0 ≤ x ≤ 1, valoarea numai a unei <strong>si</strong>ngure integrale să rezulte<br />

diferită <strong>de</strong> zero. În acest fel, poate fi <strong>de</strong>terminat coeficientul corespunnzător<br />

termenului respectiv.<br />

Funcţiile xJ<br />

n<br />

( ξ<br />

1x) , xJ<br />

n<br />

( ξ<br />

2x) , ... xJ<br />

n<br />

( ξν<br />

x) ,... , 0 ≤ x ≤ 1, formează<br />

o mulţime <strong>de</strong> funcţii ortogonale în domeniul 0 ≤ x ≤ 1, adică,<br />

1<br />

∫<br />

0<br />

xJ<br />

n<br />

1<br />

( x) xJ<br />

( ξ x) dx xJ ( ξ x) J ( ξ x) dx = 0, i ≠ k<br />

ξ<br />

i<br />

n k<br />

= ∫ n i n k<br />

.<br />

Coeficienţii <strong>de</strong>zvoltării în serie<br />

f x = a J ξ x + a J ξ x + ... + a J ξ x<br />

( )<br />

1 n<br />

(<br />

1<br />

)<br />

2 n<br />

(<br />

2<br />

)<br />

n n<br />

(<br />

n<br />

) + ...<br />

îi putem obţine prin înmulţirea ambilor membrii cu funcţia ( ξ x)<br />

0<br />

xJ n ν<br />

, integrând <strong>de</strong><br />

la 0 la 1 şi ţinând seama <strong>de</strong> relaţia <strong>de</strong> ortogonalitate,<br />

1<br />

∫<br />

0<br />

xJ<br />

n<br />

( ξ x) J ( ξ x) dx = 0, i ≠ k<br />

i<br />

n<br />

k<br />

, astfel că termenii din membrul drept vor fi nuli,<br />

cu excepţia unuia <strong>si</strong>ngur.<br />

Prin urmare, coeficientul alν -lea al <strong>de</strong>zvoltării în serie este:<br />

a<br />

ν<br />

1<br />

n<br />

( ξν<br />

) ∫ )<br />

2<br />

0<br />

2<br />

=<br />

J ′<br />

f ( x xJ ( ξ x)dx<br />

.<br />

8.7.5. Funcţiile Bessel modificate<br />

n<br />

ν<br />

În practică, nu obţinem direct formele canonice ale ecuaţiilor Laplace în<br />

coordonate cilindrice,


Funcţii matematice în Matlab 187<br />

2<br />

2<br />

d y(<br />

x)<br />

1 dy(<br />

x)<br />

⎛ n ⎞<br />

1 ( ) 0<br />

2 + + ⎜ − = ⇔<br />

2<br />

⎟y<br />

x<br />

dx x dx ⎝ x ⎠<br />

2<br />

2 d y(<br />

x)<br />

dy(<br />

x)<br />

x + x +<br />

x<br />

2<br />

dx dx<br />

dx ⎝ dx ⎠<br />

2 2<br />

d ⎛ d ⎞ 2 2<br />

( x − n ) y(<br />

x)<br />

= 0 ⇔ x ⎜ x ⎟ + ( x − n ) y(<br />

) = 0<br />

ci, în general, trebuie să rezolvăm ecuaţii diferenţiale <strong>de</strong> forma:<br />

2<br />

2<br />

d y(<br />

x)<br />

1 dy(<br />

x)<br />

⎛ n ⎞<br />

+ + ( ) = 0<br />

2<br />

⎜k<br />

−<br />

2<br />

⎟y<br />

x ,<br />

dx x dx ⎝ x ⎠<br />

care, cu schimbarea <strong>de</strong> variabilă z = kx ,se reduce la forma canonică.<br />

Soluţia generală a ecuaţiei anterioare se poate scrie sub forma<br />

y = C1J<br />

n<br />

( kx)<br />

+ C2J<br />

−n<br />

( kx)<br />

sau y = C1J<br />

n<br />

( kx)<br />

+ C2Yn<br />

( kx)<br />

, care, <strong>pentru</strong> n şi x ,iau<br />

valori complexe.<br />

2<br />

Pentru cazul paricular k = −1, ecuaţia anterioară <strong>de</strong>vine<br />

2<br />

2<br />

d y(<br />

x)<br />

1 dy(<br />

x)<br />

⎛ n ⎞<br />

+ + 1 ( ) = 0<br />

2<br />

⎜−<br />

−<br />

2<br />

⎟y<br />

x ,<br />

dx x dx ⎝ x ⎠<br />

având soluţia generală <strong>de</strong> forma,<br />

y = C1I<br />

n ( x)<br />

+ C2Kn(<br />

x)<br />

,<br />

un<strong>de</strong> I n (x)<br />

este funcţia Bessel modificată <strong>de</strong> speţa întâi, iar K n<br />

(x)<br />

este funcţia<br />

Bessel modificată <strong>de</strong> speţa a doua.<br />

Aceste funcţii modificate sunt echivalentele funcţiilor Bessel J n<br />

(x)<br />

şi<br />

Y n<br />

(x) , care diferă printr-un factor constant şi sunt date <strong>de</strong> expre<strong>si</strong>ile,<br />

n<br />

n<br />

= i<br />

− J<br />

n<br />

( ix) ≡ ( − i) J<br />

n<br />

( ),<br />

π n+<br />

1<br />

π<br />

i [ J ( ix) + iY ( ix)<br />

] = [ I ( x) − I ( x)<br />

]<br />

I ( x)<br />

ix<br />

n<br />

K ( x)<br />

n<br />

=<br />

n<br />

n<br />

−n<br />

2<br />

2<strong>si</strong>n nπ<br />

fiind <strong>de</strong>numite, din această cauză şi funcţiile Bessel <strong>de</strong> argument pur imaginar.<br />

În Matlab, aceste funcţii sunt calculate cu formula bi=besseli(n,x) şi<br />

bk=besselk(n,x), un<strong>de</strong> n este ordinul, iar x este argumentul pur imaginar.<br />

Pentru x pur imaginar, având valorile modulului x=[0:0.1:4], se reprezintă în<br />

figura 8.4, funcţiile Bessel modificate <strong>de</strong> speţa întâi (I) şi a doua (K), <strong>de</strong> ordinul<br />

n=0,1,2, calculate cu secvenţele Matlab:<br />

x =[0:0.001:3.5];<br />

x1=[0.01:0.001:3.5]; K_0=besselk(0,x1);<br />

x2=[0.125:0.001:3.5]; K_1=besselk(1,x2);<br />

x3=[0.5:0.001:3.5]; K_2=besselk(2,x3);<br />

plot(x,I_0,x,I_1,'-.',x,I_2,'--',x1,K_0,x2,K_1,'-.',x3,K_2,'--').<br />

I_0=besseli(0,x); I_1=besseli(1,x); I_2=besseli(2,x);<br />

n<br />

,


188<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Fig. 8.4. Funcţiile Bessel modificate<br />

Dacă comportarea funcţiilor Bessel <strong>de</strong> speţa întâi şi a doua seamănă cu aceea<br />

a funcţiilor care <strong>de</strong>scriu mişcarea oscilatorie amortizată, (ceea ce a reieşit şi din<br />

faptul că <strong>pentru</strong> valori foarte mari ale argumentului ele pot fi înlocuite cu funcţii<br />

<strong>si</strong>nus, respectiv co<strong>si</strong>nus <strong>de</strong> amplitudine <strong>de</strong>screscătoare), comportarea funcţiilor<br />

Bessel modificate se aseamănă cu aceea a funcţiilor exponenţiale.<br />

Valorile funcţiilor Bessel modificate, <strong>pentru</strong> valori foarte mici ale<br />

argumentului (|x|


Funcţii matematice în Matlab 189<br />

I<br />

I<br />

0<br />

( x)<br />

1<br />

≈ 1 ,<br />

1<br />

−<br />

( x) 2x<br />

K<br />

K<br />

0<br />

( x)<br />

≈ 1<br />

1<br />

+<br />

1<br />

2<br />

( x) x<br />

, |x|≅1.<br />

Pentru funcţiile Bessel modificate, sunt valabile următoarele formule <strong>de</strong><br />

recurenţă:<br />

2n<br />

2n<br />

I<br />

n+ 1( x) = − I<br />

n<br />

( x) + J<br />

n−1( x) , K<br />

n+<br />

1( x) = K<br />

n<br />

( x) + K<br />

n−1<br />

( x)<br />

, K′ 0<br />

( x) = −K1( x)<br />

,<br />

x<br />

x<br />

d<br />

1<br />

1<br />

I<br />

0<br />

( x) = I′<br />

0<br />

( x) = I1( x)<br />

, I1( x) = xI ( x)dx<br />

dx<br />

x<br />

∫ 0<br />

, K1( x) = xK ( x)dx<br />

x<br />

∫ 0<br />

.<br />

Verificarea argumentelor funcţiilor Bessel se face cu besschk, apelată sub<br />

forma [MSG,n,x,SIZ] = besschk(n,x), în care în MSG se întoarce un mesaj<br />

referitor la n şi x, specificând dacă sunt numere şi dacă sunt reale, iar în SIZ se<br />

specifică dacă au aceeaşi dimen<strong>si</strong>une, concomitent cu un mesaj dacă nu au.<br />

8.7.6. Funcţiile lui Thomson<br />

Pe lângă funcţiile lui Bessel, <strong>de</strong> argument pur real sau pur imaginar, întâlnim<br />

1<br />

π 3<br />

şi funcţii <strong>de</strong> ordinul zero şi <strong>de</strong> argument i 2 i<br />

4<br />

x (respectiv xe ) sau i 2 x (respectiv<br />

π<br />

i<br />

4<br />

ixe ), a căror valoare este în general complexă.<br />

Pentru aceste funcţii, cu aplicaţii practice <strong>de</strong>osebite în electrotehnică, se<br />

folosesc notaţiile introduse <strong>de</strong> W. Thomson (lord Kelvin):<br />

π<br />

π<br />

⎛ i ⎞ ⎛ i ⎞<br />

⎜ 4 ⎟ = ⎜ 4<br />

ber( x ) + ibei(<br />

x)<br />

= J<br />

⎟<br />

0<br />

ixe<br />

I<br />

0<br />

xe ,<br />

⎝ ⎠ ⎝ ⎠<br />

3π<br />

π<br />

⎛ i ⎞ ⎛ i ⎞<br />

+ = ⎜ ⎟ = ⎜ ⎟<br />

−<br />

4<br />

4<br />

ker( x ) ikei(<br />

x)<br />

K0<br />

ixe<br />

K<br />

0<br />

xe .<br />

⎝ ⎠ ⎝ ⎠<br />

π<br />

⎛ i ⎞<br />

−n<br />

Ţinând seama <strong>de</strong> I<br />

n<br />

( x)<br />

= i J<br />

n<br />

( ix),<br />

avem ⎜ ∑ ∞<br />

4<br />

p 1 ⎛ x<br />

⎟<br />

⎞<br />

I<br />

0<br />

xe<br />

= i<br />

2<br />

⎜ ⎟<br />

⎝ ⎠ p=<br />

0 ( p!<br />

) ⎝ 2 ⎠<br />

astfel că:<br />

3<br />

1<br />

4<br />

8<br />

⎛ ⎞ ⎛ ⎞ 1 1<br />

2<br />

2<br />

⎛ x ⎞ ⎛ x ⎞<br />

ber( x ) = Re J ⎜ ⎟<br />

0<br />

Re ⎜ ⎟<br />

i x<br />

= J<br />

0<br />

i x<br />

≈1−<br />

+ −...<br />

2<br />

⎜ ⎟<br />

2<br />

⎜ ⎟ ,<br />

⎝ ⎠ ⎝ ⎠ ( 2! ) ⎝ 2 ⎠ ( 4! ) ⎝ 2 ⎠<br />

3<br />

1<br />

2<br />

6<br />

10<br />

⎛ ⎞ ⎛ ⎞ 1 1 1<br />

2<br />

2<br />

⎛ x ⎞ ⎛ x ⎞ ⎛ x ⎞<br />

bei( x)<br />

= Im J ⎜ ⎟<br />

0<br />

Im ⎜ ⎟<br />

i x<br />

= − J<br />

0<br />

i x<br />

≈ − + −...<br />

2<br />

⎜ ⎟<br />

2<br />

⎜ ⎟<br />

2<br />

⎜ ⎟<br />

⎝ ⎠ ⎝ ⎠ ( 1! ) ⎝ 2 ⎠ ( 3! ) ⎝ 2 ⎠ ( 5! ) ⎝ 2 ⎠<br />

Curbele funcţiilor ber(x) şi bei(x) sunt prezentate în figura 8.5 şi sunt<br />

2 p<br />

,


190<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

calculate în Matlab cu instrucţiunile:<br />

x=[0:0.1:10]; ber=real(besselj(0,i^0.5*x)); bei=imag(besselj(0,i^1.5*x));<br />

plot(x,ber,'-.',x,bei); xlabel('x'); ylabel('Functiile lui Thomson').<br />

Prin <strong>de</strong>finiţie, ber(x) şi bei(x) se numesc funcţiile lui Thomson.<br />

Acestea se generalizează <strong>pentru</strong> ν oarecare prin egalităţile:<br />

3π<br />

⎛ ± i ⎞<br />

ber ± = ⎜ 4 ⎟<br />

ν ( x ) ibeiν<br />

( x)<br />

Jν<br />

xe ,<br />

⎝ ⎠<br />

3π<br />

⎛ ± i ⎞<br />

ker ( ) ± kei ( ) = ⎜ ⎟<br />

− 4<br />

ν x i ν x Kν<br />

ixe ,<br />

⎝ ⎠<br />

3π<br />

⎛ ± i ⎞<br />

(1)<br />

her( x ) + ihei(<br />

x)<br />

= H ⎜ 4 ⎟<br />

ν<br />

xe<br />

.<br />

⎝ ⎠<br />

Fig. 8.5. Funcţiile lui Thomson ber(x) şi bei(x)


Funcţii matematice în Matlab 191<br />

8.7.7. Funcţia Airy<br />

Pe lângă funcţiile lui Bessel, <strong>de</strong> argument pur real sau pur imaginar, întâlnim<br />

şi funcţiile Airy, <strong>de</strong>finite astfel:<br />

• W = airy(Z) - funcţia Airy, Ai(z), a elementelor Z;<br />

• W = airy(0,Z) – i<strong>de</strong>ntică cu airy(Z);<br />

• W = airy(1,Z) – <strong>de</strong>rivate funcţiei Airy, Ai'(z);<br />

• W = airy(2,Z) – funcţia Airy <strong>de</strong> speţa a doua, Bi(z);<br />

• W = airy(3,Z) – <strong>de</strong>rivate funcţiei Airy <strong>de</strong> speţa a doua, Bi'(z).<br />

Dacă argumentul Z este o matrice, rezultatul este <strong>de</strong> acelaşi tip.<br />

Sub forma [W,IERR] = airy(K,Z), returnează în IERR şi informaţii<br />

referitoare la rezultatul calculelor. Astfel:<br />

• ierr = 1 argument illegal (Illegal arguments);<br />

• ierr = 2 <strong>de</strong>păşire spre infinit (Overflow. Return Inf.);<br />

• ierr = 3 acurateţe ina<strong>de</strong>cvată (Some loss of accuracy in argument<br />

reduction)<br />

• ierr = 4 rezultatele sunt ina<strong>de</strong>cvate (Complete loss of accuracy, z too<br />

large);<br />

• ierr = 5 nu este convergentă (No convergence. Return NaN).<br />

Relaţiile dintre funcţiile Airy şi Bessel modificate sunt:<br />

1 z<br />

Ai(z) = ⋅ ⋅ K<br />

π 3<br />

z<br />

Bi(z)<br />

3<br />

3<br />

2<br />

un<strong>de</strong>: ζ = ⋅ z 2 .<br />

3<br />

−1/<br />

3<br />

( ζ )<br />

( I ( ) + I ( ζ ))<br />

= ⋅<br />

− 1/ 3<br />

ζ<br />

1/ 3<br />

În Matlab, relaţiile sunt:<br />

Ai(z) = 1/pi*sqrt(z/3)*K_1/3(zeta)<br />

Bi(z) = sqrt(z/3)*(I_-1/3(zeta)+I_1/3(zeta))<br />

un<strong>de</strong> zeta = 2/3*z^(3/2).<br />

8.7.8. Funcţia eroare<br />

Funcţia eroare, erf(x), şi complementara funcţiei eroare, erfc(x), sunt cazuri<br />

speciale ale funcţiei Gamma incomplete, <strong>de</strong>finite prin relaţiile:<br />

2 t<br />

erf(x) = ⋅∫ e<br />

−<br />

π<br />

x<br />

0<br />

2<br />

dt = P(<br />

x<br />

2<br />

,0.5) ,


192<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

2<br />

erfc(x) = ⋅∫ − t<br />

e<br />

π<br />

x<br />

0<br />

2<br />

dt = 1−<br />

erf(x)<br />

în care P ( x<br />

2 ,0.5)<br />

este funcţia Gamma incompletă, iar argumentul x trebuie să fie<br />

real şi x ≥ 0 .<br />

Funcţia eroare şi complementara acesteia au limitele,<br />

erf(0) = 0 , erf( ∞ ) = 1, erfc(0) = 1, erfc( ∞ ) = 0 ,<br />

şi respectă relaţiile <strong>de</strong> <strong>si</strong>metrie :<br />

erf(-x) = −erf(-x) , erfc(-x) = 2 − erfc(x) .<br />

Calculul valorii funcţiei eroare genaralizate, <strong>pentru</strong> x şi y scalar, vector sau<br />

matrice se face cu relaţia:<br />

2<br />

erf(x) = ⋅∫ − t<br />

e<br />

π<br />

y<br />

x<br />

2<br />

dt = erf(y) − erf(x) .<br />

Inversa funcţiei eroare, erfinv(y), returnează valoarea x <strong>pentru</strong> valori<br />

cunoscute ale argumentului y şi se apelează cu <strong>si</strong>ntaxa x=erfinv(y). Valorile lui y<br />

- ∞ , + ∞ .<br />

trebuie să fie în intervalul [-1 1], iar x rezultă în intervalul ( )<br />

Funcţia eroare, acoperitoare <strong>pentru</strong> fiecare argument x este:<br />

erfcx(x)<br />

2<br />

= x<br />

e ⋅erf(x)<br />

,<br />

care, <strong>pentru</strong> x foarte mare, este aproximată cu<br />

8.7.9. Funcţia integrală exponenţială<br />

1 1 ⋅ .<br />

π x<br />

Funcţia integrală exponenţială, expint, <strong>pentru</strong> fiecare element x>0, este<br />

<strong>de</strong>finită prin:<br />

∞<br />

∫<br />

x<br />

−t<br />

e<br />

expint(x) = dt .<br />

t<br />

O altă <strong>de</strong>finiţie a funcţiei integraleexponenţială este valoarea principală a<br />

integralei Chauchy, notată Ei şi <strong>de</strong>finită prin:<br />

x<br />

∫<br />

−∞<br />

−t<br />

e<br />

Ei(x) = dt .<br />

t<br />

Relaţia dintre cele două <strong>de</strong>finiţii este:<br />

expint(-x+i*0) = -Ei(x) - i*pi, <strong>pentru</strong> x > 0<br />

Ei(x) = real(-expint(-x)), <strong>pentru</strong> x > 0.


Funcţii matematice în Matlab 193<br />

8.7.10. Polinoamele şi funcţiile Legendre asociate<br />

În coordonate carteziene x, y, z, ecuaţia lui Laplace ∆u = div grad u = 0 ,<br />

se scrie,<br />

2 2 2<br />

∂ u ∂ u ∂ u<br />

+ + = 0 ,<br />

2 2 2<br />

∂ x ∂ y ∂ z<br />

iar în coordonate sferice, r, θ , ϕ , această ecuaţie are forma,<br />

1 2<br />

∂ ⎛ ∂ U ⎞ 1 ∂ U ∂ ⎛ ∂ U<br />

<strong>si</strong>n<br />

2 ⎞<br />

⋅ ⋅⎜<br />

θ ⋅ ⎟ + ⋅ + ⋅ = 0<br />

2 2<br />

⎜r<br />

⋅ ⎟ ,<br />

<strong>si</strong>nθ<br />

∂θ<br />

⎝ ∂θ<br />

⎠ <strong>si</strong>n θ ∂ ϕ ∂ r ⎝ ∂ r ⎠<br />

un<strong>de</strong>:<br />

U ( r, θ , ϕ ) = u( r ⋅ <strong>si</strong>nθ<br />

⋅ cosϕ,<br />

r ⋅ <strong>si</strong>nθ<br />

⋅ <strong>si</strong>nϕ,<br />

r ⋅ cosθ<br />

)<br />

este funcţia obţinută din u ( x, y,<br />

z)<br />

prin schimbarea coordonatelor carteziene în<br />

sferice,<br />

x = r ⋅<strong>si</strong>nθ<br />

⋅cosϕ,<br />

y = r ⋅<strong>si</strong>nθ<br />

⋅<strong>si</strong>nϕ,<br />

z = r ⋅cosθ<br />

.<br />

Funcţiile u ( x y,<br />

z)<br />

numesc funcţii sferice. Gradul <strong>de</strong> omogenitate al funcţiei u ( x y,<br />

z)<br />

, , omogene în x, y, z, care satisfac ecuaţia lui Laplace se<br />

, se numeşte şi<br />

ordinul funcţiei sferice.<br />

Dacă u ( x, y,<br />

z)<br />

este o funcţie sferică <strong>de</strong> ordinul n, datorită omogenităţii,<br />

avem<br />

n<br />

n<br />

U r θ , ϕ = r ⋅u<br />

r ⋅<strong>si</strong>nθ<br />

⋅cosϕ,<br />

r ⋅<strong>si</strong>nθ<br />

⋅<strong>si</strong>nϕ,<br />

r ⋅cosθ<br />

= r ⋅ F θ , ϕ ,<br />

( ) ( ) ( )<br />

,<br />

n<br />

care, introdusă în ecuaţia lui Laplace, scrisă în coordonate sferice şi <strong>si</strong>mplificând cu<br />

n<br />

r , conduce la:<br />

2<br />

1 ∂ ⎛ ∂ Fn<br />

⎞ 1 ∂ Fn<br />

⋅ ⋅⎜<strong>si</strong>nθ<br />

⋅ ⎟ + ⋅ + n⋅( n + 1) ⋅ F = 0<br />

2 2<br />

n<br />

.<br />

<strong>si</strong>nθ<br />

∂θ<br />

⎝ ∂θ<br />

⎠ <strong>si</strong>n θ ∂ ϕ<br />

Funcţiile F ( θ ,ϕ )<br />

n<br />

, care verifică ecuaţia Laplace <strong>de</strong> mai sus, se numesc<br />

funcţii sferice superficiale <strong>de</strong> ordinul n, <strong>de</strong>oarece pe sfera cu centrul în origine şi <strong>de</strong><br />

rază r = 1 avem:<br />

U , θ , ϕ = F θ , ϕ .<br />

( 1 )<br />

n<br />

( )<br />

Fiecărei funcţii sferice ( x, y,<br />

z) U ( r,θ ,ϕ )<br />

funcţie sferică superficială<br />

n<br />

( θ ,ϕ )<br />

superficiale F<br />

n<br />

( θ ,ϕ ) îi corespun<strong>de</strong> o funcţie sferică<br />

n<br />

u( x y,<br />

z) = U ( r,<br />

θ , ϕ ) = r ⋅ F ( θ , ϕ )<br />

<strong>de</strong> acelaşi ordin n.<br />

,<br />

n<br />

u = <strong>de</strong> ordinul n îi corespun<strong>de</strong> o<br />

F şi, reciproc, fiecărei funcţii sferice


194<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

De menţionat că schimbarea lui n în p = −n<br />

−1, lasă ecuaţia anterioară<br />

n<br />

neschimbată şi prin urmare, dacă U ( r, θ , ϕ ) r ⋅ Fn<br />

( θ , ϕ )<br />

−n−1<br />

atunci şi funcţia ( r θ , ϕ ) r ⋅ F ( θ , ϕ )<br />

1<br />

, =<br />

−n−1<br />

= este o funcţie sferică,<br />

U este o funcţie sferică.<br />

Polinoamele lui Legendre sau funcţiile lui Legendre <strong>de</strong> prima speţă sunt<br />

funcţii sferice superficiale, care satisfac ecuaţia lui Laplace. Acestea sunt<br />

polinoame <strong>de</strong> gradul n în x = cosα<br />

, conţinând numai puteri pare sau impare, după<br />

cum n este par sau impar, iar semnele termenilor săi alternează:<br />

P<br />

n<br />

⎛ n ⎞<br />

E⎜<br />

⎟<br />

⎝ 2 ⎠<br />

k k 1⋅3⋅<br />

5L<br />

= n ∑ ⋅ Cn−k<br />

⋅<br />

k<br />

k = 0 2 !<br />

( cos ) P ( x) = ( −1)<br />

( 2n<br />

− 2k<br />

−1)<br />

( n − k)<br />

n−2k<br />

α ⋅ x ,<br />

⎛ ⎞<br />

⎜ n ⎟<br />

n<br />

în care E ⎜ ⎟ este partea întreagă a numărului .<br />

⎝ 2 ⎠<br />

2<br />

De remarcat că, <strong>pentru</strong> α real, x ∈ [ − 1, 1]<br />

.<br />

Principalele proprietăţi ale polinoamelor lui Legendre sunt:<br />

• pot fi exprimate prin formula Olin<strong>de</strong>-Rodrigues,<br />

n<br />

1 d 2<br />

P ( ) ( ) n<br />

n<br />

x = x −1<br />

,<br />

n n<br />

2 n!<br />

d x<br />

sau formula lui Schlafli, ca o integrală pe o curbă oarecare, C, închisă cu x,<br />

un punct interior domeniului mărginit <strong>de</strong> C,<br />

P<br />

n<br />

2<br />

1 1<br />

( )<br />

( ζ −1)<br />

x = ⋅<br />

2<br />

n<br />

2π<br />

⋅ i<br />

∫ C<br />

n+<br />

1<br />

( ζ − x)<br />

n<br />

dζ<br />

,<br />

• satisfac relaţia <strong>de</strong> recurenţă, care permite <strong>de</strong>terminarea tuturor<br />

polinoamelor, când se cunosc două dintre ele, cu indici diferind printr-o<br />

unitate,<br />

n P − 2n<br />

+ 1 xP + nP = 0, 1,2,3<br />

( ) ( ) L<br />

+ 1<br />

n + 1 n n−1<br />

n = ,<br />

• <strong>pentru</strong> x ∈ [ − 1, 1]<br />

iau valori reale în intervalul [ − 1, 1]<br />

,<br />

• au toate rădăcinile reale şi distincte, cuprinse în intervalul <strong>de</strong>schis ( 1 1)<br />

• polinomul lui Legendre ( x)<br />

Legendre,<br />

P n<br />

este o soluţie a ecuaţiei diferenţiale a lui<br />

2<br />

[( x −1)<br />

y'<br />

] − n( n −1) y = 0 ⇔ ( x −1) y"<br />

+ 2xy'<br />

−n( n −1) y = 0<br />

d 2<br />

,<br />

d x<br />

• polinoamele lui Legendre formează un <strong>si</strong>stem <strong>de</strong> funcţii ortogonale pe<br />

intervalul [ − 1, 1]<br />

,<br />

− ,


Funcţii matematice în Matlab 195<br />

1<br />

⎧ 0 <strong>pentru</strong> k ≠ n<br />

⎪<br />

∫ Pk<br />

( x) ⋅ Pn<br />

( x)<br />

⋅ dx<br />

= ⎨ 2<br />

,<br />

<strong>pentru</strong> k = n<br />

−1<br />

⎪⎩ 2n<br />

+ 1<br />

ceea ce permite să con<strong>si</strong><strong>de</strong>răm seria Fourier a unei funcţii f(x), integrabilă<br />

şi cu pătratul integrabil pe [ − 1, 1]<br />

, faţă <strong>de</strong> <strong>si</strong>stemul <strong>de</strong> funcţii format <strong>de</strong><br />

polinoamele Legendre, a ⋅ P ( x ) cu coeficienţii Fourier generalizaţi<br />

a<br />

n<br />

1<br />

2 n + 1<br />

=<br />

2<br />

∫<br />

−1<br />

f<br />

∑ ∞<br />

n = 0<br />

( x ) ⋅ P ( x ) ⋅ d x<br />

n<br />

n<br />

n<br />

De menţionat că, polinomul lui Legendre P n<br />

( x)<br />

, este o soluţie particulară a<br />

2<br />

ecuaţiei lui Legendre, ( −1) y"<br />

+ 2xy'<br />

−n( n −1) y = 0<br />

x .<br />

Soluţia generală a ecuaţiei lui Legendre este<br />

⎡ x + 1 ⎤<br />

y = Pn<br />

( x) ⋅ z = C ⋅ ⎢Pn<br />

( x) ⋅ln + K<br />

n−1<br />

( x) ⎥ + C1<br />

⋅ Pn<br />

( x)<br />

,<br />

⎣ x −1<br />

⎦<br />

în care polinoamele ( x)<br />

<strong>de</strong> puteri.<br />

K n 1<br />

−<br />

se <strong>de</strong>termină <strong>de</strong>zvoltând funcţia<br />

ln<br />

x + 1<br />

x −1<br />

în serie<br />

x + 1<br />

Funcţiile Qn ( x) = Pn<br />

( x) ⋅ln<br />

+ K<br />

n−1( x)<br />

se numesc funcţiile lui<br />

x −1<br />

Legendre <strong>de</strong> speţa a doua. Aceste funcţii verifică, evi<strong>de</strong>nt, ecuaţia lui Legendre şi<br />

satisfac aceleaşi relaţii <strong>de</strong> recurenţă ca polinoamele lui Legendre.<br />

Funcţiile lui Legendre asociate se construiesc folo<strong>si</strong>nd funcţiile lui<br />

Legendre <strong>de</strong> prima speţă şi <strong>de</strong> speţa a doua şi sunt :<br />

m m<br />

d Pn<br />

( ) ( )<br />

( x )<br />

Pn<br />

m<br />

x 1 x<br />

2 2<br />

,<br />

= −<br />

,<br />

m<br />

d x<br />

m m<br />

2 d Q<br />

n<br />

( ) ( )<br />

( x )<br />

Q<br />

n m<br />

x 1 x 2<br />

,<br />

= −<br />

,<br />

m<br />

d x<br />

un<strong>de</strong> m şi n iau valorile 0, 1, 2, 3, …, iar m ≤ n .<br />

Funcţiile lui Legendre asociate sunt soluţii ale ecuaţiei diferenţiale:<br />

2<br />

2 ⎡ m ⎤<br />

( 1−<br />

x ) y"<br />

−2x<br />

⋅ y'<br />

+ ⎢n( n + 1) − = 0<br />

2 ⎥<br />

1<br />

⋅ y<br />

⎣ − x ⎦<br />

şi pot fi exprimate <strong>si</strong>ntetic sub forma:


196<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

m m<br />

m<br />

2 d Pn<br />

( ) ( )<br />

( x )<br />

− 1 ⋅ 1 x<br />

Pn<br />

m<br />

( x )<br />

2<br />

,<br />

= −<br />

,<br />

m<br />

d x<br />

în care n este gradul, iar m este ordinul.<br />

Calculul acestor funcţii se face în Matlab prin instrucţiunea<br />

P=legendre(n,x), care permite calculul funcţiilor Legendre <strong>de</strong> gradul n şi ordinul<br />

m=0, 1, …, n, evaluate <strong>pentru</strong> fiecare element x. De menţionat că n trebuie să fie<br />

un scalar întreg n < 256, iar x ∈ [ − 1, 1]<br />

, adică -1


Funcţii matematice în Matlab 197<br />

0 -0.2985 -0.5879 -0.8585 -1.0998 -1.2990<br />

3.0000 2.9700 2.8800 2.7300 2.5200 2.2500<br />

iar instrucţiunea,<br />

P=legendre(2,0:0.1:0.5,'sch')<br />

are ca rezultat,<br />

P =<br />

-0.5000 -0.4850 -0.4400 -0.3650 -0.2600 -0.1250<br />

0 0.1723 0.3394 0.4957 0.6350 0.7500<br />

0.8660 0.8574 0.8314 0.7881 0.7275 0.6495<br />

<strong>de</strong> un<strong>de</strong> se observă diferenţa.<br />

Pentru m=1 şi n=1, ecuaţia diferenţială <strong>de</strong> gradul doi <strong>de</strong>vine:<br />

2 ⎡ 1 ⎤<br />

( 1−<br />

x ) y"<br />

−2x<br />

⋅ y'<br />

+<br />

⎢<br />

2 − ⋅ = 0<br />

2<br />

⎣ 1−<br />

⎥<br />

y ,<br />

x ⎦<br />

iar soluţiile, <strong>pentru</strong> x=0:0.01:1 sunt calculate cu relaţia P1=legendre(2,x), <strong>pentru</strong><br />

funcţiile Legendre asociate şi relaţia P2=legendre(2,x,'sch'), <strong>pentru</strong> funcţiile<br />

Schmidt seminormalizate, asociate funcţiilor Legendre.<br />

Reprezentarea grafică este redată în figura 8.6.<br />

1<br />

0.5<br />

P2<br />

0<br />

y<br />

-0.5<br />

P1<br />

-1<br />

-1.5<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

x<br />

Fig.8.6. Soluţiile ecuaţiiei <strong>de</strong> gradul 2 cu funcţii Legendre


198<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

8.7.11. Funcţii eliptice Jacobi<br />

Polinoamele lui Jacobi sunt <strong>de</strong> forma:<br />

− α<br />

β<br />

n<br />

1 ( x − a ) ( b − x ) d<br />

α + n<br />

J<br />

n<br />

( x ) = ⋅<br />

( x − a ) ( b − x )<br />

n<br />

n<br />

( a − b ) ( α + 1)( α + 2 ) L ( α + n ) d x<br />

un<strong>de</strong> α , β sunt două numere reale mai mari <strong>de</strong>cât –1.<br />

Polinomul lui Jacobi (x)<br />

este o soluţie a ecuaţiei diferenţiale:<br />

J n<br />

β + n<br />

[ ]<br />

( x − a)( x − b) ⋅ y" + [( α + 1)( x − b) + ( β + 1)( x − a)<br />

] ⋅ y'<br />

−n( n + α + β + 1) ⋅ y = 0<br />

Totodată, polinoamele lui Jacobi, cuprind drept cazuri particulare, alte<br />

polinoame speciale, astfel:<br />

• <strong>pentru</strong> α = 0 , β = 0, a = −1,<br />

b = 1 se obţin polinoamele lui Legendre sub<br />

forma Olin<strong>de</strong>-Rodrigues;<br />

• dacă α = 0 , β = b , se obţine polinomul lui Laguere, până la o constantă ;<br />

2<br />

b<br />

• <strong>pentru</strong> a = −b,<br />

α = β = , se obţin polinoamele lui Hermite ;<br />

2<br />

1<br />

• <strong>pentru</strong> a = −1,<br />

b = 1, α = β = − , se obţin polinoamele lui Cebîşev.<br />

2<br />

În Matlab, funcţia [Sn,Cn,Dn] = ellipj(U,M, TOL), returnează valorile<br />

funcţiilor eliptice SN, CN şi DN, evaluate <strong>pentru</strong> fiecare element al argumentului U<br />

şi parametrului M, cu toleranţa TOL. Vectorii U şi M trebuie să aibă aceeaşi<br />

dimen<strong>si</strong>une sau unul să fie scalar, iar M are limitele 0


Funcţii matematice în Matlab 199<br />

z=-10:0.1:10; f=1./sqrt(2*pi)*exp(-z.^2/2);<br />

plot(z,f); grid on; xlabel('z'); ylabel('f(z)').<br />

Calculul funcţiei <strong>de</strong> repartiţie Laplace,<br />

f<br />

∞<br />

1<br />

2<br />

= e<br />

− t<br />

dt<br />

2 ⋅π<br />

( z) ∫<br />

f ( z) dz = ⋅<br />

∫<br />

−∞<br />

∞<br />

−∞<br />

foloseşte secvenţa,<br />

F=trapz(z,1./(sqrt(2*pi))*exp(-z.^2/2))<br />

care, <strong>pentru</strong> valorile anterioare, rezultă F=1. Limita <strong>de</strong> integrare, ∞ , se poate lua<br />

un număr între -5 şi -10, fără ca, prin aceasta, să se inducă erori semnificative.<br />

Fig. 8.7. Den<strong>si</strong>tatea <strong>de</strong> probabilitate cu repartiţie normală normată<br />

8.8. Transformări <strong>de</strong> coordonate<br />

Dacă în unele probleme <strong>de</strong> teoria câmpurilor (termice, electrice, magnetice,<br />

barice) se utilizează un <strong>si</strong>stem <strong>de</strong> coordonate, nu întot<strong>de</strong>auna <strong>si</strong>stemul cartezian<br />

este cel mai potrivit. De aceea, este necesar să studiem problema reprezentării<br />

funcţiilor scalare şi a funcţiilor vectoriale, precum şi a unor mărimi <strong>de</strong>rivate, în<br />

coordonate oarecare. Mai mult, este necesar să putem transforma un <strong>si</strong>stem <strong>de</strong><br />

coordonate în alt <strong>si</strong>stem <strong>de</strong> coordonate.<br />

Fie x, y, z coordonatele carteziene ortogonale ale unui punct arbitrar P (vezi<br />

figura 8.8).


200<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Poziţia unui punct ( x , y z )<br />

P poate fi obţinută ca intersecţia planelor<br />

0 0 0,<br />

0<br />

x = x 0<br />

, y = y0<br />

, z = z0<br />

. Aceste plane se intersectează, două câte două, după<br />

dreptele<br />

y = y , z = z ;<br />

0<br />

z = z , x = x ;<br />

0<br />

x = x , y = y ,<br />

0<br />

0<br />

0<br />

0<br />

paralele cu axele <strong>de</strong> coordonate. Fiecărui punct P<br />

0<br />

din spaţiu, îi este ataşat un<br />

r r r<br />

triedru i , j,<br />

k , care este acelaşi <strong>pentru</strong> toate punctele din spaţiu.<br />

Fig. 8.8.<br />

În coordonate cilindrice, poziţia unui punct P este caracterizată prin<br />

ρ ,ϕ, z , un<strong>de</strong> ρ este distanţa <strong>de</strong> la origine la proiecţia P ' a punctului P, pe planul<br />

xOy , ϕ este unghiul format <strong>de</strong> OP ' cu axa Ox , iar z cota lui P faţă <strong>de</strong> planul<br />

xOy .<br />

P ρ , ϕ z este intersecţia următoarelor suprafeţe: cilindru<br />

Punctul ( )<br />

0 0 0,<br />

0<br />

ρ = ρ 0<br />

, semiplanul ϕ<br />

0<br />

ϕ = şi planul z = z0<br />

(vezi figura 8.9).<br />

Intersecţiile acestor suprafeţe, luate câte două, sunt: semidreapta<br />

variază numai ρ , cercul<br />

C<br />

ϕ<br />

, pe care variază numai ϕ şi dreapta<br />

C<br />

ρ<br />

, pe care<br />

C<br />

z<br />

, pe care<br />

variază numai z.<br />

r r r<br />

Notăm cu u , u , ρ ϕ<br />

uz<br />

vectorii unitari tangenţi la aceste curbe, în P<br />

0<br />

şi dirijaţi<br />

în sensul crescător al variabilelor respective. Aceşti vectori sunt <strong>de</strong>terminaţi în<br />

toate punctele din spaţiu, cu excepţia axei Oz , în care u r u r , au direcţii<br />

ρ<br />

ϕ


Funcţii matematice în Matlab 201<br />

ne<strong>de</strong>terminate.<br />

r r r<br />

Fiind ortogonali, doi câte doi, u , u , ρ ϕ<br />

uz<br />

formează un triedru ne<strong>de</strong>generat,<br />

<strong>de</strong> referinţă <strong>pentru</strong> orice punct, variabil cu punctul în care este con<strong>si</strong><strong>de</strong>rat.<br />

Fig. 8.9.<br />

Între coordonatele cilindrice şi coordonatele carteziene avem relaţiile:<br />

⎧x<br />

= ρ ⋅ cosϕ<br />

⎪<br />

⎨ y = ρ ⋅ <strong>si</strong>nϕ<br />

⎪<br />

⎩ z = z<br />

cu ρ ≥ 0 , 0 ≤ ϕ < 2π<br />

.<br />

Funcţia Matlab care realizează această transformare, din coordonate<br />

cilindrice în coordonate carteziene, este pol2cart. Aceasta poate fi apelată prin:<br />

[X,Y,Z] = pol2cart(TH,R,Z)<br />

în care TH este unghiul ϕ , R este raza ρ , iar Z este înălţimea z, iar X, Y, Z sunt<br />

coordonatele carteziene. Matricele TH, R şi Z trebuie să aibă aceeaşi dimen<strong>si</strong>une<br />

(sau oricare să fie scalar);TH este dat în radiani.<br />

De exemplu, dacă coordonatele punctului sunt TH=pi/6, R=2 şi Z=3, atunci:<br />

[X,Y,Z] = pol2cart(TH,R,Z),<br />

conduce la X = 1.7321, Y = 1.0000, Z = 3.<br />

Pentru plan, transformarea coordonatelor polare în carteziene se face cu<br />

instrucţiunea [X,Y] = pol2cart(TH,R), din care lipseşte Z. Coordonata Z nu suferă<br />

nici o transformare la trecerea dintr-un <strong>si</strong>stem <strong>de</strong> coordonate în altul.<br />

Transformarea inversă, din coordonate carteziene în coordonate polare se<br />

face după relaţiile:


202<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

⎧<br />

2 2<br />

ρ = x + y<br />

⎪<br />

⎛ y ⎞<br />

⎨ϕ<br />

= arctan⎜<br />

⎟<br />

⎪ ⎝ x ⎠<br />

⎪ z = z<br />

⎩<br />

⎛ y ⎞<br />

cu ρ ≥ 0 , -π<br />

≤ arctan⎜<br />

⎟ < π .<br />

⎝ x ⎠<br />

Funcţia Matlab care realizează această transformare este cart2pol, care<br />

poate fi apelată prin instrucţiunea:<br />

[TH,R,Z] = cart2pol(X,Y,Z)<br />

sau<br />

[TH,R] = cart2pol(X,Y),<br />

în care X, Y, Z sunt coordonatele carteziene, iar TH este unghiul ϕ , R este raza<br />

ρ , Z este înălţimea z. Matricele X, Y şi Z trebuie să aibă aceeaşi dimen<strong>si</strong>une (sau<br />

oricare să fie scalar), iar TH este returnat în radiani.<br />

De exemplu, dacă X = 1.7321, Y = 1.0000, Z = 3, atunci prin<br />

instrucţiunea [TH,R,Z] = cart2pol(X,Y,Z), rezultă TH = 0.5236 =pi/6, R = 2.0000,<br />

Z = 3.<br />

În coordonate sferice, un punct P, este dat prin: r = OP , unghiul θ format<br />

<strong>de</strong> OP cu axa Oz şi unghiul ϕ , pe care îl face proiecţia OP ' a lui OP , pe planul<br />

xOy , cu axa Ox (vezi figura 8.10).<br />

În acest caz, curbele pe care variază numai unul dintre parametri sunt<br />

următoarele: semidreapta C ce porneşte din origine, semicercul meridian C şi<br />

r<br />

cercul C<br />

ϕ<br />

.<br />

Sensul crescător al parametrilor pe aceste curbe va fi indicat, respectiv, prin<br />

r r r<br />

vectorii unitari , u θ<br />

, u tangenţi curbelor în punctul con<strong>si</strong><strong>de</strong>rat.<br />

u r<br />

ϕ<br />

Aceşti vectori sunt <strong>de</strong>terminaţi în toate punctele care nu aparţin axei Oz şi<br />

sunt ortogonali, doi câte doi.<br />

r r r<br />

Triedrul , u θ<br />

, u poate fi con<strong>si</strong><strong>de</strong>rat triedru <strong>de</strong> referinţă şi <strong>de</strong>pin<strong>de</strong> <strong>de</strong><br />

u r<br />

ϕ<br />

punct.<br />

Între coordonatele sferice şi coordonatele carteziene avem relaţiile:<br />

⎧x<br />

= r ⋅ <strong>si</strong>nθ<br />

⋅ cosϕ<br />

⎪<br />

⎨ y = r ⋅ <strong>si</strong>nθ<br />

⋅ <strong>si</strong>nϕ<br />

⎪<br />

⎩ z = r ⋅ cosθ<br />

cu r ≥ 0 , 0 ≤θ < π , 0 ≤ ϕ < 2π<br />

.<br />

Funcţia Matlab care realizează această transformare, din coordonate sferice<br />

θ


Funcţii matematice în Matlab 203<br />

în coordonate carteziene este sph2cart, apelată cu,<br />

[X,Y,Z] = sph2cart(TH,PHI,R),<br />

în care TH este unghiul ϕ , respectiv azimutul, PSI este unghiul θ , respectiv<br />

elevaţia, R este raza r , iar X, Y, Z sunt coordonatele carteziene. Matricele TH,<br />

PHI şi R trebuie să aibă aceeaşi dimen<strong>si</strong>une (sau oricare să fie scalar), iar TH şi PSI<br />

sunt daţi în radiani.<br />

Fig. 8.10.<br />

De exemplu, dacă TH=pi/6, PHI= pi/4, R=2, atunci prin [X,Y,Z] =<br />

sph2cart(TH,PHI,R), se obţine X= 1.2247, Y = 0.7071, Z = 1.4142.<br />

Transformarea inversă, din coordonate carteziene în coordonate sferice, se<br />

realizează cu relaţiile:<br />

⎧<br />

⎪<br />

⎪<br />

2 2 2<br />

r = x + y + z<br />

⎪<br />

⎛ y ⎞<br />

⎨ ϕ = arctan⎜<br />

⎟<br />

⎪<br />

⎝ x ⎠<br />

⎪ ⎛ ⎞<br />

⎪ = ⎜ z<br />

θ arctan ⎟<br />

⎪ ⎜ 2 2 ⎟<br />

⎩ ⎝ x + y ⎠<br />

cu r ≥ 0 , 0 ≤θ < π , 0 ≤ ϕ < 2π<br />

.


204<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Funcţia Matlab care realizează transformarea coordonatelor carteziene, în<br />

coordonate sferice, este cart2sph, apelată sub forma,<br />

[TH,PHI,R] = cart2sph(X,Y,Z),<br />

în care X, Y, Z sunt coordonatele carteziene, TH este unghiul ϕ , respectiv<br />

azimutul, PSI este unghiul θ , respectiv elevaţia, R este raza r . Matricele X, Y, Z<br />

trebuie să aibă aceeaşi dimen<strong>si</strong>une (sau oricare să fie scalar), iar TH şi PSI sunt<br />

returnaţi în radiani.<br />

De exemplu, dacă X= 1.2247, Y = 0.7071, Z = 1.4142, atunci prin<br />

[TH,PHI,R] = cart2sph(X,Y,Z) se obţine TH = 0.5236 = pi/6, PHI = 0.7854 = pi/4,<br />

R = 2.0000.<br />

8.9. Calculul produsului unor vectori<br />

Produsul scalar al vectorilor a şi b este numărul obţinut înmulţind produsul<br />

modulelor lor cu co<strong>si</strong>nusul unghiului format <strong>de</strong> cei doi vectori (vezi figura 8.11),<br />

a ⋅b<br />

= a ⋅b<br />

⋅ cosθ .<br />

Cel mai tipic exemplu <strong>de</strong> produs scalar a doi vectori este lucrul mecanic<br />

produs <strong>de</strong> o forţă constantă F = b , când punctul său <strong>de</strong> aplicaţie se <strong>de</strong>plasează <strong>de</strong><br />

la O la A. Dacă se <strong>de</strong>scompune F după direcţia OA şi perpendiculara pe această<br />

direcţie, componenta normală dă un lucru mecanic nul. Întreg lucrul mecanic al<br />

forţei F este dat <strong>de</strong> componenta după direcţia OA, componentă ce are expre<strong>si</strong>a,<br />

F ⋅cosθ = b ⋅cosθ<br />

. Lucrul mecanic va fi produsul dintre această componentă şi<br />

π<br />

<strong>de</strong>plasarea a=OA. Dacă θ < , lucrul mecanic este activ şi se exprimă printr-un<br />

2<br />

π<br />

număr strict pozitiv, iar dacă θ > , lucrul mecanic este rezistent şi se exprimă<br />

2<br />

printr-un număr negativ.<br />

Principalele proprietăţi ale produsului scalar sunt:<br />

• a ⋅ b = b ⋅ a - este comutativ;<br />

• ( λ ⋅ a) ⋅b<br />

= λ ⋅( a ⋅b)<br />

• ( a b) ⋅ c = a ⋅ c + b ⋅c<br />

, în care λ este un scalar oarecare;<br />

+ - este distributivă faţă <strong>de</strong> adunare;<br />

2 ≥<br />

• a ⋅ a = a 0 , egalitatea având loc numai dacă a=0;<br />

• a ⋅b<br />

≤ a ⋅b<br />

- modulul unui produs scalar este mai mic sau egal cu produsul<br />

modulelor;<br />

• dacă produsul scalar a doi vectori este nul, atunci vectorii nenuli sunt<br />

perpendiculari.<br />

Con<strong>si</strong><strong>de</strong>răm vectorii a şi b , figura 8.11, exprimaţi într-un <strong>si</strong>stem <strong>de</strong>


Funcţii matematice în Matlab 205<br />

coordonate carteziene, având ca bază vectorii i , j , k , unitari şi ortogonali, adică:<br />

i ⋅i<br />

= j ⋅ j = k ⋅ k = 1 , i ⋅ j = j ⋅ k = k ⋅i<br />

= 0 .<br />

Fig. 8.11.<br />

Ţinând seama <strong>de</strong> cele <strong>de</strong> mai sus, vectorii a şi b vor avea expre<strong>si</strong>ile:<br />

a = a1 ⋅i<br />

+ a2<br />

⋅ j + a3<br />

⋅ k , b = b1<br />

⋅i<br />

+ b2<br />

⋅ j + b3<br />

⋅ k .<br />

Înmulţind scalar aceste sume şi ţinând seama <strong>de</strong> cele anterioare, se obţine:<br />

a ⋅ b = a ⋅b<br />

+ a ⋅b<br />

+ a ⋅ .<br />

Pentru<br />

1 1 2 2 3 b3<br />

b = a , avem :<br />

2<br />

2<br />

1<br />

2<br />

2<br />

2<br />

3<br />

a ⋅ a = a = a + a + a ⇒ a = a + a + a .<br />

2<br />

1<br />

Expre<strong>si</strong>a care dă unghiul a doi vectori este:<br />

a1<br />

⋅b1<br />

+ a2<br />

⋅b2<br />

+ a3<br />

⋅b3<br />

cosθ<br />

=<br />

2 2 2 2 2 2<br />

a + a + a ⋅ b + b + b<br />

1<br />

2<br />

3<br />

1<br />

2<br />

Calculul produsului scalar a doi vectori A şi B, care trebuie să aibă aceeaşi<br />

lungime, se face cu instrucţiunea C = dot(A,B,DIM) sau C = dot(A,B), în care<br />

lipseşte dimen<strong>si</strong>unea DIM. Dacă DIM=<strong>si</strong>ze(A), în vectorul C se întoarce produsul<br />

element cu element dintre A şi B; dacă DIM =1, în vectorul C se întoarce suma<br />

produsului element cu element <strong>de</strong> pe fiecare coloană, iar dacă DIM =2, se întorce<br />

suma produsului element cu element <strong>de</strong> pe fiecare linie.<br />

Dacă A şi B sunt vectori coloană, atunci dot(A,B) este acelaşi lucru ca şi<br />

sum(A.*B).<br />

De exemplu, dacă:<br />

A = [ 1 2 3 B = [ 7 8 9<br />

4 5 6] 10 11 12 ]<br />

atunci, C=dot(A,B,3), este:<br />

⎡ 7 16 27⎤<br />

⎡ 1* 7 2 *8 3*9 ⎤<br />

C = ⎢ ⎥ ⇔ C = ⎢<br />

⎥<br />

⎣40<br />

55 72⎦<br />

⎣4 *10 5*11 6 *12⎦<br />

C=dot(A,B,1) este,<br />

C = 47 71 99 ⇔ C = 7 + 40 16 + 55 27 + 72 ,<br />

[ ] [ ]<br />

3<br />

2<br />

2<br />

2<br />

3


206<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

iar C=dot(A,B,2) este:<br />

⎡ 50 ⎤ ⎡ 7 + 16 + 27 ⎤<br />

C = ⎢ ⎥ ⇔ C = ⎢ ⎥ .<br />

⎣167⎦<br />

⎣40<br />

+ 55 + 72⎦<br />

Dacă A este <strong>de</strong> dimen<strong>si</strong>unea 1 x N, iar B <strong>de</strong> dimen<strong>si</strong>unea N x 1, atunci<br />

produsul scalar poate fi calculat şi prin relaţia sum(A’.*B) sau sum(A.*B’).<br />

Con<strong>si</strong><strong>de</strong>rând vectorii,<br />

a = 3⋅i<br />

− 4⋅<br />

j + 0⋅<br />

k , b = 1⋅i<br />

+ 2⋅<br />

j − 2⋅<br />

k ,<br />

atunci produsul scalar este<br />

ab=dot(a,b)=sum(a.*b)=-5,<br />

iar unghiul dintre aceşti vectori este,<br />

alfa=acos(ab/(norm(a)*norm(b)))*180/pi = 109.4712 gra<strong>de</strong><br />

şi în care,<br />

norm(a)= sqrt(sum(a.^2)); norm(b)= sqrt(sum(b.^2)).<br />

Con<strong>si</strong><strong>de</strong>rând vectorii a şi b într-un <strong>si</strong>stem cartezian, având expre<strong>si</strong>ile<br />

anterioare, produsul vectorial al acestora este un vector c , perpendicular pe planul<br />

format <strong>de</strong> cei doi vectori, având expre<strong>si</strong>a:<br />

i<br />

j<br />

k<br />

( a b − a b ) ⋅i<br />

+ ( a b − a b ) ⋅ j + ( a b − a b ) ⋅ k<br />

c = a × b = a a2<br />

a3<br />

= 2 3 3 2 3 1 1 3 1 3 2 1<br />

b b b<br />

1 .<br />

1<br />

2<br />

3<br />

Se observă că acest <strong>de</strong>terminant se <strong>de</strong>zvoltă întot<strong>de</strong>auna după prima linie şi<br />

nu are proprietăţile <strong>de</strong>terminanţilor obişnuiţi.<br />

În Matlab, produsul vectorial este dat <strong>de</strong> funcţia cross(a,b).<br />

Sensul vectorului c este <strong>de</strong>terminat <strong>de</strong> sensul trigonometric <strong>de</strong> aducere a<br />

vectorului a spre vectorul b , sau, în general, <strong>de</strong> parcurgere a curbei închise<br />

generată <strong>de</strong> cei doi vectori.<br />

Modulul produsului vectorial este egal cu aria paralelogramului <strong>de</strong>terminat<br />

<strong>de</strong> cei doi vectori, (vezi şi figura 8.12), sau în general cu aria suprafeţei <strong>de</strong>limitate:<br />

c = a × b = a ⋅b<br />

⋅<strong>si</strong>nθ<br />

Utilitatea produsului vectorial rezidă în aceea că <strong>de</strong>termină <strong>de</strong>bitul <strong>de</strong> fluid<br />

ce trece printr-o suprafaţă, <strong>de</strong>limitată <strong>de</strong> vectorii a şi b , în unitatea <strong>de</strong> timp.<br />

Produsul vectorial are următoarele proprietăţi:<br />

• a × b = −b<br />

× a - este anticomutativ;<br />

• ( λ ⋅ a ) × b = λ ⋅ ( a × b)<br />

• ( a b) × c = a × c + b×<br />

c<br />

, în care λ este un scalar oarecare;<br />

+ - este distributiv faţă <strong>de</strong> adunare;<br />

• produsul vectorial a doi vectori colineari este nul, <strong>de</strong>oarece <strong>si</strong>n θ = 0 ;


Funcţii matematice în Matlab 207<br />

• a × b ≤ a ⋅b<br />

- modulul unui produs scalar este mai mic sau egal cu<br />

produsul modulelor.<br />

Fig. 8.12.<br />

Produsul încrucişat, dintre vectorii A şi B, se calculează cu instrucţiunea<br />

C=cross(A,B), dar vectorii A şi B trebuie să aibă cel puţin 3 elemente, în direcţia<br />

produsului încrucişat.<br />

Dacă A=[1 2 3; 4 5 6; 7 8 9], B=[10 11 12; 13 14 15; 16 17 18], atunci<br />

C=cross(A,B) conduce la C= [-27 -27 -27; 54 54 54; -27 -27 -27].<br />

Con<strong>si</strong><strong>de</strong>rând vectorii,<br />

a = 5⋅i<br />

− 3⋅<br />

j −1⋅<br />

k , b = −1⋅i<br />

−1⋅<br />

j − 2⋅<br />

k ,<br />

atunci produsul vectorial este<br />

c=cross(a,b)=[ 5 11 -8],<br />

iar unghiul dintre aceşti vectori este<br />

alfa=a<strong>si</strong>n(c/(norm(a)*norm(b)))*180/pi = [20.1838 49.3825 -33.5079] gra<strong>de</strong>.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!