Vous êtes sur la page 1sur 78

M A P L E

Software pentru calcule matematice


C a p i t o l u l 8
INTRODUCERE N MAPLE
8.1. Ce este Maple ?
8.1.1. Noiuni generale
Maple este un software specializat n calcule matematice. Posibilitile lui
cuprind aproape toate compartimentile matematicii contemporane.
Sistemul Maple se folosete n regim de dialog interactiv, precum i prin scrierea
programelor cu ajutorul limbajului su propriu (limbajul Maple), orientat spre calcule
matematice de orice natur. Spre deosebire de limbajele de programare de nivel nalt
(Fortran, Basic, C, Pascal etc.), Maple rezolv multe probleme matematice doar prin
apelare la comenzi, fr a fi nevoie s se compun programe aparte.
Baza sistemului Maple o constituie nucleul principal programul transformrilor
simbolice. n plus, Maple conine cteva mii (peste 3000) de funcii i proceduri speciale, care
formeaz aa-numitele biblioteci, orientate spre transformrile simbolice i calcule numerice din
diverse compartimente ale matematicii. Maple mai dispune de o grafic puternic i foarte
uor de utilizat, de o arhitectur modular, care permite adugarea de noi proceduri i
funcii.
Programul Maple opereaz deopotriv cu numere ntregi, fracionare i
aproximative, ceea ce-i permite sistemului s returneze rezultatele rezolvrii problemei
cu o exactitate ideal (exactitate infinit). Cu Maple soluia multor probleme poate fi
obinut nu numai numeric, ci i sub form analitic, adic cu ajutorul unor formule.
Din aceast cauz se mai spune c Maple este un program de matematici simbolice.
92
n zilele noastre Maple cu versiunile sale (Maple V, Maple 6 9 i recenta
versiune Maple 10) este cel mai performant sistem de calcule matematice n stare s
realizeze cele mai complexe proiecte. Maple execut transformri i simplificri
algebrice complexe; calculeaz sume i produse finite i infinite, limite i integrale;
rezolv numeric i analitic sisteme algebrice (i transcendente) de ecuaii i inecuaii;
calculeaz determinanii matricelor cu elemente simboluri matematice; determin toate
rdcinile unui polinom; determin numeric i analitic soluia sistemului de ecuaii
difereniale ordinare, precum i a unor clase de ecuaii cu derivate pariale etc.
Scrierea unui program n Maple este foarte simpl, fiind vorba doar de aplicarea
unor comenzi formate din termeni uzuali din vorbirea curent. Complexitatea
programelor i procedurilor depinde numai de utilizator, deoarece peste 80% din miile
de comenzi Maple sunt de fapt programe Maple. Programele Maple pot fi modificate i
extinse n aa mod nct s ofere utilizatorului soluiile optime ale problemei n cauz.
8.1.2. Fereastr Maple
Lansarea sistemului Maple se efectueaz prin comenzi specifice sistemului de
operare pe care este instalat. Vom considera n continuare sistemul de operare
Windows, caz n care lansarea se face prin activarea
icon-ului Maple sau
aplicaiei Maple din directorul n care a fost instalat sistemul Maple.
n urma efecturii acestei comenzi se deschide o fereastr (vezi fig.8.1) n care apare
prompterul > specific sistemului Maple.
93
Fig. 8.1. Aspectul general al ferestrei sistemului Maple
Sistemul Maple devine n acest fel interactiv, adic la fiecare comand sau
funcie tastat i urmat de ; sau : i, bineneles, acceptat de Maple (editarea
comenzii sau funciei ncheindu-se prin Enter), sistemul o execut i afieaz pe ecran
rezultatul, dac este cazul.
Fereastra Maple (vezi fig.8.1), la fel ca alte aplicaii de genul acesta, este o
fereastr Windows i const din Titlul ferestrei (ptrelul 1) dup care imediat urmeaz
Bara meniului de baz (ptrelul 2) care conine butoanele File, Edit, Wiew, Insert,
Format, Spreadsheet, Options, Window i Help. Sub bara meniului de baz se afl
Panoul instrumentelor de baz (ptrelul 3) cu butoane ce repet cele mai des utilizate
comenzi ale meniului de baz. Un clic pe buton este suficient ca comanda s fie
ndeplinit. Mai jos de panoul de instrumente se afl Panoul contextual (ptrelul 4)
forma cruia depinde de poziia cursorului. Cmpul de lucru (ptrelul 5) ocup cea
mai mare suprafa a ferestrei interfeei. Din cmpul de lucru fac parte Foile de lucru
Maple. Interfaa sistemului Maple este de tipul multe documente i permite lucrul cu
mai multe foi, care i formeaz aa-numitele Documente Maple. n partea de jos a
ferestrei se afl Linia stare (ptrelul 6) care are n componena sa mai muli parametri
caracteristici sistemului Maple, precum i o scurt informaie referitoare la comanda
aleas sau la butonul panoululi de instrumente.
Meniul de baz, la rndul su, const din:
File comenzi standard pentru operare cu fiiere;
Edit comenzi standard pentru redactarea unui text;
View comenzi standard de gestionare cu structura ferestrei Maple;
Insert inserarea diverselor texte, grafice 2- i 3-dimensionale;
Options stabilirea diverilor parametri;
Windows comenzi pentru a trece de la o foaie de lucru la alta;
Help conine informaie despre sistemul Maple.
Dialogul dintre utilizator i sistemul Maple este organizat sub forma unei sesiuni
utilizatorul introduce solicitrile ce in de soluionarea unei probleme (comenzi,
expresii, proceduri) care sunt preluate i prelucrate de sistem. Informaia introdus i
rezultatele prelucrrii ei compun Foaia de lucru care este format din:
1. domeniul de introducere (nregistrare) conine linii comenzi i ncepe cu
prompterul >(vezi ptrelele 1 din fig.8.2);
94
2. domeniul de afiare conine rezultatele prelucrrii informaiei introduse:
expresii analitice, obiecte grafice sau comunicri despre erorile comise (vezi
ptrelele 2 ale fig.8.2);
3. domeniul comentariilor text explic modul de funcionare al procedurilor.
Informaia liniei text nu este prelucrat de Maple. O linie comand poate fi
transformat ntr-o linie text prin intermediul butonului . Pentru
revenirea la linia iniial (linia text linia comand ) se apas .
Domeniul de nregistrare a informaiei i domeniul de afiare formeaz aa-numitul
grup de calcule, care este marcat n stnga de o parantez ptrat. Un grup de calcule
poate conine mai multe domenii de nregistrare i, respectiv, domenii de afiare.
Fig.8.2. Foaie Maple
Ceea ce caracterizeaz, ns, un grup este c toate instruciunile grupului se ndeplinesc
la o singur apsare Enter, adic toate instruciunile domeniului de lucru vor fi
ndeplinite.
95
Fig.8.3. Domeniul de afiare
Exemple
1) Cu ajutorul secvenei
> 2*5^3/125-x^2*sin(z-Pi)-13/52;
) sin(
4
7
2
z x +
# programul a ndeplinit toate operaiile indicate n expresia nscris n linia
stare i a afiat rezultatul ) sin(
4
7
2
z x + . Mai mult, observm c programul a
fcut i unele modificri: a simplificat fracia
4
1
52
13
.
2) Expresia
x x
4 4
cos sin
64
48
+ +
poate fi simplificat cu ajutorul comenzii combine( ) dup cum urmeaz
> combine(-48/64+sin(x)^4+cos(x)^4;
( ) x 4 cos
4
1
i n cazul acestui exemplu sistemul a executat simplificrile posibile. Din
96
cursul de trigonometrie se tie c prin intermediul formulelor
) 3 2 cos 4 4 (cos
8
1
sin
4
+ x x i
) 3 2 cos 4 4 (cos
8
1
cos
4
+ + x x
rezult relaia x 4 cos
4
1
4
3
cos sin
4 4
+ + . Programul a efectuat, de
sine stttor, i a redus termenii, adic x x 4 cos
4
1
64
48
4 cos
4
1
4
3
+ .
Expresiile n Maple dispun nume. Operatorul de atribuire este :=. n cazul n
care expresia are un nume poate fi afiat doar numele acesteia.
Exemplu
S se atribuie expresiei x x
4 4
cos sin
52
39
+ + numele C. Acest lucru se
obine cu
> C:=(-39/52+sin(x)^4+cos(x)^4;

4 4
) cos( ) sin(
4
3
: x x C + +
Programul a simplificat fracia -
52
39
. Cu ajutorul comenzii combine( )
programul simplific expresia
4 4
) cos( ) sin(
4
3
: x x C + + , atribuindu-i
un alt nume
> R:= combine(C);
R:= ) 4 cos(
4
1
x
Acum apelnd la R, obinem rezultatul de mai nainte:
> R;
97
( ) x 4 cos
4
1
Acelai rezultat se obine i dac
> C := combine(C); C;
C := ( ) x 4 cos
4
1
( ) x 4 cos
4
1

Maple este un limbaj al expresiilor. Expresiile n Maple conin operatori sau
caractere speciale, funcii i nume de variabile. Expresiile introduse de utilizator se
afieaz pe ecran (pe spaiul de lucru) i sunt interpretate i evaluate de instruciunile
programului. Instruciunile (comenzile) Maple, de cele mai multe ori, au forma
> variabil: = expresie ;
fiind foarte scurte i extrem de simple, se mai numesc instruciuni-expresie.
Maple mai admite nc un tip de instruciuni i anume instruciuni-procedur:
> Nume_comand (argument, opiuni);
Numele unei comenzi, de regul, corespunde menirii acesteia. Astfel, sum
nseamn sum, det determinant, int integral, intparts - integrare prin pri,
max maximum, select selecie, solve rezolvare, subs substituire,
inverse invers, evalt evaluare, simplify simplificare, expr expresie,
combine combinaie, sqrt radical de ordinul doi etc.
Toate instruciunile Maple pot fi consultate. Pentru aceasta este necesar ca dup
? s urmeze denumirea (chiar i ipotetic) a instruciunii, urmat de Enter sau clic
pe .
Dup aceast scurt expunere a unor comenzi cititorul este invitat s nceap s
experimenteze cu Maple, s rezolve ct mai multe i diverse probleme. n felul acesta va
acumula noi cunotine despre sistemul Maple. Totodat, pentru o mai profund
cunoatere a programului, este bine s tim structura acestuia, parametrii instruciunilor
i alte noiuni legate de acest sistem.
98
8.2. Obiecte Maple
8.2.1. Limbajul sistemului Maple
Ca orice alt limbaj algoritmic de programare Maple const din caractere,
expresii, sintax.
Caracterele limbajului Maple sunt literele mari i mici ale alfabetului latin,
cifrele arabe i nc 32 de caractere speciale, dintre care menionm: _ , ;, :, -, *, /, ^, !,
=, <, >, (, ), [, ], {, }, , %, #, ? etc.
Sintaxa cuprinde regulile de nscriere a cuvintelor n propoziii i determin
sensul dat de Maple cnd primete o comand. Dac comanda, din punct de vedere
sinacsic, nu este scris corect Maple semnalizeaz acest fapt printr-un mesaj de tipul
syntax error, indicnd totodat i locul unde a fost comis eroarea.
Exemple

> ++7;
Syntax error, `+` unexpected
Sistemul Maple nu admite consecutiv dou semne"+". n Maple exist mai
multe forme de scriere a numerelor cu virgul mobil:
> 3.7e-3, 3.7E-03, +0.0037 ;
.0037, .0037, .0037
> Float(14142, -4) ;
1.4142
> 5.e-4 ;
Syntax error, missing operator or `;`
Scrierea corect este 5.0e-4 (ntre punctul zecimal i sufixul exponential
99
neaparat trebuie s fie o cifr) si returneaz .0050
Cuvinte rezervate sau cuvinte-chee n Maple sunt cuvintele cu sensuri
speciale care n programe nu pot fi folosite ca variabile.
Exemple
Iat cteva cuvinte rezervate n Maple:
of, then, else, fi, for, in, by, to, while, do,
od, proc, local, end, option, global, read,
stop, union, minus, or, not i altele.
Separatori Maple. n Maple pentru separarea uor expresii, comenzi, funcii
se folosesc spaiile sau semnele de punctuaie. Pentru obinerea spaiilor ntre simboluri
(sau expresii) pot fi folosite tastele: Space, Tab, Enter. Spaiul liber (blank) se obine
cu ajutorul tastelor Space sau Tab, iar un spaiu ntre linii cu tasta Enter.
Semnele : i ; se folosesc pentru separarea expresiilor (propoziiilor). Deosebirea
dintre ele este urmtoarea: semnul : n cadrul unei sesiuni interactive nu permite
afearea rezultatului executrii operaiei.
Expresiile precedate de semnul # fac parte dintr-un comentariu (nu influeneaz
programul Maple).
Exemple
> x:=y ;
x := y
> x:=y ;
Syntax error, `=` unexpected

Eroarea apare n urma scrierii incorecte: ntre : i = este un spaiu liber.
Spaiile libere nu sunt admise n interiorul lexemelor.
> C := 2*t + x*z ; # 11 septembrie 2001 a fost ziua atentatului
sngeros asupra Americii
100
C := 2 t + y z
Tot ce urmeaz dup semnul # nu este luat n considerare de programul
Maple.

Coninutului unei comenzi poate fi transferat i n alt linie
dac se acioneaz Shift-Enter.
8.2.2. Obiecte Maple
Expresii. Expresiile sunt noiunile de baz cu care opereaz Maple. O expresie
const dintr-un nume, formule i diverse tipuri de date. Ordinea executrii operaiilor n
expresie este cea cunoscut n matematica elementar: operaiile din paranteze, apoi
ridicarea la putere, pe urm nmulirea i mprirea i, n sfrit, adunarea i scderea.
n cazul cnd pentru determinarea ordinii operaiilor unei expresii exist mai multe
sensuri se folosesc parantezele rotunde(, ). Maple opereaz cu numere i nume unite
ntre ele cu operatori matematici: + (adunare), - (scdere), * (nmulire), / (mprire), ^
(ridicare la putere), @ (compoziie) etc. Practic, lungimea unei expresii nu este limitat.
Exemple
1) Expresii scrise n Maple precum i rezultatul acestora afiat pe ecran:
> a b + c/d;
a - b +
d
c

