Académique Documents
Professionnel Documents
Culture Documents
Pi 3,141592653589793238462643;
I
1
(unitatea imaginar);
infinity infinit;
,
1,2
Cu Fe,
aliaj
]
> e:=A[1,2]+A[2,1]-a[1,1]*a[2,2];
e :=
2 , 1
+
1 , 2
- a1,1a2,2
Ghilimele. Dup cum rezult de mai sus, ghilimelele inverse servesc la crearea
liniilor. Sistemul Maple mai utilizeaz i aa-numitele ghilimele de accentuare.
Pentru a avea acces la rezultatul unei comenzi, acesteia i se va atribui un nume.
Prin urmare, operatorul cuprins ntre ghilimele drepte, se elibereaz de ele la o
introducere. Altfel spus, executarea se va ntrerupe la o trecere prin analizatorul
sintactic, adic de fiecare dat cnd analizatorul sintactic ntlnete o expresie luat n
ghilimele drepte suprim partea exterioar a lor.
Exemple
> ''factor(x^3 - 2*x^2 - 3)'';
'factor(x
3
- 2 x
2
- 3)'
> 'factor(x^3 - 2*x^2 - 3)';
factor(x
3
- 2 x
2
- 3)
> factor(x^3 - 2*x^2 - 3);
x
3
- 2 x
2
- 3
105
> ''cos''(Pi) ;
'cos'(
)
> 'cos'(Pi);
cos(
)
> cos(Pi);
-1
iruri. Mai multe expresii separate prin virgule formeaz un ir (o
consecutivitate) de expresii. Majoritatea comenzilor Maple folosesc iruri de expresii
sub form de parametri. Modul cel mai simplu de creare a unui ir este introducerea
consecutiv a expresiilor.
Exemple
> 2*a+a,2*b+c,2*c+d,m*n+3*p-q;11,12, 13,sqrt(3),
exp(2);
3 a, 2 b + c, 2 c + d, m n + 3 p - q
11, 12, 13, 3 ,
2
e
> a, d, c+k, 2*3, 7*sqrt(2);
a, d, c + k, 6, 7 2
Alt mod de creare a irurilor este utilizarea operatorului$( de unul singur sau
mpreun cu operatorul multe puncte ..(zon). Cu ajutorul operatorului $ se obin
succesiuni ordonate.
Exemple
> m$8 ;
m, m, m, m, m, m, m, m
106
> $1..5;
1, 2, 3, 4, 5
> k^3 $ k = - 2..6;
-8, -1, 0, 1, 8, 27, 64, 125, 216
> 2*i^2 $ i = - 4..6;
32, 18, 8, 2, 0, 2, 8, 18, 32, 50, 72
> m[i] $i = - 1..5;
m
-1
, m
0
, m
1
, m
2
, m
3
, m
4
, m
5
Alt modalitate de formare a irurilor este aplicarea comenzii seq. Aceast
comand este de mare folos cnd se dorete efectuarea rapid a calculelor.
Exemple
> seq(i^2/(i!+1), i = 1..7);
5041
49
,
721
36
,
121
25
,
25
16
,
7
9
,
3
4
,
2
1
> seq(D(f),f=[sqrt,cos^2,tan,ln,exp,1/sin]); # D
este operatorul de derivare
sqrt
1
2
1
, -2 sin cos, 1 + tan
2
, a ->
a
1
, exp, -
2
sin
cos
> max(exp(1),sin(3*Pi/6),sqrt(10),Pi,int(x^2,x =
2..3));
3
19
,
107
deoarece
3
19
dx x
3
2
2
.
Mulime. Sistemul Maple conine dou noiuni importante: noiunea de mulime
i cea de list.
Prin mulime se nelege o secven neordonat de expresii cuprinse ntre
acoladele { }. Orice expresie admisibil n Maple este parte component a unei
mulimi. Elementele mulimii care se repet sunt excluse de sistem n mod automat i se
rearanjeaz ntr-o manier convenional. Sistemul Maple prevede trei operatori care
opereaz cu mulimi: union (unete elementele a dou mulimi n una singur),
intersect (creeaz o mulime cu elemente comune ale mulimilor componente) i
operatorul minus (exclude din prim mulime elementele celeilalte mulimi).
Exemple
>{`verde`,`negru`,`write`,+743.569,`club
Internet`};
{club Internet, 743.569, verde, negru, write}
> { -1, -1, -2, -3, 2, -2 }, {a[1], a, c[1],
a[1], c[1]};
{-1, -2, 2, -3}, {a
1
, a, c
1
}
n secvenele indicate elementele -1 i -2 precum a
1
i c
1
se repet pe cnd
rezultatul este returnat fr repetri
> {x, x, y, z, t,11}union{y, t, 11, 11, 17};
{11, 17, x, y, t, z}
> {x, x, y, z, t, 11}intersect{y, t, 11, 11, 17};
{11, y, t}
> {a1, a2, a3}minus{a1, b1, b2}; {x, x, y, z, t,
11}minus{y, t, 11, 11, 17};
108
{a2, a3}
{x, z}
List. Un ir de expresii luate ntre paranteze ptrate [, ] ) poart denumirea
de list. Listele, spre deosebire de mulimi, sunt obiecte ordonate n sensul c ordinea
expresiilor n list se pstreaz ntocmai pe ntreg parcursul calculelor. Elementele care
se repet nu sunt excluse din list.
Exemple
> [0, 1, -3.75,sqrt(2.3), 4, 3, 2^3, 1]; [t, y/y^2,m,x^3];
[0, 1, -3.75, 1.516575089, 4, 3 , 8, 1]
[
t,
y
1
, m, x
3
]
> [a[1], a, c[1], a[1], c[1]];
[a
1
, a, c
1
, a
1
, c
1
]
> [{m,a,c}, {c,a,m}, {s, o, f, t, w, a, r, e}];
[{m, c, a}, {m, c, a}, {t, f, r, s, a, w, o, e}]
Elementele ultimei liste sunt mulimi. Dac ordinea elementelor unei mulimi
poate fi modificat nu acelai lucru se poate spune de ordinea elementelor unei liste.
Ordinea iniial a listei din memorie nu se modific.
Maple prevede comenzi i pentru efectuarea de operaii cu elementele listelor.
Printre aceste comenzi fac parte: select( ), remove( ), zip( ) i sort( ). Cu
comanda select(parametrul1, parametrul2), n dependen de regula indicat ( o relaie
logic parametrul1) n list (parametrul2) se selecteaz elementele i se returneaz
ntr-o list, pstrndu-li-se ordinea. Comanda remove( ) exclude din list elementele
care nu respect regula stabilit i returneaz lista elementelor rmase. Dou liste mai
pot fi unite n una singur cu ajutorul comenzii op( ). Dac ns unirea se face n
conformitate cu o anumit regul, atunci se aplic comanda zip( ). Primul parametru
indic regula de unire a perechilor de elemente Comanda sort( ) sorteaz liste n
109
conformitate cu o anumit lege dat. n acest caz parametrul1 este o list, pe cnd
parametrul2 o regul.
Exemple
> M:= array([x, sin(x), sqrt(x), y]); # Dac name se refer la un tablou sau
array, atunci Maple returneaz intrrile tabloului(sau array)
M := [x, sin(x),
x
, y]
> M[3]; # Maple execut o selecie a listei propuse, anume elementul 3 din
list
x
> large := t-> is( t>5 );
large := t -> is( 5 < t )
> d := [-8, 2, 0, 105, 2*Pi, sin(5), 5.5*cos(6)];
d := [-8, 2, 0, 105, 2 Pi, sin(5), 5.5 cos(6)]
> select(large,d);
[105, 2 Pi, 5.5 cos(6)]
> remove(large,d);
[-8, 2, 0, sin(5)]
Mai exist i comanda type( ), care selecteaz elemente de un anumit tip.
Exemple
> select (type,d,numeric);
[-8, 2, 0, 105]
Fie date listele
A:= [seq(ithprime(i), i = 1..6)];
B:= [seq(binomial(6,i), i=1..6)];
A := [2, 3, 5, 7, 11, 13]
B := [6, 15, 20, 15, 6, 1]
Listele A i B pot fi unite ntr-o list dac se aplic secvena
> [ op(A), op(B)];
110
[2, 3, 5, 7, 11, 13, 6, 15, 20, 15, 6, 1]
> zip((a,b) -> {a,b}, A, B);
[{2, 6}, {3, 15}, {5, 20}, {7, 15}, {6, 11}, {1, 13}]
> pare:=(a,b) -> [a,b];
Cu secvenele > pare := (a, b) -> [a, b] : i > C:=zip(pare,A,B);
se obine o list de liste:
C := [[2, 6], [3, 15], [5, 20], [7, 15], [11, 6], [13, 1]]
Lista de liste ajut la construirea graficelor. Astfel, pentru lista de liste
> M:= [[0,0],[2,5], [5, 7], [8,13],[8.76,12],[11, 6],[12.7,9], [15,0]];
M := [[0, 0], [2, 5], [5, 7], [8, 13], [8.76, 12], [11, 6], [12.7, 9], [15, 0]]
prin intermediul comenzii plot se obtine graficul din fig.8.4
> plot(M);
Fig.8.4
Iat i cteva cazuri de ordonare:
> sort([3.75,5,21/3,1.15],(x,y)->evalb(x>y)); # se scriu
elementele listei conform legii indicare( n cazul dat n ordinea
descresctoare):
[7, 5, 3.75, 1.15]
> bf:= (x,y)->is(x<y);
bf := (x, y) -> is(x < y)
> sort([sqrt(5.6),sqrt(5.67), Pi, cos(4.25), 3.69,
int(x^2, x = 0..2)], bf); # ordinea elementelor este
111
cea cresctoare:
[-.4460874899, 2.366431913, 2.381176180,
3
8
, , 3.69]
8.3. Operatori Maple
Sistemul Maple admite mai muli operatori: aritmetici, logici, de concatenare, de
derivare, de compoziie etc. Operatorii au o importan aparte la crearea expresiilor i
efectuarea operaiilor matematice.
8.3.1. Operatorul de atribuire
Operatorul de atribuire este := i, de regul, se aplic n cazurile cnd unui
nume trebuie s i se atribuie o valoare. Dac unei variabile x i se atribuie o valoare ( de
exemplu, 105) apoi, n continuare, i se va atribuie o alt valoare (de exemplu, 17)
programul Maple ine minte doar ultima valoare. Operatorul =, spre deosebire de
operatorul := , stabilete o legtur ntre variabil i valoarea expresiei.
Operatorul = , numit operator-ecuaie, se aplic n cazurile cnd se apeleaz la
parametrii unei comenzi sau cnd se cer extrase rezultatele calculelor. Unele comenzi
Maple funcioneaz doar datorit operatorului =. Printre acestea fac parte i
comenzile ce in de rezolvarea diferitor tipuri de ecuaii:
'
+
+ +
+ +
. 3 3 3 4
, 2 4 3
, 1 2 2
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
Stabilim cinci semne dup virgul (comanda Digits()) i scriem sistemul:
> Digits:=5:2*x[1]+x[2]+2*x[3]=1;3*x[1]-
4*x[2]+x[3]=2;4*x[1]-3*x[2]+3*x[3]=3;
+ + 2 x
1
x
2
2 x
3
1
+ 3 x
1
4 x
2
x
3
2
+ 4 x
1
3 x
2
3 x
3
3
113
> solve({%,%%,%%%},{x[1],x[2],x[3]}); evalf(%);# Parametrii
%, %%, %%% din parantezele figurate a comenzii solve( ) nseamn adresarea
ctre ecuaia a treia (%), ecuaia a doua (%%) i prima ecuaie (%%%).
Argumentul comenzii evalf( ) nseamn rezultatul returnat de comanda
solve( ), adic soluia
3
1
,
3
2
, 0
3 2 1
x x x transformat n
fracie zecimal
{ } , , x
1
0 x
3
2
3
x
2
-1
3
{ } , , x
1
0. x
3
0.66667 x
2
-0.33333
8.3.3. Operatorul de concatenare
Reuniunea mai multor linii n una singur poate fi obinut i cu ajutorul
operatorului
cat ( `A`, `B`, `C`, )
unde `A`, `B`, sunt linii. Comanda returneaz linia `ABC`.
Un instrument util pentru formarea de nume i linii este i semnul de
concatenare. (punct), cu ajutorul cruia pot fi create mulimi de nume.
Exemple
> cat(`Mihai Eminescu-` , `poetul nepereche`);
Mihai Eminescu-poetul nepereche
> seq(nume.i, i=2..6);
nume2, nume3, nume4, nume5, nume6
> add(M.k, k=1..5);
M1 + M2 + M3 + M4 + M5
8.3.4. Operatorul de compoziie
114
Operatorul de compoziie se aplic la crearea funciilor compuse i are forma:
_
,
+ 1
4
_
,
+ 1
4
_
,
+ 1
4
_
,
+ 1
4
( ) + 1 x
2
2
2
2
2
2
> g:=t->sqrt(t)/(1-t^4);(g@@3)(t);
:= g t
t
1 t
4
t
1 t
4
1
t
2
( ) 1 t
4
4
1
t
( ) 1 t
4
2
_
,
1
t
2
( ) 1 t
4
4
4
8.3.5. Operatorul neutru
115
Acest operator este determinat de utilizator. Numele unui astfel de operator
trebuie s nceap neaprat cu caracterul & urmat de caractere permise. Nu pot fi pri
componente ale operatorului caracterele &, ( ), [ ], { }, ; , : , , #, _ etc.
Operatorul neutru depinde de urmtoarele comenzi:
x 3 x 7
> nops(f); # numrul obiectelor expresiei
5
> op(f); # obiectele componente ale expresiei
6.5
x
1/ 3
, 3sin(x)
2
cos(x), 2
x , 3 x, 7
Comanda op( ) poate fi folosit i la extragerea elementelor individuale ale
expresiei sau, dac se aplic de mai multe ori, poate s coboare pn la subobiecte.
Exemple
> g:= 3*x^3+x*sin(x)-2/cos(x)+23; d:= f;
g := 3 x
3
+ x sin(x) -
2
cos x
+ 23
d := 6.5
x
1/ 3
+ 3sin(x)
2
cos(x) + 2
x 3 x 7
> op(1,g); op(2,f); op(3,g); op(4,g);
120
3 x
3
3 sin(x)
2
cos (x)
-
2
cos x
23
> x:=Pi/6; g; evalf("); x:=Pi; g; evalf("); x:=3; f; evalf(");
x :=
1
6
1
72
3
1
12
4
3
3 + 23
21.38304104
x :=
3
3
+ 25
118.0188301
x := 3
6.5
3
1/ 3
+ 3 sin(3)
2
cos(3) + 2
3 - 16 (observm
c programul n mod automat a calculat 3x
7 pentru x = 3)
- 3.22042285
> op(1,op(2,g)); op(1,op(1,g)); op(0,op(4,g)); op(2,op(3,g));
x
3
integer
1
cos x
> whattype(op(2,g);
expreseq
> op(0,op(1,g));
integer
121
Dac obiectul luat spre examinare este o variabil cu indice (cu numele N)
comanda nops( ) va returna indicele variabilei, comanda op(i, N) va returna indicele i,
iar op(0, N) numele variabilei.
Exemple
> nops(A[i, j]); nops(A[m][n]);
2
1
> op(1,A[i,j]); op(1,A[m][n]);
i
n
> op(0,A[2,3]);
A
8.6. Operaii analitice cu comenzi Maple
Maple este conceput ca utilizatorul s poat s grupeze termenii unei expresii, s
descompun expresiile n factori, s deschid paranteze, s transforme o fracie raional
n fracii elementare etc. Maple mai prevede comenzi pasive i comenzi active.
Comenzile cu forma activ fac calcule imediat, returnnd rezultatul pe foaia de lucru, pe
cnd comenzile pasive afieaz doar nscrierea matematica a expresiei. Deosebirea
dintre o comand activ i una pasiv este c comanda pasiv ncepe cu o liter mare.
Printre comenzile cu dou forme amintim cele legate de calcularea derivatei (diff( ) i
Diff( )), integralei (int( ) i Int( )), sumei (Sum( ) i sum( )), produsului
(product( ) i Product( )) etc.
8.6.1. Comanda simplify( )
Expresiile algebrice pot fi aduse la o form mai simpl cu ajutorul comenzii
simplify( ). n general, problema simplificrii n majoritatea sistemelor de calcule
122
analitice nu este simpl. n unele cazuri unele simplificri pot fi considerate simple, iar
n alte cazuri, aceleai modificri, din alt punct de vedere, se consider compuse. De
exemplu, atunci cnd se rezolv o ecuaie trigonometric nu ntotdeauna este raional s
nlocuim sin(x)
2
+ cos(x)
2
cu 1, dei aceast operaie, fr doar i poate, este o
simplificare. Uneori, ns, e mai bine ca 1 s se prezinte prin suma sin(x)
2
+ cos(x)
2
. n
Maple comanda simplify( ) opereaz cu mai multe proceduri: simplify/exp,
simplify/ln, simplify/sqrt, simplify/trig, implify/radical,
simplify/power etc.
Exemple
S se aduc la o form mai simpl expresiile:
a) A =
+ + + + 2 ( ) cos x
2
4 ( ) sin x ( ) cos x ( ) cos x ( ) sin x 1
+ + 4 ( ) cos x
2
2 ( ) sin x ( ) cos x 3 ( ) cos x 3 ( ) sin x 3
,
b) B =
+ + ( ) sin
2
( ) tan
2
_
,
tan +
3
2
_
,
sin +
2
( ) cos 2 ,
c) C = + + a
3
b
3
3 a
2
b 2 c 3 a b
2
Avem:
>
simplify(A);
+ 1 ( ) sin x
( ) cos x
> simplify(sin(Pi-alpha)^2+tan(Pi-alpha)^2*tan(3*Pi/2+
alpha)^2+sin(Pi/2+alpha)*cos(alpha-2*Pi));
2
> B:=sin(Pi-alpha)^2+tan(Pi-alpha)^2*tan(3*Pi/2+
alpha)^2+sin(Pi/2+alpha)*cos(alpha-2*Pi); # Observm
c sistemul i fr comanda simplify( ) a adus expresia la o form mai simpl
:= B + + ( ) sin
2
( ) tan
2
( ) cot
2
( ) cos
2
> simplify(B);
2
> C:=a^3-b^3+3*a^2*b+2*c-3*a*b^2: simplify(C,{a^3-
3*a*b^2=1,3*a^2*b=b^3});
+ 2 c 1
123
8.6.2. Comanda expand( )
Parantezele ntr-o expresie algebric pot fi deschise(nchise) cu comanda
expand( ). Pentru o fracie algebric comanda deschide paranteze la numrtor, apoi
mparte fiacare termen al expresiei obinute la numitorul fraciei fr a efectua
transformri. Comanda tie s lucreze cu funcii matematice i cunoate regulile de
deschidere a parantezelor n expresiile care conin funciile sin( ), cos( ), tg( ), sh( ),
ch( ), th( ), ln( ), exp( ), abs( ), precum i un numr mare de funcii matematice
speciale.
Exemple
S se deschid parantezile n expresiile:
a)
( ) x 3 ( ) + x 4
2
, b)
( ) x 2
3
( ) + x 2
2
, c)
( ) sin + + x y z
, d)
( ) + x 1
2
( ) + y 2 z 3 t
(fa de x+1).
Avem
> expand((x-3)*(x+4)^2);expand((x-2)^3/(x+2)^2);
expand(sin(x+y+z));expand((x+1)^2*(y+2*z-3*t),x+1);
+ x
3
5 x
2
8 x 48
+
x
3
( ) + x 2
2
6 x
2
( ) + x 2
2
12 x
( ) + x 2
2
8
( ) + x 2
2
( ) sin x ( ) cos y ( ) cos z ( ) sin x ( ) sin y ( ) sin z ( ) cos x ( ) sin y ( ) cos z +
( ) cos x ( ) cos y ( ) sin z +
+ ( ) + x 1
2
y 2 ( ) + x 1
2
z 3 ( ) + x 1
2
t
8.6.3. Comanda factor( )
Un polinom cu coeficieni numerici se descompune n factori cu ajutorul comenzii
factor( ).
Exemple
S se descompun n factori:
> factor(x^3*y+x^3*b+a*x^2*y+a*b*x^2+2*x^2*y^2+2*b*x^2
*y+2*a*x*y^2+2*a*b*x*y+x*y^3+b*x*y^2+a*y^3+a*b*y^2);
124
( ) + x y
2
( ) + y b ( ) + x a
> E:=3*sin(x)*cos(x)^2+sin(x)^3-cos(x)^3-
3*sin(x)^2*cos(x):factor(E);
( ) ( ) sin x ( ) cos x
3
> factor(4*x^2+16*x-20);
4 ( ) + x 5 ( ) x 1
> factor(x^3-7,complex);factor(x^3-7,real);
( ) + x + .9564655914 1.656647000 I ( ) + x .9564655914 1.656647000 I
( ) x 1.912931183
( ) x 1.912931183 ( ) + + x
2
1.912931183 x 3.659305710
> factor(a^3-b^3);
( ) a b ( ) + + a
2
a b b
2
8.6.4. Comanda normal( )
O fracie algebric poate fi redus cu comanda normal( ). Dac parametrul este
o list, o mulime, un ir, o ecuaie sau o funcie comanda se aplic tuturor
componentelor parametrului.
Exemple
> fracie:=1/(x+1) - 1/(x+2) + x/(x+1);
:= fractie +
1
+ x 1
1
+ x 2
x
+ x 1
> fracie:=normal(fracie);
:= fractie
+ x 1
+ x 2
> normal((x^3+y^3)/(x+y)^3);
+ x
2
y x y
2
( ) + x y
2
> normal(sin((x*(x^2-1)+x)/(x^2)));
( ) sin x
> m:=tan(x/(x+1)-x)^2+cot(-x/(x+1)+x);normal(m);
125
:= m +
_
,
tan
x
+ x 1
x
2
_
,
cot +
x
+ x 1
x
+
_
,
tan
x
2
+ x 1
2
_
,
cot
x
2
+ x 1
8.6.5. Comanda combine( )
Gruparea termenilor unei expresii se obine cu comanda combine( ).
Comanda, practic, cunoate toate regulile ce in de transformrile funciilor
matematice elementare.
Exemple
> combine(Int(cos(x),x=-Pi..Pi)-Int(sin(x),
x=-Pi..Pi));
d
( ) cos x ( ) sin x x
> combine(Limit(2^x,x=a)*Limit((2^x)^b,x=a)+C);
lim
x a
+ 2
( ) + x x b
C
> combine(exp(x)*exp(y^3)*exp(ln(cos(alpha)*
sin(alpha))),exp);
( ) cos ( ) sin e
( ) + x y
3
> P:=4^sqrt(x)*6^y*7^z*24^t:combine(P, power);
combine(x^(cos(a)^2),power);
4
( ) x
6
y
7
z
24
t
x
( ) ( ) cos a
2
> combine([8*cos(x)^3*sin(x)-4*sin(x)*cos(x),
8*cos(x)^4-8*cos(x)^2+1],trig);
[ ] , ( ) sin 4 x ( ) cos 4 x
126
8.6.6. Comanda collect( )
Termenii asemenea pot fi grupai cu comanda collect( ).
Exemple
> E:=a*sin(x)-sin(x)*2-a*cos(x)+2*cos(x)*sin(x);
:= E + a ( ) sin x 2 ( ) sin x a ( ) cos x 2 ( ) sin x ( ) cos x
> F:=collect(E,sin(x));
:= F ( ) + a 2 2 ( ) cos x ( ) sin x a ( ) cos x
> H:=collect(F,cos(x));
:= H + ( ) 2 ( ) sin x a ( ) cos x ( ) a 2 ( ) sin x
> g:=int(x^2*(exp(x)-exp(-x))+x^2,x);
:= g + + + + + x
2
e
x
2 x e
x
2 e
x
x
2
e
x
2 x
e
x
2
e
x
1
3
x
3
> collect(g,exp(x));
+ + ( ) + + 2 x 2 x
2
e
x
1
3
x
3
+ + 2 x 2 x
2
e
x
> collect(g,x);
+ + + +
1
3
x
3
_
,
+
1
e
x
e
x
x
2
_
,
2
1
e
x
2 e
x
x
2
e
x
2 e
x
8.6.7. Comanda rationalize( )
Cu rationalize( ) se obin
transformri cu fracii numerice i algebrice.
Dac argumentul funciilor transcendente este o fracie cu iraionaliti la numitor
procedura de raionalizare nu funcioneaz.
Exemple
> expresia_1:=6/(3-sqrt(3));
:= expresia_1 6
1
3 3
> rationalize(expresia_1);
127
+ 3 3
> expr_2:=(1+3^(1/3))/(1-3^(1/3));
:= expr_2
+ 1 3
( ) / 1 3
1 3
( ) / 1 3
> rationalize(%);
1
2
( ) + 1 3
( ) / 1 3
( ) + + 1 3
( ) / 1 3
3
( ) / 2 3
> rationalize([x/(x-sqrt(5)),x/(x-sqrt(1+sqrt(5)))]);
1
]
1
1
1
,
x ( ) + x 5
x
2
5
x ( ) + x + 1 5 ( ) + x
2
1 5
x
4
2 x
2
4
> f:=[(x^2-y^2)/(x+sqrt(y)),x^2*y/(x+sqrt(x+sqrt(7)))];
:= f
1
]
1
1
1
,
x
2
y
2
+ x y
x
2
y
+ x + x 7
> rationalize(f);
1
]
1
1
1
,
( ) x
2
y
2
( ) x y
x
2
y
x
2
y ( ) x + x 7 ( ) + x
2
x 7
+ x
4
2 x
3
x
2
7
> 1/(1+root(cos(1/(1-sqrt(beta))),3));
1
+ 1
_
,
cos
1
1
( ) / 1 3
> rationalize(%);
+ 1
_
,
cos
1
1
( ) / 1 3
_
,
cos
1
1
( ) / 2 3
+ 1
_
,
cos
1
1
> f1:=1/(1-(1+sqrt(alpha))^(1/3));rationalize(%);
1
1 ( ) + 1
_
,
1
3
+ + 1 ( ) + 1
_
,
1
3
( ) + 1
_
,
2
3
128
8.6.8. Alte comenzi
Pentru simplificarea expresiilor, care conin radicali de ordin diferit de ordinul
doi, se apeleaz la comanda radnormal( ).
Exemple
>sqrt(3+sqrt(3)+(10+6*sqrt(3))^(1/3))=radnormal(sqrt(3
+sqrt(3)+(10+6*sqrt(3))^(1/3)));
+ + 3 3 ( ) + 10 6 3
( ) / 1 3
+ 1 3
Comanda convert(exp, param) transform exp n tipul indicat de param. In
particular, poate fi transformat o expresie care conine sinx i cosx ntr-o expresie care
va conine doar tgx dac se va indica param = tan sau, invers, tgx, ctgx pot fi
transformate n sinx i cosx dac se indic parametrul sin sau cos.
n general, menirea comanzii convert( ) este convertirea unei expresii n alt
expresie. Astfel, de exemplu,
>convert(list, vector);
transform o list de expresii de un anumit tip ntr-o list de alt tip (cu aceleai
elemente).
129
C a p i t o l u l 9
PACHETE I GRAFIC MAPLE
9.1. Pachete ale algebrei liniare
9.1.1. Noiuni de baz
Sistemul Maple dispune de un nucleu i o bibliotec cu un numr impresionat de
pachete specializate care conin comenzi pentru rezolvarea problemelor din cele mai
diferite compartimente ale matematicii. Astfel, versiunea Maple 6 are n componen 40 de
astfel de pachete, iar Maple 9 deja conine 85 de astfel de pacete.
Biblioteca de baz conine cele mai des folosite comenzi care se ncarc odat cu
lansarea sistemului. Dac, ns, o comand nu face parte din biblioteca de baz sau din
nucleu, utilizatorul este obligat s ncarce pachetul n componena cruia se afl comanda
n cauz sau, pur i simplu, doar comanda care-l intereseaz din pachetul respectiv.
Comenzile unui pachet se ncarc cu with(nume pachet) sau, dac se dorete ncrcarea
doar a unei comenzi, atunci se apeleaz la with(nume pachet, nume comand).
Lista celor mai des folosite pachete ale sistemului Maple este urmtoarea:
alcurves, combinat, genfunc, geometry, geom3d, plots, group, linalg,
GF, LinearAlgebra, networks, plottools, powseries, simplex, stats,
tensor, DiscreteTransforms, GaussInt, context, LinearOperators,
MathematicalFunctions, MatrixPolynomialAlgebra, OreTools, Sudent,
Student[Calculus], Sumtools, sumtools, Student[LinearAlgebra],
Student[Precalculus], VariationalCalculus, VectorCalculus,
student etc.
130
Utilizatorii interesai de un anumit pachet sau de o funcie pot obine informaia
necesar, adresndu-se Sistemului de informaie Help.
9.1.2. Pachetul linalg
Sistemul Maple (ncepnd cu versiunea 6) prevede dou pachete care conin
comenzi pentru efectuarea celor mai diverse transformri din algebra liniar. Acestea sunt
linalg i LinearAlgebra, funcionalitatea crora este aproape identic. Dac
pachetul linalg este parte component a tuturor versiunilor anterioare ale sistemului
Maple, pachetul LinearAlgebra reprezint o nou modalitate de lucru cu matricele
numerice, inclusiv i cu matricele de dimensiuni mari.
Obiectele de baz cu care opereaz comenzile acestor pachete sunt matricele, ns
noiunea de matrice din linalg nu este echivalent cu cea a pachetului
LinearAlgebra. Pachetul linalg construiete matrice cu comanda (funcia)
array( ), iar LinearAlgebra utilizeaz obiecte bazate pe structura r-table. Matricele
i vectorii sunt create de constructorii speciali Vector( ) i Matrix( ) sau de structura
<a, b, c> (<a|b|c>). Pachetul linalg opereaz cu matrice la nivel de nume, adic nu
pot fi efectuate operaii asupra elementelor matricelor. Pentru efectuarea unor astfel de
operaii este nevoie i de comanda evalm( ). Pachetul LinearAlgebra, la rndul su,
conine comenzi cu ajutorul crora pot fi efectuate operaii la nivel de elemente ale
matricelor.
Pachetul linalg conine comenzi pentru scrierea matricelor i vectorilor, propune
un numr mare de comenzi pentru operarea cu diverse structuri ale obiectelor pentru
rezolvarea sistemelor de ecuaii liniare, pentru eterminarea valorilor i vectorilor proprii a
unei matrice, pentru transformarea matricelor sub diverse forme etc.
Matricele sau vectorii n Maple se definesc fie cu comanda array( ) (din biblioteca
standard), fie cu comenzile marix( ) i vctor( ). Comanda array( ) are forma
array(intervale, list, opiuni);
Parametrii comenzii nu sunt obligatorii, ordinea acestora fiind arbitrar. Parametrul
intervale sunt numere ntregi desprite prin virgul. Valorile elementelor intervalului sunt
date de parametrul list sub form de list pentru intervale unidimensionale sau sub form
131
de list de liste pentru intervale de mai multe dimensiuni. Parametrul opiuni poate primi
valorile symmetric, antisymmetric, identy i diagonal.
Exemple
> vec1:=array(1..3,[x[1],x[2],x[3]]);vec2:=
array(1..2,[4,-7]);
:= vec1 [ ] , , x
1
x
2
x
3
:= vec2 [ ] , 4 -7
> matr:=array(1..2,1..2,[[a[11],a[12]],[a[21],a[22]]]);
:= matr
1
]
1
1
11
a
11
a
12
a
21
a
22
> A:=array(1..3,1..3,[[1,0,-1],[2,1,4],[2,-6,0]]);
:= A
1
]
1
1
1
1
1
1 0 -1
2 1 4
2 -6 0
Vectorii i matricele, dup cum a fost menionat mai sus, se obin i cu ajutorul
comenzilor vector( ) i matrix( ):
vector (n, [elementul 1, elementul 2, ] );
matrix (n, m, [ elementul 1, elementul 2, ] );
Exemple
> vect:=vector(2,[a[1],a[2]]); b:=vector(3, [2,0,-9]);
:= vect [ ] , a
1
a
2
:= b [ ] , , 2 0 -9
> A:=matrix(2,3,[a[11],a[12],a[13],a[21],a[22],a[23]]);
:= A
1
]
1
1
11
a
11
a
12
a
13
a
21
a
22
a
23
132
Maple conine comezi care evideniaaz substructuri ale matricei: coloane, linii,
submatrice, minori. Comanda row(A, i ) indic linia i n matricea A, iar col(A, j )
coloana j. Cu submatrix(A, i1..in, j1..jm) se extrag submatrice din matricea dat. n
cazul unui vector se apela la comanda subvector(vec, i1..in). Dac, ns, pentru o
matrice dat se dorete evidenierea minorului M
ij
, atunci se aplic comanda minor(A, i, j)
Exemple
> F:=matrix(4,3,[cos(x),sin(x),tan(x),x,x^2,
x^3,t,t^2,t^3,2,8,16]);
:= F
1
]
1
1
1
1
1
1
1
11
( ) cos x ( ) sin x ( ) tan x
x x
2
x
3
t t
2
t
3
2 8 16
> row(F,3);col(F,2..3);
[ ] , , t t
2
t
3
, [ ] , , , ( ) sin x x
2
t
2
8 [ ] , , , ( ) tan x x
3
t
3
16
> F1:=submatrix(F,2..4,2..3);
:= F1
1
]
1
1
1
1
1
1
x
2
x
3
t
2
t
3
8 16
> F2:=extend(F,0,1,4);F3:=minor(F2,3,4);
:= F2
1
]
1
1
1
1
1
1
1
11
( ) cos x ( ) sin x ( ) tan x 4
x x
2
x
3
4
t t
2
t
3
4
2 8 16 4
,
:= F3
1
]
1
1
1
1
1
( ) cos x ( ) sin x ( ) tan x
x x
2
x
3
2 8 16
133
9.1.2.1. Operaii cu matrice
Comanda evalm( ) adun matrice. Amintim, evalm( ) efectueaz operaii la nivel
de obiecte, folosind operaiile: + (adunare), - (scdere), &* (nmulire ), / (mprire), ^
(ridicare la putere ). Prin urmare, suma a dou matrice (de aceleai dimensiuni) poate fi
obinut cu evalm(A+B).
Produsul matricelor A i B este rezultatul comenzilor multiply(A, B) sau
evalm(A&*B) cu condiia c dimensiunile matricelor sunt de natur ca operaia n cauz
s aib loc.
Exemple
> with(linalg):A:=array([[1,2],[3,4]]);B:=
array([[1,-1],[0,-1]]);
:= A
1
]
1
1
1 2
3 4
,
:= B
1
]
1
1
1 -1
0 -1
> C1:=evalm(A+2*B);C2:=evalm(2*A+B^2);
:= C1
1
]
1
1
3 0
3 2 ,
:= C2
1
]
1
1
3 4
6 9
> C3:=evalm(sin(A));C4:=evalm(A&*B);
:= C3
1
]
1
1
( ) sin 1 ( ) sin 2
( ) sin 3 ( ) sin 4 ,
:= C4
1
]
1
1
1 -3
3 -7
Cu evalm(A^k) poate fi obinut matricea A
k
, iar comenzile inverse(A) sau
evalm(1/A) calculeaz A
1
. Matricea transpus A
T
se va obine cu transpose(A).
Determinantul matricei A i rangul acesteia se obin cu ajutorul comenzilor det(A) i
rank(A).
Exemple
> A := array( [[1,-x],[2,3]] );B:=array([[2,3],
134
[0,1]]);
:= A
1
]
1
1
1 x
2 3
,
:= B
1
]
1
1
2 3
0 1
> B1:=evalm(B^3);B2:=inverse(B);A1:=inverse(A);
:= B1
1
]
1
1
8 21
0 1
,
:= B2
1
]
1
1
1
1
1
1
2
-3
2
0 1
,
:= A1
1
]
1
1
1
1
1
1
1
3
1
+ 3 2 x
x
+ 3 2 x
2
1
+ 3 2 x
1
+ 3 2 x
> multiply(B2,B);A2:=multiply(A,A1);
1
]
1
1
1 0
0 1
:= A2
1
]
1
1
1
1
1
1
1
+ 3
1
+ 3 2 x
2 x
+ 3 2 x
0
0 + 3
1
+ 3 2 x
2 x
+ 3 2 x
> simplify(A2);
1
]
1
1
1 0
0 1
> A3:=transpose(A);B3:=transpose(B1);
:= A3
1
]
1
1
1 2
x 3
,
:= B3
1
]
1
1
8 0
21 1
> rank(B);rank(B3);det(A);det(A1);
2, 2, 3+2x,
1
+ 3 2 x
135
9.1.3. Pachetul LiniarAlgebra
Acest pachet este realizat sub forme de module, bazndu-se pe o nou construcie a
limbajului Maple. Comenzile pachetului pot fi chemate cu ajutorul operaiei adresrii ctre
obiect : .
> LinearAlgebra:-nume_comand(parametri);
nainte de a pune n funciune o comand a acestui pachet trebuie activat:
with(LinearAlgebra); sau o comand n aparte with(LinearAlgebra,
nume_comand);
Pachetul LinearAlgebra opereaz cu scalari, expresii algebrice, matrice,
vectori. Matricele i vectorii sunt opera constructorului de matrice i a constructorului de
vectori. Constructorul de matrice este comanda Matrix( ), care are forma:
Matrix(r,c,init,ro,sc,sh,st,o,dt,f,a);
Semantica parametrilor i valorile admisibile sunt indicate n tabelul 9.1.
Tabelul 9.1. Parametrii constructorului de matrice
Parametrul Semnificaia
r
Numr nenegativ sau o zon de numere ntregi pozitive care ncepe cu 1 i
reprezint numrul liniilor matricei
c Numr nenegativ sau o zon de numere ntregi pozitive, care ncep cu 1 i
reprezint numrul coloanelor matricei
i n i t I n d i c v a l o r i l e e l e m e n t e l o r m a t r i c e i . P o a t e f i :
procedur - parametru de intrare: un cuplu de numere ntregi care
determin indicii elementului i returneaz valoarea
elementului, de exemplu, (i, j) (i*j);
expresie algebric care se calculeaz ca o procedur de doi parametri i
returneaz valorile elementului;
tabel, elementele cruia (cu indici nenegativi), reprezint elementele
matricei;
o mulime de ecuaii de forma (i, j) = valoare, unde indicii nenegativi sunt
indicii elementelor matricei ;
136
tablou bazat pe r-tabele, creat de comanda array( ) sau Array( ), indicele
ncepe cu 1;
matrice bazat pe r-tabel, creat de constructorul Matrix(,);
list - elementele creea sunt interpretate ca valori a liniei 1 ale matricei sau
list compus din liniile a matricei ;
r o
Are forma readonly sau readonly = true; valorile elementelor matricei nu
pot fi modificate
s c
Ecuaie de forma scan = nume sau scan = list care determin structura sau
ordinea datelor iniiale
s h
Ecuaie de forma shape=nume sau shape=list care determin una sau mai
multe funcii incluse sau funcii cu indice ale utilizatorului
s t
Ecuaii de forma storage=nume, unde nume este una din regiunile admise a
memoriei; determin cerinele memoriei pentru repartizarea elementelor matricei
o Pstreaz elementele matricei n memorie (pe linii sau coloane)
d t
Ecuaie de forma datatype=nume, unde nume este tipul de date pstrate sub
form de matrice
f
Ecuaie de forma fill=valoare i determin valoarea atribuit elementelor
nedefinite ale matricei, implicit este 0
a
Ecuaie de forma attributes=list i determin atributele matricei (pozitiv
definit ) cu ajutorul crora matricea a fost creat
Nu toi parametrii constructorului de matrice sunt obligatorii. Lipsa parametrilor
este echivalent cu o matrice de dimensiunea 00. Prin urmare, importani sunt primii trei
parametri. Prezena celorlali parametri face ca procesul de prelucrare a datelor s fie mai
rapid.
Exemple
> Matrix(3); Matrix(3,4);
137
1
]
1
1
1
1
1
0 0 0
0 0 0
0 0 0
,
1
]
1
1
1
1
1
0 0 0 0
0 0 0 0
0 0 0 0
> Matrix(1..1,1..5,-3);
[ ] -3 -3 -3 -3 -3
> Matrix([[3,2,1],[-1,-2,-3]]);
1
]
1
1
3 2 1
-1 -2 -3
> Matrix(3,(i,j)->s^(2*i-j));
1
]
1
1
1
1
1
1
1
1
s 1
1
s
s
3
s
2
s
s
5
s
4
s
3
Prin suma matricei A cu scalarul s se nelege operaia A + sE, unde E este matricea
unitate i dim(A) = dim(E).
Exemple
> S:=s + <<a[11]|a[12]|a[13]>,<a[21]|a[22]|a[23]>>;
S:=s*IdentityMatrix(2,3)+<<a[11]|a[12]|a[13]>,
<a[21]|a[22]|a[23]>>;
:= S + s
1
]
1
1
11
a
11
a
12
a
13
a
21
a
22
a
23
:= S + s
1
]
1
1
1 0 0
0 1 0
1
]
1
1
11
a
11
a
12
a
13
a
21
a
22
a
23
> s:=7:a[11]:=1:a[12]:=- 1:a[13]:=2:a[21]:=3:
a[22]:=4:a[23]:=5:S;
138
1
]
1
1
8 -1 2
3 11 5
> -5*<2|4|6>; # Produsul dintre un scalar i o matrice-linie
[ ] , , -10 -20 -30
> 5*<<2*x,8>|<3,6*t>>;# Produsul dintre un scalar i o matrice
1
]
1
1
10 x 15
40 30 t
9.1.3.1. Produs scalar.
Operaia . se aplic i la produsul scalar al matricelor i vectorilor.
Exemple
> <2,3>.<4|3>;# Produsul unei matrice-coloan (vector-coloan)
cu o matrice-linie(vector-linie)
1
]
1
1
8 6
12 9
> <4|3>.<2,3>;# Produsul dintre o matrice-linie si o matrice-
coloan
17
> A:=<<3,a>|<b,10>|<5,c>>;B:=<<1,2,3>|<-1,0,2>>;
:= A
1
]
1
1
3 b 5
a 10 c
:= B
1
]
1
1
1
1
1
1 -1
2 0
3 2
> A.B;
1
]
1
1
+ 18 2 b 7
+ + a 20 3 c + a 2 c
139
Pentru obinerea A
k
se va apela la operaia produsului scalar sau la operaia de
ridicare la putere. Exponentul k poate primi i valori negative.
Exemple
> A:=<<2.5|0.4>,<.6|.5>>;
:= A
1
]
1
1
2.5 .4
.6 .5
> A.A.A.A.A;
1
]
1
1
115.725849999999994 21.9000399999999972
32.8500599999999992 6.22565000000000079
> A^5;
1
]
1
1
115.725850000000008 21.9000400000000006
32.8500599999999992 6.22565000000000079
> A^(-1);A^(-2);
1
]
1
1
.495049504950495100 -.396039603960396114
-.594059405940594032 2.47524752475247524
1
]
1
1
.480345064209391048 -1.17635525928830464
-1.76453288893245696 6.36212136065091460
> %.A; # Verific dac A
-1
A = E
1
]
1
1
1.00000000000000022 0.
0. 1.
> A^(-2).A.A; # Verific dac A
-2
A
2
= E
1
]
1
11
.99999999999999944 0.
-.888178419700125232 10
-15
.99999999999999956
Evidenierea unor elemente sau a unor submatrice ale unei matricei se va obine cu
ajutorul indicilor.
Exemple
> M:=Matrix(5,(i,j)->2*i-j);
:= M
1
]
1
1
1
1
1
1
1
1
1
11
1 0 -1 -2 -3
3 2 1 0 -1
5 4 3 2 1
7 6 5 4 3
9 8 7 6 5
140
> M[4,5]; # S-a ales elementul
a
45
3
3
> M[5,1..-1];M[1..-1,3]; # Din matricea M s-a extras o linie i o
coloan
[ ] , , , , 9 8 7 6 5
,
1
]
1
1
1
1
1
1
1
1
1
11
-1
1
3
5
7
> M[1..4,4..5];# Din matricea M a fost extras o submatrice
1
]
1
1
1
1
1
1
1
1
-1 -2 -3
1 0 -1
3 2 1
5 4 3
9.1.3.2. Valori i vectori proprii.
S calculm acum determinantul matricei B = A - E, unde A =
1
1
1
]
1
6 0 3
5 3 1
4 1 2
.
Avem:
> A:=matrix(3,3,[2,1,4,1,3,5,3,0,2]):B:=evalm(A-
lambda*diag(1,1,1));
:= B
1
]
1
1
1
1
1
2 1 4
1 3 5
3 0 2
> P[3](lambda):=det(B);
:= ( ) P
3
+ 11 3 7
2
3
Pentru determinarea polinomului caracteristic sistemul Maple prevede comanda
charpoly( ):
> charpoly(A,lambda);
141
+ + 3 11 7
2
3
Rdcinile ecuaiei
( ) P
3
1
]
1
1
1
1
1
1 3 5
0 + 9 3 13
0 0 + 11 3 7
2
3
O matrice poate fi redus la forma triunghiular i cu ajutorul algoritmului lui
Gauss-Jordan:
> A := array( [[4,-5,3,-2],[-5,8,-1,2],[-2,3,2,1]] );
:= A
1
]
1
1
1
1
1
4 -5 3 -2
-5 8 -1 2
-2 3 2 1
> gaussjord(A, 'r'); # Aici r este rangul matricei
1
]
1
1
1
1
1
1
1
1
1
1
1 0 0 -1
0 1 0
-7
19
0 0 1
1
19
> r;
3
Mai jos prezentm lista celor mai importante comenzi ale pachetelor linalg i
LinearAlgebra (vezi tabelul 9.2).
Tabelul 9.2. Lista celor mai importante comenzi care opereaz cu matrice i vectori
Denumirea comenzii Semnificaie
delrows(A, i1..i2)/DeleteRow(A, i1..i2)
Omite liniile unei matrice
delcols(A, i1..i2)/DeleteColumn(A, i1..i2)
Omite coloanele unei matrice
row(A,i)/Row(A,i) Selecteaz liniile unei matrice
col(A,i)/Column(A,i) Selecteaz coloanele unei matrice
submatrix(A,i1..i2,j1..j2)/SubMat
rix(A,i1..i2,j1..j2)
Selecteaz o submatrice a matricei date
subvector(a,i1..i2)/SubVector(a,
i1..i2)
Selecteaz o poriune de coordinate a
vectorului
ScalarMultiply(A)
Calculeaz produsul dintre o matrice/vector i
143
un scalar
MatrixVectorMultiply(A) Calculeaz produsul scalar dintre o matrice i un vectorcoloan
VectorMatrixMultiply(A)
Calculeaz produsul scalar dintre un vector-
linie i o matrice
MatrixMatrixMultiply(A) Constituie produsul scalar a dou matrice
inverse(A)/MatrixInverse(A) Determin matricea invers
det(A)/Determinant(A) Calculeaz valoarea determinantului matricei
minor(A,I,j)/Minor(A,I,j) Calculeaz valoarea minorului matricei
eigenvals(A)/Eigenvalues(A) Calculeaz valorile proprii ale matricei
eigenvects(A)/Eigenvectors(A) Calculeaz vectorii proprii
9.1.4. Rezolvarea sistemelor de ecuaii liniare cu Maple
Majoritatea operaiilor cu matrice sunt concepute pentru rezolvarea sistemelor de
ecuaii liniare. n aceast privin pachetul LinearAlgebra propune mai multe metode
i mijloace pentru rezolvarea lor. Printre aceste metode amintim:
0
1
. inversarea matricei coeficienilor sistemului de ecuaii ( b A x *
1
):
0
2
. aplicarea factorizrii LU (method = LU);
0
3
. aplicarea decompoziiei QR (method = QR);
0
4
. aplicarea metodei lui Cholesky (method = Cholesky);
0
5
. metoda substituiei inverse (method = subs).
Exemple
S se determine soluia sistemului de ecuaii Ax = b pentru
1
1
1
1
]
1
9 1 2 5
4 3 0 1
5 8 5 3
5 5 4 8
A i
1
1
1
1
]
1
5
8
0
4
b .
> white(LinearAlgebra):
144
> with(LinearAlgebra): A := <<8,3,-1,-5>|<4,-5,0,-2>|<-
5,8,3,-1>|
<-5,5,-4,-9>>: b:=<4,0,-8,-5>:
9.1.4.1. Metoda LU:
> x:=LinearSolve(A,b,method='LU');
:= x
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1715
2607
-3668
2607
-1345
869
1759
2607
Verificare:
> A.x-b;
1
]
1
1
1
1
1
1
1
1
0
0
0
0
Soluia poate fi obinut i n cazul cnd se aplic decompoziia LU:
> P,L,U:=LUDecomposition(A);
:= , , P L U , ,
1
]
1
1
1
1
1
1
1
1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 0 0 0
3
8
1 0 0
-1
8
-1
13
1 0
-5
8
-1
13
-175
163
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
8 4 -5 -5
0
-13
2
79
8
55
8
0 0
163
52
-213
52
0 0 0
-2607
163
> v2:=Transpose(P).b;
145
:= v2
1
]
1
1
1
1
1
1
1
1
4
0
-8
-5
> v3:=ForwardSubstitute(L,v2);
:= v3
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
4
-3
2
-99
13
-1759
163
> x:=BackwardSubstitute(U,v3);
:= x
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1715
2607
-3668
2607
-1345
869
1759
2607
sau
x =
1
]
1
1
1
1
1
1
1
1
0.6578442654
-1.406981204
-1.547756041
0.6747219026
> A.x-b;
1
]
1
1
1
1
1
1
1
1
0
0
0
0
9.1.4.2. Metoda QR
146
> x:=LinearSolve(A,b,method='QR');
:= x
1
]
1
1
1
1
1
1
1
1
0.657844265439202380
-1.40698120444955865
-1.54775604142692692
0.674721902570003752
Verificare
> A.x-b;
1
]
1
1
1
1
1
1
1
1
1
0.888178419700125232 10
-15
0.355271367880050094 10
-14
0.266453525910037570 10
-14
-0.177635683940025046 10
-14
Alt modalitate, mai greoaie, este decompoziia QR:
> Q,R:=QRDecomposition(A);
1
1
1
1
]
1
1
1
1
1
]
1
79314 . 9 0 0 0
92135 . 3 36111 . 4 0 0
46802 . 5 83181 . 8 13485 . 6 0
41209 . 2 40705 . 1 71360 . 2 94987 . 9
,
61231 . 0 60149 . 0 10373 . 0 50252 . 0
65738 . 0 74550 . 0 04446 . 0 10050 . 0
097667 . 0 01108 . 0 94838 . 0 30151 . 0
42824 . 0 28690 . 0 29640 . 0 80403 . 0
: , R Q
> v2:=Transpose(Q).b;
:= v2
1
]
1
1
1
1
1
1
1
1
-6.53274579918487941
1.34848114757230774
4.10412266118843050
-6.60764769791746431
> v3:=BackwardSubstitute(R,v2);
:= v3
1
]
1
1
1
1
1
1
1
1
0.657844265439202380
-1.40698120444955865
-1.54775604142692692
0.674721902570003752
> A.x-b;
1
]
1
1
1
1
1
1
1
1
1
0.888178419700125232 10
-15
0.355271367880050094 10
-14
0.266453525910037570 10
-14
-0.177635683940025046 10
-14
147
n cazul de fa exactitatea e cu mult mai mare dect n cazul cnd se aplic funcia
(comanda) LinearSolve( ).
9.1.4.3. Metoda lui Cholesky:
> x:=LinearSolve(A,b,method='Cholesky');
Error, (in LinearAlgebra:-LA_Main:-LinearSolve) Matrix
is not positive-definite
Soluia nu poate fi calculat prin metoda lui Choletsky deoarece matricea dat A nu
este pozitiv definit.
9.2. Grafic Maple
Comenzile sistemului Maple pentru repreyentarea graficelor funciilor sunt grupate
n pachetul plots. Sistemul prevede i comenzi cu ajutorul crora poate fi urmrit mersul
rezolvrii problemei sau a trasrii graficului unei funcii (vezi 9.4). Printre posibilitile
grafice ale sistemului Maple, amintim:
trasarea graficului unei funcii de o variabil real, a unei funcii date parametric, a
funciilor implicite;
construirea suprafeelor definite de funcii dependente de dou variabile;
construirea obiectelor grafice (cerc, sfer, segment, dreptunghi, triunghi etc.) i
manipularea cu ele;
construirea graficelor n micare (animaie) pe plan i n spaiu.
nainte de toate, prezentm fr comentarii un exemplu simplu de trasare a graficului unei
funcii f(x),
] , [ b a x
.
Exemplu
148
S se reprezinte graficul funciei
5
sin 2 sin ) (
2
x
x x f pentru ] ,
2
[
x .
> f:=sin(x)^2-2*sin(x/5):plot(f(x),x=-Pi/2..Pi,y=-0.5..1.,
thickness=2,color=black); # Graficul funciei este cel din fig. 9.1.
Fig. 9.1
9.2.1. Grafic 2d
Cele mai solicitate comenzi ale sistemului Maple sunt comenzile plot( ) i
plot3d( ) care intervin la construirea graficelor pe plan i n spaiu, motiv pentru care fac
parte din nucleul sistemului.
Sintaxa comenzii plot( ) are forma
plot(f, h, v, opiune),
unde f este funcia dat, h i v sunt domeniile de variaie ale variabilei independente
(x) i variabilei dependente (y), iar opiune este o list de parametri care determin forma
graficului: grosimea, culoarea, tipul liniilor graficului, tipul axelor sistemului de coordonate
etc.
Pentru scoaterea mai multor grafice pe aceleai axe de coordonate n calitate de
prim argument al comenzii se va scrie o list de funcii.
Exemplu
149
S se reprezinte graficele funciilor
5
sin 2 sin ) (
2
x
x x f i
x e x g
x
sin 2 ) (
2
, ] ,
2
[
1
]
1
1
, 1
3
4
> radius(c1);evalf(%); # Raza cercului
1
16
25 16
1.250000000
> Equation(c1); # i ecuaia acestuia
+ x
2
y
2
2 x
3
2
y 0
Cu ajutorul comenzii detail( ) se obine descrierea complet a cercului c1, adic numele
obiectului, forma lui, numele centrului, coordinatele centrului, raza cercului i ecuaia
cercului.
Figuri geometrice interesante pot fi obinute cu ajutorul translrii, rotaiei i
deformrii figurilor geometrice de baz.
156
Exemplu
> with(geometry):
> point(P, 2 , 0), point(Q, 1, 0);
P, Q
> rotation(P1,P,Pi,'counterclockwise');
P1
> coordinates(P1);
[-2, 0]
> rotation(P2,P, Pi/2,'clockwise', Q);
P2
> coordinates(P2);
[1, -1]
> f:=y^2=x: parabola(p,f,[x,y]): point(OO,0,0):
rotation(p1,p,Pi/2,'counterclockwise',OO):
detail({p1,p});
name of the object: p {
form of the object: parabola2d
vertex: [0, 0]
focus: [1/4, 0]
directrix: 1/4+x = 0
equation of the parabola: y^2-x = 0 name of the object: p1 ,
form of the object: parabola2d
vertex: [0, 0]
focus: [0, 1/4]
directrix: 1/4+y = 0
equation of the parabola: x^2-y = 0 }
> rotation(p2,p,Pi,'counterclockwise',OO):
rotation(p3,p,Pi/2,
'clockwise',OO):
draw([p(style=LINE,thickness=2),p1,p2,p3],
style=POINT,symbol=DIAMOND,color=green, title=`Rotaia
unei
157
parabole`);# Graficul este cel din fig. 9.8
Fig. 9.8
Mijloacele sistemului Maple sunt comode pentru vizualizarea figurilor care se
construiesc.
Exemplu
Prezentm ilustrarea teoremei lui Pitagora, folosind comanda construciei unui poligon
(vezi fig. 9.9):
> with(plots):with(geometry):with(student):a:=3;b:=5;
5 :
3 :
b
a
> display(polygonplot([[0,0],[b,0],[0,a]],color=grey),
polygonplot([[b,0],[a+b,0],[a+b,b]],color=turquoise),
polygonplot([[a+b,b],[a+b,a+b],[a,a+b]],color=green),
polygonplot([[0,a],[a,a+b],[0,a+b]],color=cyan),
polygonplot({[[b,0],[a+b,b],[a,a+b],
[0,a]]},color=yellow),
158
scaling=constrained);
Fig. 9.9
9.3.2. Pachetul geom3d
Comenzile pachetului geometriei tridimensionale geom3d sunt asemen[toare
comenzilor geometriei bidimensionale (pachetul geometry). Pentru determinarea unui
punct, a unei linie, a unui plan sau a unei sfere utilizatorul poate apela la funciile point,
line, plane i sphere. De asemenea poate fi definit un segment (segment), un
segment orientat (dsegment), un triunghi (triangle), precum i un numr mare de
poligoane, de exemplu, cu comanda tetrahedron poate fi creat o piramid
Menirea multor funcii ale pachetului geom3d rezult din denumirea funciilor, iar
caracterul aplicrii este analog celui descris pentru pachetul geometry. Avnd n vedere
cele spuse ne mrginim doar la prezentarea a dou exemple: n fig.9.10 este reprezentat o
159
sfer n interiorul unui dodecadron, iar n fig.9.11 dou figuri n spaiu, unde una este
inclus n cealalt.
Fig. 9.10
Exemple
> with(geom3d): point(o,0,0,0): r := 1.:
> SmallStellatedDodecahedron(p,o,r):
> duality(dp,p,sphere(s,[o,MidRadius(p)])):
draw([p(color=pink),dp(color=blue)],cutout=8/9,lightmod
el=
light4, title=`Sfera n interiorul unui dodecadron `,
orientation=[-4,32]);
160
> TruncatedIcosahedron(tric,point(o,0,0,0),2.):
draw(tric,
cutout=7/8,lightmodel=light4):
> dodecahedron(dode,o,2.):
rad:=1.5:SnubDodecahedron(sdode
o,rad): draw([sdode(color=yellow),dode(color= coral,
cutout=
8/9)], style=patch,lightmodel=light2, orientation=[-
71,56]);
Fig. 9.11
9.4. Pachetul student
Acest pachet a fost elaborat special pentru studeni i elevi pentru a prezenta pas cu
pas realizrile metodelor matematice. Funciile pachetului sunt solicitate i de multe
persoane preocupate de utilizarea metodelor matematice n activitatea lor.
161
Funciile pachetului n majoritatea lor coincid cu denumirile acestora i au
semnificaiile de mai jos:
D operatorul diferenial;
Diff forma inert a comenzii calculrii derivatei;
Doubleint (Tribleint) forma inert a comenzii calculrii integralei duble
(triple);
Int forma inert a comenzii calculrii integralei;
Limit forma inert a comenzii calculrii limitei;
Product forma inert a comenzii calculrii produsului termenilor
unu irului;
Sum forma inert a comenzii calculrii sumei termenilor unui ir;
changevar schimbul de variabile;
completesquarte calculeaz un patrat complet;
distance calculeaz distana dintre dou puncte;
integrand extrage expresia de sub semnul integralei;
intercept calculeaz punctul de intersecie a dou curbe;
intparts integrare prin pri;
leftbox(rightbox) ilustrarea grafic a integrrii prin metoda
dreptunghiurilor din stnga (din dreapta);
leftsum(rightsum) aproximaia numeric a integralei cu
dreptunghiuri din stnga (din dreapta);
middlebox ilustrarea grafic a integrrii prin metoda
dreptunghiurilor centrale;
showtangent determin graficul funciei i a tangentei acesteia;
simpson calculeaz integrala prin metoda lui Simpson;
slope calculeaz i traseaz tangenta funciei ntr-un punct;
trapezoid calculeaz integrala prin metoda trapezului.
Exemple
> with(student):
162
> Tripleint(g(x,y,z),x,y,z);
Tripleint(x^2*y*z,x=0..1,y=0..2,z=0..3);
d
(
d
(
d
(
( ) g , , x y z x y z
d
(
(
0
3
d
(
(
0
2
d
(
(
0
1
x
2
y z x y z
> evalf(%);
3.000000000
> int(int(int(x^2*y*z,x=0..1),y=0..2),z=0..3);
3
> Tripleint(1,x=0..1,y=0..2,z=0..3);
d
(
0
3
d
(
0
2
d
(
0
1
1 x y z
> evalf(%);
6.000000000
> Tripleint(x+y+z,x=0..a,y=0..b,z=0..c);
d
(
0
c
d
(
0
b
d
(
0
a
+ + x y z x y z
> int(int(int(x+y+z,x=0..a),y=0..b),z=0..c);
+ +
1
2
a
2
b c
1
2
a b
2
c
1
2
a b c
2
> Doubleint(x^2/(1+y^2),x=0..1,y=0..1);
int(int(x^2/(1+y^2),x=0..1),y=0..1);
d
(
(
(
(
(
0
1
d
(
(
(
(
(
0
1
x
2
+ 1 y
2
x y
1
12
> evalf(%%);
0.2617993878
163
Pentru studeni i elevi pachetul student a fost extins cu scopul de a acoperi ct
mai multe domenii din matematic. Astfel, versiunea Maple 9 n plus la pachetul student
conine un ir de pachete de genul acestuia, ca, de exemplu, pachetele Student,
Student[LinearAlgebra], VectorCalculus, Student[Calculus1],
Student[Precalculus], VarationalCalculus .a. destinate disciplinelor
Calculus1 3 din planurile de nvmnt al universitilor din SUA i care se elibereaz
de firma productoare Waterloo Maple Inc. (vezi site-ul: www.maplesoft.com) la un pre
redus tinerilor ce-i continu studiile.
n continuare, ilustrm cum cu ajutorul unor comenzi ale acestor pachete se rezolv
diverse probleme.
9.4.1. Rezolvarea unui sistem de inecuaii
Pachetul plots conine o funcie grafic special inequal( ), care contureaz
domeniul soluiilor unui sistem de inecuaii.
Exemplu
S se determine domeniul soluiilor sistemului de inecuaii
'
+ <
<
> +
. 1 , 0 2
, 1
, 1
x y
y x
y x
> with(plots): inequal( {x+y>-1,x-y<=1,y<=2+.1*x},x=-
4..4,
y=-4..4,optionsfeasible=(color=magenta),optionsopen=
(color=white,thickness=3),optionsclosed=(color=black,
thickness=2),options excluded=(color=cyan)); # Domeniul
este cel din fig. 9.12, unde optionsfeasible red culoarea domeniului
interior punctele cruia satisfac toate cele trei inecuaii, optionsopen i
optionsclosed redau culoarea frontierelor nchise i deschise a domeniului.
164
Fig. 9.12
9.4.2. Rezolvarea ecuaiilor neliniare
Pentru rezolvarea ecuaiei neliniare x = f(x) aplicm metoda iteraiilor simple
(iteraiile succesive)
) (
1
k k
x s x
ncepnd cu o valoare iniial x0.
Exemplu
S se determine soluia ecuaiei
x x + ) 1 ln( 3
.
> f:=x->3*ln(x+1);x||0:=0.5;
:= f x 3 ( ) ln + x 1
:= x0 0.5
> x0:=.5;
:= x0 0.5
> for k from 1 to 20 do x||k:=evalf(f(x||(k-1))); od;
165
:= x1 1.216395324
:= x2 2.387646445
:= x3 3.660406248
:= x4 4.617307866
:= x5 5.177557566
:= x6 5.462768931
:= x7 5.598173559
:= x8 5.660378631
:= x9 5.688529002
:= x10 5.701181910
:= x11 5.706851745
:= x12 5.709388956
:= x13 5.710523646
:= x14 5.711030964
:= x15 5.711257755
:= x16 5.711359134
:= x17 5.711404452
:= x18 5.711424708
:= x19 5.711433765
:= x20 5.711437812
Pentru a fi convini c iteraiile
x
k converg ctre soluia ecuaiei, calculm soluia
acesteia cu comanda solve( ):
> f(x)=x;solve(%);
3 ( ) ln + x 1 x
, 0 3
_
,
LambertW , -1
1
3
1
e
( ) / 1 3
1
Rezultatul pare neobinuit: rdcina evident 0 i o rdcin sub forma funciei
speciale a lui Lambert. Cunoatem , comanda evalf( ) poate calcula valoarea numeric
a rdcinei a doua:
> evalf(%);
, 0. 5.711441084
Se observ c 5,711441084 i x20 = 5,711437812 sunt aproape egale (n limita a 5
cifre semnificative).
166
9.4.3. Reprezentarea iteteraiilor lui Newton sub form simbolic
n Maple, n general, cine caut gsete, adic nu exist problem simpl pentru
care s nu existe o interpretare grafic sau de alt natur. Ca s fim convini de cele spuse,
pentru demonstrarea rezolvrii problemei cu metoda analitic, vom recurge la exemplul
care a devenit clasic realizarea metodei lui Newton pentru rezolvarea ecuaiei neliniare
f(x) = 0.
Dup cum se tie, metoda lui Newton (sau iteraiile lui Newton)se reduce la
calcularea rdcinii prin intermediul formulei
) (
) (
1
i
i
i i
x f
x f
x x
+
+
, i = 1, 2, .
Pentru realizare procedeului determinrii soluiei n conformitate cu iteraiile de mai
sus, compunem programul ce urmeaz:
> restart: N1:=proc(expr,x)
local iter;
iter:=x-expr/diff(expr,x);
unapply(iter,x)
end;
:= N1 proc( ) end proc , expr x local ; iter ; := iter x / expr ( ) diff , expr x ( ) unapply , iter x
Pentru obinerea formulei iteraionale sub forma analitic n programul de mai sus
este inclus funcia (comanda) unapply( ). Acum, considernd funcia, rdcina creia
trebuie calculat, obinem expresia analitic:
> expr:=sin(x)^2-.5;
:= expr ( ) sin x
2
0.5
> F:=N1(expr,x);
:= F x x
1
2
( ) sin x
2
0.5
( ) sin x ( ) cos x
Considernd o valoare iniial
x
0 , pot fi calculate o parte a iteraiilor:
167
> x0:=0.2;
:= x0 0.2
> to 7 do x0:=F(x0);od;
:= x0 1.382611210
:= x0 0.117460944
:= x0 2.206529505
:= x0 2.360830634
:= x0 2.356194357
:= x0 2.356194490
:= x0 2.356194490
Se observ un salt la nceputul iteraiilor, iar apoi valorile rdcinii converg ctre
rezultatul final, adic ctre soluia ecuaiei. Ultimile dou iteraii demonstreaz acest fapt.
Dei ecuaia are dou rdcini, procedeul propus prezint doar o soluie. Obinerea
altor rdcini depinde de valoarea iniial: iteraiile lui Newton converg dac valoarea
iniial se afl n vecintatea soluiei ecuaiei.
168