Documente Academic
Documente Profesional
Documente Cultură
ans =
0 + 1.5708i -0.0000 + 1.0472i 0,
atanh(x) se obţine,
ans =
0 0.5493 Inf.
Pentru argumente numere complexe de forma z=x+iy, relaţiile de calcul
sunt:
sin(z) = sin(x)*cosh(y) + i*cos(x)*sinh(y);
cos(z) = cos(x)*cosh(y) - i*sin(x)*sinh(y);
tan(z) = sin(z)/cos(z);
cot(z) = cos(z)/sin(z).
11.5i], atunci:
fix(V) este [ 0 -7 -2-2i 0 0 2+3i 11i ];
floor(V) este [ -1 -8 -3-3i 0 0 2+3i 11i ];
ceil(V) este [ 0 -7 -2-2i 1 1 3+4i 12i ];
round(V) este [ 0 -7 -2-3i 0 1 3+3i 12i ].
Pentru aproximarea numerelor reale cu fracţii continue se utilizează
funcţia rat, apelată cu una dintre sintaxele,
[N,D] = rat(x), [N,D] = rat(x,tol),
unde: x este numărul care trebuie aproximat cu fracţii continue ; tol este toleranţa
care se acceptă între numărul x dat şi numărul y (aproximat), astfel încât
y − x ≤ tol , având valoarea implicită, tol=10-6; N, D sunt numărătorul, respectiv
numitorul fracţiei, care aproximează pe x cu toleranţă tol, astfel încât abs(N./D - X)
<= tol*abs(X); y este exprimarea lui x ca fracţie continuă.
Numărul y, rezultat prin funcţia rat, aproximează fiecare element al
1
vectorului x cu un număr de forma: y = d 0 + . De menţionat că
1
d1 +
1
d 2 + ... +
dk
acelaşi algoritm se utilizează şi la apelarea instrucţiunii interne format rat.
Dacă, de exemplu, x = [0.25 1.35 –3.455 1.3456], atunci rat(x) este
ans =
0 + 1/(4)
1 + 1/(3 + 1/(-7))
-3 + 1/(-2 + 1/(-5 + 1/(-18)))
1 + 1/(3 + 1/(-9 + 1/(-3 + 1/(2 + 1/(4))))),
1 1 1
astfel încât: 0.25 = 0 +, 1.35 = 1 + , - 3.455 = −3 + ,
4 1 1
3+ -2+
-7 1
-5+
− 18
1
1.3456 = 1 + , approximate cu toleranţa implicită 10-6.
1
3+
1
-9 +
1
−3+
1
2+
4
Aproximarea numerelor reale cu numere raţionale se realizează prin
apelarea funcţiei rats, cu sintaxa rats(x), utilizată şi în format rat. Pentru aceleaşi
valori ale lui x, ca mai sus, se obţine:
176 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
ans =
1/4 27/20 -691/200 841/625.
Funcţia mod(x,y) calculează modulus (restul cu semn după împăţirea dintre
x şi y), astfel că mod(x,y) = x - y.*floor(x./y) dacă y ~= 0, iar prin convenţie,
mod(x,0) este x. Intrările x şi y trebuie să fie matrice reale de aceeaşi dimensiune,
sau una trebuie să fie scalar.
Funcţia rem(x,y) calculează restul împărţirii lui x la y, element cu element,
astfel că mod(x,y) = x - y.*fix(x./y) dacă y ~= 0, iar prin convenţie, rem(x,0) este
NaN. Intrările x şi y trebuie să fie matrice reale de aceeaşi dimensiune sau una
trebuie să fie scalar.
Dacă se calculează restul împărţirii vectorului x=[1 3 -6], la y=[2 3 4], cu
z=rem(z,y), se ob=[2 3 4], cu z=rem(z,y), se obţine
z=[ 1 0 -2]
Funcţia mod(x,y) are acelaşi semn cu y, atunci când rem(x,y) are semnul lui
x. Cele două funcţii mod(x,y) şi rem(x,y) sunt egale dacă x şi y au acelaşi semn,
dar diferă dacă y sau x au semne diferite. Dacă X=[1.5 9 -4.5] şi Y=[-0.5 -3 4],
atunci mod(X,Y) este [ 0 0 3.5], iar rem(X,Y) este [0 0 -0.5], dar mod(Y,X)
este [1 6 -0.5], iar rem(Y,X) este [-0.5 -3 4]. Considerând X1=[2.5 6 –7] şi
Y1=3, atunci rem(X1,Y1) este [2.5 0 -1], iar rem(Y1,X1) este [0.5 3 3], pe
când mod(X1,Y1) este [2.5 0 2], iar mod(Y1,X1) este [0.5 3 -4].
Funcţia sign(x) asociază fiecărui element al vectorului x elementele –1, 0, 1,
1, x > 0
după următoarea regulă: sign(x ) = 0, x = 0 . Dacă x este complex, atunci
- 1 x < 0
sign(x)=x./abs(x).
1 x ⋅ ( x + 1) ⋅ ( x + 2 )K ( x + n )
• prin limita şirului = lim .
Γ( x ) n → ∞ n!⋅n x
Principalele proprietăţi ale funcţiei Gamma sunt:
• dacă argumentul x este un întreg, atunci funcţia Gamma este identică cu
funcţia factorial, respectiv n!= Γ(n + 1) ;
• pentru orice z finit, este satisfăcută relaţia de recurenţă Γ( x + 1) = xΓ( x ) ;
• cunoscând valoarea pentru x > 1, valorile pentru x < 1 se determină din
π π ⋅x
ecuaţia complementelor Γ(1 − x ) = = ;
Γ( x )sin (π ⋅ x ) Γ( x + 1)sin (π ⋅ x )
1 1
• pentru x = funcţia Γ = π .
2 2
În Matlab, funcţia Gamma se apelează cu sintaxa y=gamma(x), unde x este
argumentul iar y este valoarea calculată. Pentru x=2.5 se obţine 1.3293, iar pentru
x=–0.5 se obţine -3.5449.
Pentru x>0 se poate calcula logaritmul natural al funcţiei Gamma cu
instrucţiunea gammaln(x), care corespunde lui log(gamma(x)), însă calculul se
face printr-o metodă directă, fără a calcula gamma(x).
Funcţia Gamma incompletă, gammainc(x,a), este definită de relaţia,
x
1
P ( x, a ) = ∫
Γ( a ) 0
e −t t a−1dt , a > 0, a ∈ ℜ + x ∈ ℜ ,
şi are limitele,
Q(0, a ) = 1, P(∞, a) = 0 .
Funcţii matematice în Matlab 179
Fig. 8.1. Funcţia Gamma incompletă pentru diverse valori ale lui a şi x
1 0
180 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
x p (1 − x ) B( p + 1, n + 1) n+1
x q
1 ∞
∑ B( p + q, n + 1) x
q −1
B( p, q) ∫0
B inc ( x, p, q ) = t p −1
(1 − t ) dt = 1 +
pB( p, q ) n =0
cu,
p, q > 0, p,q ∈ ℜ + x ∈ [0,1]
şi limitele:
B inc (0, p, q ) = 0 , B (∞, p, q) = 1 .
inc
Fig. 8.2. Funcţia Beta incompletă pentru diverse valori ale lui p, q şi x
olomorfie (x)-T, unde T este o semidreaptă cu originea în x=0, este dată de relaţia
ν +2 p
x
∞
Jν ( x) = ∑ (− 1)
p 2 .
p =0 p!Γ(ν + p + 1)
Între funcţiile Bessel cu indici de semne contrare, Jν şi J-ν, există relaţia
J −ν ( x) = (− 1) Jν ( x) .
n
În Matlab, funcţia Bessel de speţa întâi şi ordinul niu (ν) real, pozitiv şi
argumentul x se calculează cu instrucţiunea J=besselj(niu,x). Dacă x şi niu sunt
vectori de dimensiunile m şi respectiv n, atunci J va fi o matrice cu dimensiunea
mxn, în care elementul din poziţia (j,k) este dat de J(j,k)=besselj(niu(j),x(k)), cu
j=1,…,m<=1000, iar k=1,…,n.
O variantă veche de apelare a funcţiei Bessel de speţa întâi şi ordinul niu (ν)
real, pozitiv şi argumentul x era bessela(niu,x).
Funcţiile Bessel de prima speţă (numite de multe ori de primul sau întâiul
ordin) şi speţa a doua (numite şi de ordinul doi) sunt asemănătoare cu funcţiile
trigonometrice şi, de fapt, funcţia Jν(x) corespunde lui cos(x) şi funcţia Yν(x)
corespunde lui sin(x). Aceasta sugerează deci să se definească pentru funcţiile
cilindrice, funcţii care sunt legate de Jν şi Yν în acelaşi mod cum funcţiile
exponenţiale sunt legate de cele trigonometrice, adică
H ν(1) ( x) = Jν ( x) + iYν ( x ), Hν(2 ) ( x) = Jν ( x) − iYν ( x ),
unde i este unitatea imaginară.
Funcţiile Hν(1) ( x ), Hν( 2 ) ( x) se numesc funcţiile lui Bessel de speţa a treia
(sau de ordinul trei) sau funcţiile lui Hankel. Acestea sunt cunoscute ca funcţiile
Hankel de speţa întâi , Hν(1) ( x ) , respectiv de speţa a doua, Hν(2 ) ( x ) .
Dacă ν ≠ n întreg, atunci
Jν ( x )e − iνπ − J −ν ( x ) J ( x )e iνπ − J −ν ( x )
Hν(1) ( x) = i , H ν( 2 ) ( x ) = −i ν .
sin νπ sinνπ
Schimbând pe ν în − ν , rezultă evident,
H −(1ν) ( x) = e iνπ Hν(1) ( x) , H −(ν2 ) ( x) = e − iνπ Hν(2 ) ( x) .
184 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
În Matlab, funcţiile Bessel de ordinul trei sau funcţiile lui Hankel sunt
calculate cu instrucţiunea H=besselh(niu,k,z), unde niu este ordinul, k este ordinul
sau speţa (k=1 pentru speţa întâi şi k=2 pentru speţa a doua), iar x ordonatele
punctelor unde se evaluază funcţia Hankel.
Valorile funcţiilor Bessel pentru valori foarte mici ale argumentului (|x|<<1)
sunt:
2 4
x 1 x xn
J 0 (x ) ≈ 1 − + ≅ 1 ; J n (x ) ≈ n ;
2 4 2 2 Π (n )
2 x 1 1 1
Y0 ( x ) ≈ ln + ln γ ; lnγ = lim1 + + + ... + − ln n = 0.57722;
π 2 n →∞
2 3 n
2 n (n − 1)!
Yn ( x ) ≈ − , n∈ N, n > 0,
x nπ
în care lnγ este constanta Euler-Mascheroni.
Comportarea funcţiilor Bessel pentru valori foarte mari ale argumentului
( x → ∞ ) este dată de formulele asimtotice:
2 π π
J n (x ) ≈ cos x − − n , |x|≅1;
xπ 4 2
2 π π
Yn ( x ) ≈ sin x − − n , |x|≅1;
xπ 4 2
π π π π
2 j x − 4 − n 2 2 − j x − 4 − n 2
H n1 ( x ) ≈ e , H n2 ( x ) ≈ e , |x|≅1.
xπ xπ
Pentru funcţiile lui Bessel sunt valabile următoarele formule de recurenţă:
2n 2n
J n+1 ( x ) = J n ( x ) − J n−1 ( x ), Yn+1 ( x ) = Yn ( x ) − Yn−1 ( x ) ,
x x
d n n
J n ( x ) = J n′ ( x ) = J n ( x ) − J n+1 ( x ) = J n−1 ( x ) − J n ( x ) , J 0′ ( x ) = − J 1 ( x ) ,
dx x x
d n n
Yn ( x ) = Yn′( x ) = Yn ( x ) − Yn+1 ( x ) = Yn−1 ( x ) − Yn ( x ) , Y0′( x ) = −Y1 ( x ) ,
dx x x
1 1 2
J 1 ( x ) = ∫ xJ 0 ( x )dx , Y1 ( x ) = ∫ xY0 ( x )dx , J 02 ( x ) + J 12 ( x ) = 2 ∫ xJ 02 ( x )dx ,
x x x
n(n − 1)
2
d 1
2
J n ( x ) = J n′′( x ) = 2
− 1 J n ( x ) + J n+1 ( x ) ,
dx x x
Funcţii matematice în Matlab 185
d2 n(n − 1) 1
Y ( x ) = Yn′′( x ) =
2 n 2
− 1Yn ( x ) + Yn+1 ( x ) .
dx x x
Dacă ordinul funcţiei Bessel este un multiplu impar al lui 1/2, atunci funcţia
Bessel de prima speţă (ordinul întâi) poate fi exprimată, sub formă compactă, cu
ajutorul funcţiilor trigonometrice elementare şi al puterilor negative, întregi şi
fracţionale, ale lui x,
2 2
J 1 (x ) = sin x, J 1 ( x ) = cos x,
2
xπ −
2
xπ
2 1 2 1
J 3 (x ) = sin x − cos x , J 3 ( x ) = − sin x + cos x ,
2
xπ x −
2
xπ 2
2 1 1 1 1
J 1 (x ) = An x sin x + Bn x cos x , n întreg, iar An , Bn sunt
n+
2
xπ x x
1
polinoame în de grad cel mult n.
x
∫
0
x J n (ξ i x ) x J n (ξ k x )dx = ∫ xJ n (ξ i x ) J n (ξ k x )dx = 0, i ≠ k .
0
Coeficienţii dezvoltării în serie
f ( x ) = a1 J n (ξ1 x ) + a2 J n (ξ 2 x ) + ... + an J n (ξ n x ) + ...
îi putem obţine prin înmulţirea ambilor membrii cu funcţia xJ n (ξν x ) , integrând de
la 0 la 1 şi ţinând seama de relaţia de ortogonalitate,
1
d 2 y ( x) 1 dy ( x) n 2
+ + 1 − 2 y ( x) = 0 ⇔
dx 2 x dx x
d 2 y ( x) dy ( x) d d
x2
dx 2
+x
dx
( )
+ x 2 − n 2 y ( x) = 0 ⇔ x x + x 2 − n 2 y ( x) = 0
dx dx
( )
ci, în general, trebuie să rezolvăm ecuaţii diferenţiale de forma:
d 2 y ( x) 1 dy ( x) n2
+ + k − 2 y ( x) = 0 ,
dx 2 x dx x
care, cu schimbarea de variabilă z = kx ,se reduce la forma canonică.
Soluţia generală a ecuaţiei anterioare se poate scrie sub forma
y = C1 J n (kx) + C 2 J −n (kx) sau y = C1 J n (kx) + C 2Yn (kx) , care, pentru n şi x ,iau
valori complexe.
Pentru cazul paricular k 2 = −1 , ecuaţia anterioară devine
d 2 y ( x) 1 dy ( x) n2
+ +
− 1 − y ( x) = 0 ,
dx 2 x dx x 2
având soluţia generală de forma,
y = C1I n ( x) + C2 K n ( x) ,
unde I n (x ) este funcţia Bessel modificată de speţa întâi, iar K n ( x ) este funcţia
Bessel modificată de speţa a doua.
Aceste funcţii modificate sunt echivalentele funcţiilor Bessel J n ( x ) şi
Yn ( x) , care diferă printr-un factor constant şi sunt date de expresiile,
I n ( x) = i − n J n (ix ) ≡ (− i ) J n (ix ),
n
π π
K n ( x) = i n+1 [J n (ix ) + iYn (ix )] = [I −n (x ) − I n (x )] ,
2 2 sin nπ
fiind denumite, din această cauză şi funcţiile Bessel de argument pur imaginar.
În Matlab, aceste funcţii sunt calculate cu formula bi=besseli(n,x) şi
bk=besselk(n,x), unde n este ordinul, iar x este argumentul pur imaginar.
Pentru x pur imaginar, având valorile modulului x=[0:0.1:4], se reprezintă în
figura 8.4, funcţiile Bessel modificate de speţa întâi (I) şi a doua (K), de ordinul
n=0,1,2, calculate cu secvenţele Matlab:
x =[0:0.001:3.5]; I_0=besseli(0,x); I_1=besseli(1,x); I_2=besseli(2,x);
x1=[0.01:0.001:3.5]; K_0=besselk(0,x1);
x2=[0.125:0.001:3.5]; K_1=besselk(1,x2);
x3=[0.5:0.001:3.5]; K_2=besselk(2,x3);
plot(x,I_0,x,I_1,'-.',x,I_2,'--',x1,K_0,x2,K_1,'-.',x3,K_2,'--').
188 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
I1 ( x ) 1 K1 ( x ) 1
≈ 1− , ≈ 1+ , |x|≅1.
I 0 (x ) 2 x K 0 (x ) 2x
Pentru funcţiile Bessel modificate, sunt valabile următoarele formule de
recurenţă:
2n 2n
I n+1 ( x ) = − I n ( x ) + J n−1 ( x ), K n+1 ( x ) = K n ( x ) + K n−1 ( x ) , K 0′ ( x ) = − K1 ( x ) ,
x x
d 1 1
I 0 ( x ) = I 0′ ( x ) = I1 ( x ) , I1 ( x ) = ∫ xI 0 ( x )dx , K1 ( x ) = ∫ xK 0 ( x )dx .
dx x x
Verificarea argumentelor funcţiilor Bessel se face cu besschk, apelată sub
forma [MSG,n,x,SIZ] = besschk(n,x), în care în MSG se întoarce un mesaj
referitor la n şi x, specificând dacă sunt numere şi dacă sunt reale, iar în SIZ se
specifică dacă au aceeaşi dimensiune, concomitent cu un mesaj dacă nu au.
π
i
ixe 4 ), a căror valoare este în general complexă.
Pentru aceste funcţii, cu aplicaţii practice deosebite în electrotehnică, se
folosesc notaţiile introduse de W. Thomson (lord Kelvin):
i π4 iπ4
ber ( x) + ibei( x) = J 0 ixe = I 0 xe ,
i
3π
i π4
ker ( x) + ikei( x) = K 0 − ixe = K 0 xe .
4
i π4 ∞ p 1 x 2 p
Ţinând seama de I n ( x) = i J n (ix ), avem I 0 xe = ∑ i
−n
p=0 ( p!)2 2 ,
astfel că:
4 8
32 12 1 x 1 x
ber ( x) = Re J 0 i x = Re J 0 i x ≈ 1 − + − ... ,
(2!)2 2 (4!)2 2
2 6 10
32 12 1 x 1 x 1 x
bei( x) = Im J 0 i x = − Im J 0 i x ≈ 2 − 2 + 2 − ...
(1!) 2 (3!) 2 (5!) 2
Curbele funcţiilor ber(x) şi bei(x) sunt prezentate în figura 8.5 şi sunt
190 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
±i 34π
her ( x) + ihei( x) = Hν xe
(1)
.
x
2 2
erfc(x) = ⋅ ∫ e −t dt = 1 − erf(x )
π 0
2
în care P ( x ,0.5) este funcţia Gamma incompletă, iar argumentul x trebuie să fie
real şi x ≥ 0.
Funcţia eroare şi complementara acesteia au limitele,
erf(0) = 0 , erf(∞) = 1 , erfc(0) = 1 , erfc(∞) = 0 ,
şi respectă relaţiile de simetrie :
erf(-x) = −erf(-x) , erfc(-x) = 2 − erfc(x) .
Calculul valorii funcţiei eroare genaralizate, pentru x şi y scalar, vector sau
matrice se face cu relaţia:
y
2 2
erf(x) = ⋅ ∫ e −t dt = erf(y) − erf(x ) .
π x
Polinoamele lui Legendre sau funcţiile lui Legendre de prima speţă sunt
funcţii sferice superficiale, care satisfac ecuaţia lui Laplace. Acestea sunt
polinoame de gradul n în x = cos α , conţinând numai puteri pare sau impare, după
cum n este par sau impar, iar semnele termenilor săi alternează:
n
E
2
1 ⋅ 3 ⋅ 5L(2n − 2k − 1) n − 2 k
Pn (cos α ) = Pn ( x ) = ∑ (− 1)
k =0
k
⋅ Cnk− k ⋅
2 k (n − k )!
⋅x ,
n n
în care E este partea întreagă a numărului
.
2 2
De remarcat că, pentru α real, x ∈ [− 1, 1 ] .
Principalele proprietăţi ale polinoamelor lui Legendre sunt:
• pot fi exprimate prin formula Olinde-Rodrigues,
1 dn
Pn ( x ) =
2 n! d x
n n
( n
x2 − 1 , )
sau formula lui Schlafli, ca o integrală pe o curbă oarecare, C, închisă cu x,
un punct interior domeniului mărginit de C,
1 1 ζ 2 −1 ( )n
2 2π ⋅ i ∫C (ζ − x )n+1
Pn ( x ) = n ⋅ dζ ,
1 0 pentru k ≠ n
∫−1 Pk (x ) ⋅ Pn (x ) ⋅ dx = 2 pentru k = n ,
2n + 1
ceea ce permite să considerăm seria Fourier a unei funcţii f(x), integrabilă
şi cu pătratul integrabil pe [− 1, 1 ] , faţă de sistemul de funcţii format de
∞
polinoamele Legendre, ∑ a n ⋅ Pn ( x ) cu coeficienţii Fourier generalizaţi
n=0
1
2n + 1
an =
2 ∫ f ( x ) ⋅ P (x ) ⋅ d x
−1
n
x +1
Funcţiile Qn ( x ) = Pn ( x ) ⋅ ln + K n−1 ( x ) se numesc funcţiile lui
x −1
Legendre de speţa a doua. Aceste funcţii verifică, evident, ecuaţia lui Legendre şi
satisfac aceleaşi relaţii de recurenţă ca polinoamele lui Legendre.
m
d m Pn ( x ) ,
m
(
Pn , m ( x ) = (− 1 ) ⋅ 1 − x 2 )
2
dx m
în care n este gradul, iar m este ordinul.
• setul de instrucţiuni
X = rand(2,4,5); N = 2;
P = legendre(N,X);
returnează o matrice de 3*2*4*5 şi P(:,1,2,3) este la fel ca şi cel dat de
instrucţiunea legendre(N,X(1,2,3)).
P2
0.5
0
y
-0.5
P1
-1
-1.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
z=-10:0.1:10; f=1./sqrt(2*pi)*exp(-z.^2/2);
plot(z,f); grid on; xlabel('z'); ylabel('f(z)').
Calculul funcţiei de repartiţie Laplace,
∞ ∞
1 2
f (z ) = ∫ f ( z )dz = ⋅ e − t dt
∫
−∞ 2 ⋅π −∞
foloseşte secvenţa,
F=trapz(z,1./(sqrt(2*pi))*exp(-z.^2/2))
care, pentru valorile anterioare, rezultă F=1. Limita de integrare, ∞ , se poate lua
un număr între -5 şi -10, fără ca, prin aceasta, să se inducă erori semnificative.
Fig. 8.8.
În coordonate cilindrice, poziţia unui punct P este caracterizată prin
ρ , ϕ , z , unde ρ este distanţa de la origine la proiecţia P ' a punctului P, pe planul
xOy , ϕ este unghiul format de OP ' cu axa Ox , iar z cota lui P faţă de planul
xOy .
Punctul P0 ( ρ 0 ,ϕ 0 , z 0 ) este intersecţia următoarelor suprafeţe: cilindru
ρ = ρ 0 , semiplanul ϕ = ϕ 0 şi planul z = z 0 (vezi figura 8.9).
Intersecţiile acestor suprafeţe, luate câte două, sunt: semidreapta Cρ , pe care
variază numai ρ , cercul Cϕ , pe care variază numai ϕ şi dreapta C z , pe care
variază numai z.
r r r
Notăm cu u ρ , uϕ , u z vectorii unitari tangenţi la aceste curbe, în P0 şi dirijaţi
în sensul crescător al variabilelor respective. Aceşti vectori sunt determinaţi în
r r
toate punctele din spaţiu, cu excepţia axei Oz , în care u ρ , uϕ au direcţii
Funcţii matematice în Matlab 201
nedeterminate.
r r r
Fiind ortogonali, doi câte doi, u ρ , uϕ , u z formează un triedru nedegenerat,
de referinţă pentru orice punct, variabil cu punctul în care este considerat.
Fig. 8.9.
Între coordonatele cilindrice şi coordonatele carteziene avem relaţiile:
x = ρ ⋅ cos ϕ
y = ρ ⋅ sin ϕ
z=z
cu ρ ≥ 0, 0 ≤ ϕ < 2π .
Funcţia Matlab care realizează această transformare, din coordonate
cilindrice în coordonate carteziene, este pol2cart. Aceasta poate fi apelată prin:
[X,Y,Z] = pol2cart(TH,R,Z)
în care TH este unghiul ϕ , R este raza ρ , iar Z este înălţimea z, iar X, Y, Z sunt
coordonatele carteziene. Matricele TH, R şi Z trebuie să aibă aceeaşi dimensiune
(sau oricare să fie scalar);TH este dat în radiani.
De exemplu, dacă coordonatele punctului sunt TH=pi/6, R=2 şi Z=3, atunci:
[X,Y,Z] = pol2cart(TH,R,Z),
conduce la X = 1.7321, Y = 1.0000, Z = 3.
Pentru plan, transformarea coordonatelor polare în carteziene se face cu
instrucţiunea [X,Y] = pol2cart(TH,R), din care lipseşte Z. Coordonata Z nu suferă
nici o transformare la trecerea dintr-un sistem de coordonate în altul.
Transformarea inversă, din coordonate carteziene în coordonate polare se
face după relaţiile:
202 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
ρ = x2 + y 2
y
ϕ = arctan
x
z=z
y
cu ρ ≥ 0, - π ≤ arctan < π .
x
Funcţia Matlab care realizează această transformare este cart2pol, care
poate fi apelată prin instrucţiunea:
[TH,R,Z] = cart2pol(X,Y,Z)
sau
[TH,R] = cart2pol(X,Y),
în care X, Y, Z sunt coordonatele carteziene, iar TH este unghiul ϕ , R este raza
ρ , Z este înălţimea z. Matricele X, Y şi Z trebuie să aibă aceeaşi dimensiune (sau
oricare să fie scalar), iar TH este returnat în radiani.
De exemplu, dacă X = 1.7321, Y = 1.0000, Z = 3, atunci prin
instrucţiunea [TH,R,Z] = cart2pol(X,Y,Z), rezultă TH = 0.5236 =pi/6, R = 2.0000,
Z = 3.
În coordonate sferice, un punct P, este dat prin: r = OP , unghiul θ format
de OP cu axa Oz şi unghiul ϕ , pe care îl face proiecţia OP ' a lui OP , pe planul
xOy , cu axa Ox (vezi figura 8.10).
În acest caz, curbele pe care variază numai unul dintre parametri sunt
următoarele: semidreapta C r ce porneşte din origine, semicercul meridian Cθ şi
cercul Cϕ .
Sensul crescător al parametrilor pe aceste curbe va fi indicat, respectiv, prin
r r r
vectorii unitari u r , uθ , uϕ tangenţi curbelor în punctul considerat.
Aceşti vectori sunt determinaţi în toate punctele care nu aparţin axei Oz şi
sunt ortogonali, doi câte doi.
r r r
Triedrul u r , uθ , uϕ poate fi considerat triedru de referinţă şi depinde de
punct.
Între coordonatele sferice şi coordonatele carteziene avem relaţiile:
x = r ⋅ sin θ ⋅ cos ϕ
y = r ⋅ sin θ ⋅ sin ϕ
z = r ⋅ cos θ
cu r ≥ 0, 0 ≤ θ < π , 0 ≤ ϕ < 2π .
Funcţia Matlab care realizează această transformare, din coordonate sferice
Funcţii matematice în Matlab 203
Fig. 8.10.
De exemplu, dacă TH=pi/6, PHI= pi/4, R=2, atunci prin [X,Y,Z] =
sph2cart(TH,PHI,R), se obţine X= 1.2247, Y = 0.7071, Z = 1.4142.
Transformarea inversă, din coordonate carteziene în coordonate sferice, se
realizează cu relaţiile:
r = x2 + y2 + z 2
y
ϕ = arctan
x
z
θ = arctan 2
2
x +y
cu r ≥ 0, 0 ≤ θ < π , 0 ≤ ϕ < 2π .
204 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE
Fig. 8.11.
Ţinând seama de cele de mai sus, vectorii a şi b vor avea expresiile:
a = a1 ⋅ i + a2 ⋅ j + a3 ⋅ k , b = b1 ⋅ i + b2 ⋅ j + b3 ⋅ k .
Înmulţind scalar aceste sume şi ţinând seama de cele anterioare, se obţine:
a ⋅ b = a1 ⋅ b1 + a2 ⋅ b2 + a3 ⋅ b3 .
Pentru b = a , avem :
2 2 2 2 2 2
a ⋅ a = a 2 = a1 + a 2 + a3 ⇒ a = a1 + a 2 + a3 .
Expresia care dă unghiul a doi vectori este:
a1 ⋅ b1 + a 2 ⋅ b2 + a3 ⋅ b3
cosθ =
2 2 2 2 2 2
a1 + a 2 + a3 ⋅ b1 + b2 + b3
Fig. 8.12.