> 5*t^3 + 2*t^2 t + 19.37;


5 t
3
+ 2 t
2
- t + 19.37
> x^2/9 - y^2/25;

2 2
25
1
9
1
y x
2) > 6 + 8*5 - 4 + 16 ;
101
58
> (6+8)*5-4+16;
82
> (6+8)*(5-4)+16;
30
> (a+b+c)/(a*c);

ac
c b a + +
Dac expresia conine paranteze de prisos analizatorul sintaxic le va omite.
Deseori se confund x/y*z cu x/(x*y) sau cu (x/y)*z. Rezultatele acestor secvene
sunt:

y
xz
,
yz
x
,
y
xz
.
Numere. Cele mai simple obiecte, totodat i cele mai simple expresii, cu care
opereaz Maple sunt cele legate de numere, linii i nume.
Numere ntregi i raionale. Maple deopotriv opereaz cu numere scrise sub
forma zecimal i cea fraionar. Numerele ntregi sunt succesiuni formate din una sau
mai multe cifre. Cifra zero de la nceputul unui numr ntreg este neglijat de programul
Maple. Numerele fracionare au n componena lor operatorul de mprire (/) pentru a
evidenia numrtorul i numitorul.
Exemple
> 00059300461254000;
59300461254000
> - 06354129087;
-6354129087
> + 946713248295100;
946713248295100
102
Constante matematice. Printre constantele matematice fac parte:

Pi 3,141592653589793238462643;

exp(1) baza logaritmului natural;


I
1
(unitatea imaginar);

infinity infinit;

-infinity minus infinit;


true, false constante din algebra Bool, etc.


Posibilitatea exprimrii valorilor numerice sub forma lor exact (de exemplu,
3
1

i nu 0,33333 ) este un avantaj al algebrei simbolice. De regul, valorile exacte se
pstreaz pe ntreg mersul calculelor. n anumite cazuri valorile exacte se transform n
valori aproximative. Se ntmpl acest lucru atunci cnd expresiile conin mai multe
tipuri de date.
Exemple
> 2/7 + 5;

7
37
> 2/7 + 5.0;
5.285714286
> Pi/3; Pi/3.0;

3
1
Pi
.3333333333 Pi
103
Linii. Succesiunea format din caractere de orice natur i cuprins ntre
ghilimele inverse (`) poart denumirea de linie Maple. Imaginea ghilimelelor
corespunde apostrofului. Caracterele speciale ( +, ., / etc ) pot fi parte component a
unei linii numai dac sunt cuprinse ntre ghilimele, de altfel sunt interpretate ca
operatori.
Exemple
> `Grigore C. Moisil este cel care a pus bazele
informaticii n Romnia`;
Grigore C. Moisil este cel care a pus bazele informaticii n Romnia
> `27x + 5xyz - 3x`;
27x + 5xyz - 3x
Semnele + , - fac parte din componena liniei. La fel i semnul / din exemplul ce
urmeaz. Este parte component a liniei
> ` mat.inv.exist./det.dif.zero`;
mat.inv.exist./det.dif.zero
> 27*x +5*x*y*z - 3*x; # Deoarece expresia nu conine ghilimele rezult
c + i sunt operatori matematici
24x + 5xyz
> integ.def;
integdef
Nume. Prin nume n Maple se nelege o linie format din caractere (a z, A
Z), cifre ( 0 9) i semnul _ (spaiu). Numele, la fel ca numerele ntregi, pot avea o
lungime infinit. Numele Matematica1 este diferit de numele matematica1. Orice
linie, adic orice secven de semne, luat ntre ghilimele inverse, poate fi un nume.
Numele indicat de o linie format din semne permise coincide cu numele format din
aceleai semne fr ghilimele. Astfel, `Matematica1` i Matematica1 este unul i
acelai nume. Ghilimelele inverse permit includerea ghilimelelor n textul unei linii.
Funcia type deosebete nume de tip linie string i nume indexate indexed.
Exemple
> 2*m^3 - 3 ;
104
2m
3
3
> t : = 5 ; t^2 - 9*t + 10;
t := 5
-10
> `ghilimele `` inverse`;`dintr``un numr`;
ghilimele `inverse
dintr`un numr
> length(0), length(147), length(`Maple este un pachet
de programe matematice`), length(abc),
length(x+7*x^2+11);
0, 3, 44, 3, 18
> P[3,4], B[i,2*k-3*m-1], M[3][7], aliaj[Fe,Cu][1,2];
P3,4, Bi,2k-3m-1,
7
3

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

solve rezolv n mod analitic ecuaii liniare i neliniare, inegaliti i


sisteme de ecuaii,

fsolve rezolv numeric ecuaii liniare i neliniare, inegaliti si


sisteme de ecuaii,

dsolve rezolv ecuaii difereniale ordinare,


rsolve rezolv ecuaii recurente.


Exemple
> a = b + 21 ;
a = b + 21
> a;
112
a
> b;
b
> sols:= solve({2*x = 8, x - 2*y = -1}, {x, y});
sols := {x = 4, y =
2
5
}
> x;
x
> y;
y
8.3.2. Ditto operatori
Ditto operatorii sunt de tip nulari i se refer la expresiile calculate anterior.
Forma acestor operatori este % , %% i %%% . Operatorul % recheam
rezultatul comenzii anterioare, operatorul %% recheam rezultatul comenzii
executate pn la rezultatul anterior i, n sfrit, %%% recheam rezultatul de mai
nainte.
Exemplu
S se calculeze soluia sistemului de ecuaii liniare

'

+
+ +
+ +
. 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:

f@g cnd se dorete crearea compoziiei funciilor f i g sau


f@@n cnd se aplic f de n ori.


Exemple
> (ln@sin)(x);
ln(sin(x))
> > f:= x -> 2/(1+x^2); (f@@6)(x);
:= f x
2
+ 1 x
2
2
+ 1
4

_
,

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

define (aa(oper)), unde oper este un nume a operatorului, aa este nume a


obiectului,
define (oper, propriety1, propriety2, ), unde oper este nume, iar
propriety sunt proprieti ale operatorului. Cu aceste comenzi se determin
regulile pentru calcule i de simplificare ale operatorului.
Exemplu
> define(Linear(`&L`));
> &L(5*(x^2)+3*(y+2*x) 8x);
5 &L(x
2
) + 3 &L(y) - 2 &L(x)
8.4. Funcii Maple
Maple ofer mai multe posibiliti de prezentare a funciilor. Mai nti, dac
expresiei i se atribuie un nume, acest lucru nseamn c numele propriu-zis este o
funcie n raport cu variabilele care fac parte din expresie.
Exemplu
> h := x^3 - 5*sin(x) + 7*cos(x)^2 - 4.575:
> h;
x
3
- 5 sin(x) + 7 cos(x)
2
- 4.575
Prin intermediul operatorului :=" variabila h coincide cu valoarea expresiei
x
3
-5sin(x)+7cos(x)
2
-4.575 . Introducnd acum
> x; # n cazul dat variabila x nu are o valoare numeric
x
116
Dac ns
> x := 3;
x := 3
> h; # h va primi valoarea :

22.425 - 5 sin(3) + 7 cos(3)
2
sau, dac se aplic ditto operatorul, rezult c
> evalf(%);
28.57999596
adic am obinut valoarea expresiei x
3
- 5 sin(x) + 7 cos(x)
2
- 4.575 pentru x =
3. Prin urmare, variabila h este valoarea expresiei matematice cu numele h.
Pentru diverse valori atribuite variabilei x i h va primi valori diferite. Prin
urmare, variabila h este o funcie de x.
Maple conine un numr mare de funcii: funcii standard i funcii speciale. Iat
lista unora din aceste funcii (vezi tab. 8.1)
Tabelul 8.1. Funcii standard
Scriere
matematic
Scriere n
Maple
Scriere
matematic
Scriere n
Maple
e
x
exp(x)
cosecx
csc(x)
lnx
ln(x)
arcsinx
arcsin(x)
lgx
log10(x)
arccosx
arccos(x)
logax
log[a](x)
arctgx
arctan(x)
x
sqrt(x)
arcctgx
arccot(x)
|x|
abs(x)
shx
sinh(x)
sinx
sin(x)
chx
cosh(x)
cosx
cos(x)
thx
tanh(x)
tgx
tan(x)
cthx
coth(x)
ctgx
cot(x)
(x)
dirac(x)
secx
sec(x)
(x)
Heaviside(x)
Variabila h poate fi variabil i pentru ali operatori de atribuire.
117
Exemplu
> y:= 2*h^2-sqrt(13.5)*h + 2;# h este variabil pentru expresia y
y := 2 (22.425 - 5 sin(3) + 7 cos(3)
2
)
2
--80.39471122 + 18.37117307 sin(3)

25.71964230 cos(3)
2
> evalf(%);
1530.622728
8.5. Structuri Maple
Expresiile sunt formate din mai multe tipuri de obiecte. Printre acestea fac parte
string, interger, fraction, float, function, operatorii aritmetici +,
*, ^ etc. Tipul obiectului poate fi definit cu ajutorul comenzii whattype( ).
Exemple
> whattype(21/315);
fraction
> whattype([a1,a2,a3,a4,a5,a6]);
list
> whattype([3,4,7,8,9,13],[a[1],a[2],a[3]]);
exprseq
> whattype((z^3 + 2*z -7)*(x - y));
*
Tipul obiectului de asemenea poate fi consultat n orice moment ns nu poate fi
afiat dinnainte aa cum se procedeaz, de exemplu, n limbajul Fortran cnd tipul
variabilei se stabilete pe ntreg parcursul funcionrii programului. Tipul variabilei
poate fi obinut cu ajutorul comenzii type( ).
Exemple
118
> H:= ` Romnia - ar pitoreasc`; M:= `Maple este un
program universal de calcule matematice`;
H := Romnia - ar pitoreasc

M:= Maple este un program universal de calcule matematice
> type(H, integer); type (M, fraction); type(M,
string);
false
false
true
> whattype ( x= z^3 +z - 1);
=
Analiza structurii obiectelor se efectueaz cu comanda hastype( ). n felul
acesta se stabilete dac un obiect conine subobiecte de un anumit tip. Comanda
has( ), la rndul ei, indic dac n componena obiectului se conine un anumit
subobiect.
Exemple
> hastype(205 +13/15, fraction); hastype(205+13/15, integer);
true
false
> hastype(x^2-7*x-5, `*`);
true
> hastype(x^2-7*x-5, -5);
true
> has(x^2-7*x-5, 2*x); has(x^2-7*x-5, -7*x);
false
true
> hastype(int(sin(sqrt(x)), x), fraction); int(sin(sqrt(x)),n x);
true
119
2 sin(

x ) - 2

x cos(

x )
Orice obiect Maple const din subobiecte care, la rndul lor, au n componena
lor obiecte de alt tip (de un nivel mai mic) i tot aa pn cnd se va ajunge la obiectele
de baz.
Mijloacele Maple permit examinarea i extragerea elementelor bazice care fac
parte din obiect. Aceast posibilitate este de mare folos atunci cnd se opereaz cu
obiecte mari. Pentru astfel de cazuri sunt prevzute comenzile op( ) i nops( ), care se
refer n mod direct la tipului obiectului. n cazul cnd obiectul supus analizei este o
expresie comanda nops( ) va indica numele subobiectului (expresiei) de prim nivel care
este parte component a obiectului, iar comanda op( ) poate fi aplicat pentru
evidenierea acestor subobiecte.
Exemple
> f:=6.5*x^(1/3) + 3*sin(x)^2*cos(x) + 2*sqrt(x) 3*x 7;
f := 6.5
x
1/ 3
+ 3sin(x)
2
cos(x) + 2

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

= 0 se numesc valori proprii ale matricei A. Prin


urmare,
> val_proprii:=evalf(solve(P[3](lambda), lambda),4);
:= val_proprii , , -1. 6.236 1.764
Ultimul rezultat se obine i cu ajutorul comenzii special prevzute pentru
calcularea valorilor proprii:
> evalf(eigenvals(A),4);
, , -1. 6.236 1.764
Din algebr se tie c pentru ficare valoare proprie a matricei exist i un vector
propriu x care stisface relaia Ax = x. Pentru matricea A, avem:
> vectori_proprii:=evalf(eigenvects(A,'radical'),4);
vectori_proprii [ ] , , 6.236 1. { } [ ] , , 1.412 1.981 1. [ ] , , 1.764 1. { } [ ] , , -.0786 -3.981 1. , , :=
[ ] , , -1. 1. { } [ ] , , 1. 1. -1.
Menionm, rezultatul a fost afiat sub forma:
[num, r, {vector}]
Aici num este valoarea proprie a matricei, r multiplicitatea valorii proprii, vector
vectorul propriu, iar radical este cheiea regimului de obinere a tuturor valorilor proprii.
9.1.3.3. Metoda lui Gauss
Cu ajutorul comenzilor din pachetele linalg i LinearAlgebra o matrice
poate fi transformat n diverse forme speciale. Astfel, cu ajutorul comenzii gausselim()
matricea A obine forma triunghiular. Metoda lui Gauss se folosete cu ajutorul comenzii
ffgausselim( ). Astfel, pentru matricea B se obine:
> ffgausselim(B);
142

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
[

x pe aceleai axe de coordinate.


> f:=sin(x)^2-2*sin(x/5):g:=2*exp(-2*x)*sin(x):
plot([f,g],
x=-Pi/2..Pi,- 0.5..1,color=[black,black],
linestyle=[4,1],
labels=["x","Grafice"],title=" Afiarea\n f(x) i g(x)
pe
aceleai axe",legend=["f(x)","g(x)"],thickness=2);
Fig. 9.2
Cu plot( ) se reprezent i puncte pe plan dac acestea se scriu sub forma unei
liste de liste i se impune condiia style = POINT. Dac ns condiia style =
POINT, pe foaia de lucru va aprea o linie frnt care unete punctele listei.
Exemplu
150
S se reprezinte punctele listei
1
l = [[-1, 0,3],[-0,5, -0,1], [0, 0,4], [0,5, -0,2], [1, 0,3] ,
[1,5, 0,1]] pe plan cu i fr condiia style = POINT.
> l[1]:=[[-1,.3],[-0.5,-.1],[0, .4],[.5, -.2],[1, .3],
[1.5,.1]]:
plot(l[1],axes=normal,style=POINT,color=black,symbol=DI
AMOND,
symbolsize=30,title="Puncte pe plan"); # Vezi fig. 9.3.
> plot(l[1],axes=normal,color=black,
symbolsize=30,thickness=2);
# Vezi fig. 9.4.

151
Fig. 9.3 Fig. 9.4
Pentru obinerea graficului unei funcii parametrice (
) (t x
i
) (t y
,
] , [ b a t
) comanda plot( ) se scrie sub forma:
> plot(
], .. ), ( ), ( [ b a t t t
<opiuni>);
Exemplu
S se reprezinte graficul funciei
] 2 , 0 [ , 5 cos , 3 sin t t y t x
.
> x:=sin(3*t):y:=cos(5*t):plot([x(t),y(t),t=0..2*Pi],
color=black, thickness=2); # Graficul este cel din fig. 9.5.
152
Fig. 9.5
9.2.2. Grafic 3d
Graficul funciei de dou variabile z = f(x, y) poate fi obinut cu ajutorul comenzii
plot3d( ), comand cunoscut sub urmtoarele formate:
plot3d(expresie, x=a..b, y=c..d, p)
plot3d(f, a..b, c..d, p)
plot3d([expresiaf, expresiag, expresiah], s=a..b, t=c..d, p)
plot3d([f, g, h], a..b, c..d, p)
Primele dou formule construiesc graficul unei suprafee, a doua i a treia grafice
pentru funcii date parametric. Aici a, b, c i d sunt constante numerice sau expresii de
tip real, p este un parametru care poate fi: axefont, font, color, coords,
labelfont, thickness, style, symbol, title, linestyle, etc.
Exemplu
S se construiasc graficul funciei
] , [ , , 3 cos 2 sin + y x x y x x z
.
> plot3d(x*sin(2*y)+y*cos(3*x),x=-Pi..Pi,y=-Pi..Pi);
153
Fig. 9.6
Pentru funciile implicite
0 ) , , ( z y x F
graficul se obine cu ajutorul comenzii
implicitplot3d( ).
Exemplu
Pentru funcia ] 2 , 2 [ , , , 4
2 2 2
+ + z y x z y x avem sfera din fig. 9.7.
> with(plots):implicitplot3d(x^2+y^2+z^2=4,x=-2..2,y=-
2..2,z=-
2..2,scaling=CONSTRAINED,color=black,style=hidden);
154
Fig. 9.7
9.3. Pachete pentru aplicaii n geometrie
Pentru manipularea cu pachetele cu aplicaii n geometrie Maple dispune de
pachetele geometry i geom3d. Primul se refer la geometria euclidian (geometria
2D), iar cel de al doilea la geometria din spaiu (geometria 3D). Obiectele geometrice
sunt caracterizate de diveri parametri.
nainte de a ncepe lucrul, pachetele geometry i geom3d trebuie ncrcate.
Structurile geomeztrice definite sau determinate acioneaz doar n cadrul pachetului
respectiv.
9.3.1. Pachetul geometry
Pachetul geometry conine peste o sut de comenzi care intervin n planimetrie.
Obiectele geometrice se definesc n mod obinuit: punctul este definit de
coordonatele sale (comanda point), dreapta de dou puncte sau de o ecuaie (comanda
155
line), cerc (circle) prin trei puncte sau o ecuaie sau de centrul i raza (diametrul)
lui.
Exemple
Pentru un cerc dat de trei puncte distincte s se determine coordonatele centrului, raza i
ecuaia lui. Graficul poate fi obinut cu comanda draw
> with(geometry):
> circle(c1,[point(A,0,0),point(B,2,0),
point(C,1,2)],'centername'=O1): center(c1),
coordinates(center(c1)); # Centrul i coordonatele lui
, O1

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

Vous aimerez peut-être aussi