Documente Academic
Documente Profesional
Documente Cultură
http://maxima.sourceforge.net
Simina Mariş
Cuprins
1 Prezentare generalǎ 1
4 Aritmeticǎ. Polinoame. 3
5 Trigonometrie 4
9 Reprezentǎri grafice 6
1 Prezentare generalǎ
Maxima este un CAS care a evoluat din Macsyma. Acest limbaj poate manipula expresii simbolice şi
numerice, inclusiv integrǎri, diferenţieri, serii Taylor, transformǎri Laplace, ecuaţii diferenţiale, sisteme
de ecuaţii liniare, polinoame, mulţimi, liste, vectori, matrici, tensori.
Pentru aflarea unor detalii despre o anumitǎ funcţie func, se poate folosi şi comanda example(func).
Comanda example() returneazǎ lista tuturor exemplelor disponibile.
1
O linie de comandǎ are un numǎr, de exemplu (%i1), (%i2), etc. şi se terminǎ prin ”;” (dacǎ se
doreşte afişarea rezultatului) sau ”$” (dacǎ nu se doreşte afişarea rezultatului). Rezultatele afişate sunt
numerotate dupǎ liniile de comandǎ corespunzǎtoare, astfel: (%o1), (%o2), etc.
Pentru a forţa ca o expresie sǎ rǎmânǎ neevaluatǎ, se foloseşte ”’”. Astfel, de exemplu, rezultatul
d
comenzii ’diff(3*x,x) este (3x), pe când rezultatul comenzii diff(3*x,x) este 3.
dx
Pentru a repeta o comandǎ se foloseşte ”’’”, operator care forţeazǎ reevaluarea comenzii respective (de
exemplu, pentru repetarea comenzii de la linia (%i3) se poate scrie ’’%i3).
Pentru a se referi la un rezultat deja calculat, se poate folosi numǎrul liniei pe care este afişat acel rezultat.
De exemplu, putem avea secvenţa:
(%i1) diff(3*x,x);
(%o1) 3
...
(%i4) integrate(%o1,x);
(%o4) 3x
Pentru a anula valoarea unei variabile, folosim funcţia kill. De exemplu, putem avea urmǎtoarea
secvenţǎ:
(%i1) x:3;
(%o1) 3
(%i2) x;
(%o2) 3
(%i3) kill(x);
(%o3) done
(%i4) x;
(%o4) x
Câţiva dintre cel mai frecvent folosiţi operatori sunt daţi ı̂n lista de mai jos:
2
Operator Sintaxǎ
+, - a+b, a-b suma a + b (diferenţa a − b)
* a*b produsul a · b
a
/ a/b câtul
b
^, ** a^b, a**b puterea ab
. A.B ı̂nmulţirea matricilor A şi B
! n! factorialul 1 · 2 · ... · n
!! n!! dublul factorial
entier entier(a) partea ı̂ntreagǎ a lui a
max, min max(a,b,c), min(a,b,c) maximul (minimul) dintre a, b, c
# a#b diferit a 6= b
: f:expr operatorul de asignare f = expr
:= f(x):=sin(x) defineşte funcţii
= a=b ecuaţia a = b
and, or, not operatori logici
4 Aritmeticǎ. Polinoame.
assume(pred_1) presupune cǎ pred_1 este adevǎrat, iar forget(pred_1) anuleazǎ presupunerea cǎ
pred_1 este adevǎrat. De exemplu, putem avea:
(%o1) [x > 0]
(%o2) x
(%o3) [x > 0]
(%o4) [x < 0]
(%o5) −x
divide(p1,p2,x1,...,xn) dǎ câtul şi restul ı̂mpǎrţirii polinomului p1 la p2, câtul fiind un polinom ı̂n
nedeterminatele x1,...,xn.
3
num(expr) şi denom(expr) returneazǎ numǎrǎtorul, respectiv numitorul expresiei expr.
gcd(f,g) returneazǎ cel mai mare divizor comun al numerelor (sau polinoamelor) f,g.
x!
binomial(x,y) returneazǎ Cxy = .
(x − y)! y!
next_prime(x), respectiv prev_prime(x) returneazǎ numǎrul prim urmǎtor, respectiv anterior lui x.
5 Trigonometrie
Funcţiile trigonometrice cel mai des folosite sunt: sin, cos, tan, cot, asin, acos, atan, acot, sinh,
cosh, tanh, coth.
Se mai folosesc trigexpand(expr) pentru a dezvolta expresia trigonometricǎ expr şi trigreduce(expr)
pentru a simplifica expresia trigonometricǎ expr.
solve([ec_1,...ec_n],[x_1,...,x_n])
algsys([ec_1,...ec_m],[x_1,...,x_n])
În plus, pentru a rezolva un sistem liniar, se poate folosi şi comanda
linsolve([ec_1,...ec_m],[x_1,...,x_n])
Pentru a defini o relaţie funcţionalǎ ı̂ntre variabilele f şi x, folosim comanda depends(f,x). De exemplu:
(%i1) depends(f,x);
(%o1) [a(b)]
Anularea tuturor dependenţelor funcţionale ale variabilei f se poate realiza cu ajutorul comenzii
remove(f,dependency).
Derivata de ordin n a unei expresii expr ı̂n raport cu o variabilǎ var se calculeazǎ cu comanda
diff(expr,var,n). De exemplu, putem scrie
(%i1) f:3*x^3+1;
(%o1) 3x3 + 1
(%i2) diff(f,x,2);
(%o2) 18x
Dacǎ dorim ca aceastǎ derivatǎ sǎ nu fie calculatǎ explicit, putem folosi operatorul ’. De exemplu:
(%i1) diff(5*%e^x+sin(x),x)
(%o1) 5 ex + cos x
4
(%i2) ’diff(5*%e^x+sin(x),x)
d
(%o2) (5 ex + sin x)
dx
Integrala nedefinitǎ unei expresii expr ı̂n raport cu o variabilǎ var se calculeazǎ cu comanda
integrate(expr,var). Integrala definitǎ de la a la b a expresiei expr ı̂n raport cu variabila var se
calculeazǎ cu comanda integrate(expr,var,a,b). Dacǎ dorim ca integrala sǎ nu fie calculatǎ explicit,
folosim ’integrate(expr,var) sau ’integrate(expr,var,a,b). Exemplificǎm mai jos aceste comenzi:
(%i1) integrate(sin(x),x);
(%o1) − cos(x)
(%i2) integrate(sin(x),x,0,%pi/2);
(%o2) 1
(%i3) ’integrate(sin(x),x);
Z
(%o1) sin(x) dx
(%i2) ’integrate(sin(x),x,0,%pi/2);
Z %pi
2
(%o2) sin(x) dx
0
Dezvoltarea espresiei E(x) ı̂n serie de puteri ı̂n jurul lui a se realizeazǎ cu comanda powerseries(E(x),x,a).
Dezvoltarea ı̂n serie Taylor a unei expresii f (care depinde de variabila x) ı̂n jurul punctului a reţinând
termenii pânǎ la puterea n a lui x se obţine folosiind comanda taylor(f,x,a,n). De exemplu, comanda
%e (x − 1)2 %e (x − 1)3
taylor(%e^x,x,1,3) are ca rezultat %e + %e(x − 1) + + + ...
2 6
Funcţia desolve(ec,var) rezolvǎ ecuaţia ec ı̂n raport cu variabila var, iar desolve([ec1,ec2],[var1,var2])
rezolvǎ sistemul [ec1,ec2] ı̂n raport cu variabilele [var1,var2]. Relaţiile funcţionale trebuie specificate
atât ı̂n scrierea ecuaţiilor, cât şi ı̂n scrierea variabilelor.
(%i1) desolve(diff(x(t),t)=k*x(t),x(t));
Pentru a specifica o condiţie iniţialǎ şi a rezolva problema Cauchy ataşatǎ, folosim funcţia
atvalue(expr,var=val,val_expr) (adicǎ: expr ı̂n val ia valoarea val_expr). De exemplu:
(%i2) atvalue(x(t),t=0,2);
(%o2) 2
(%i3) ’’%o1;
5
(%o3) x(t) = 2 %ekt
O altǎ modalitate de a rezolva ecuaţiile diferenţiale este folosirea funcţiei ode2 cu urmǎtoarea sintaxǎ:
ode2(ec, var_dep, var_indep). De exemplu, pentru a rezolva ecuaţia ẋ = x2 , unde x = x(t), putem
scrie:
(%i1) ode2(’diff(x,t)=x^2,x,t);
1
(%o1) − = t + %c
x
Pentru a afla soluţia unei probleme cu date iniţiale de ordinul 1 se foloseşte funcţia
ic1(sol, var_indep=x_0,var_dep=y_0), unde sol este soluţia ecuaţiei diferenţiale datǎ de funcţia
ode2. Astfel, dacǎ la exemplul precedent adǎugǎm condiţia iniţialǎ x(0) = 1, obţinem:
(%i2) ic1(%o1,t=0,x=1);
1
(%o2) − =t−1
x
Pentru a afla soluţia unei probleme cu date iniţiale de ordinul 2 se foloseşte funcţia
ic2(sol, var_indep=x_0,var_dep=y_0), unde sol este soluţia ecuaţiei diferenţiale (de ordinul 2) datǎ
de funcţia ode2.
Pentru a afle soluţia unei ecuaţii diferenţiale de ordinul 2 ec(t, x, ẋ, ẍ) = 0, cu condiţiile la frontiere
x(a) = xa şi x(b) = xb , se foloseşte funcţia bc2(sol,a,x_a,b,x_b), unde sol este soluţia ecuaţiei
obţinutǎ cu funcţia ode2.
9 Reprezentǎri grafice
Maxima poate sǎ reprezinte grafic expresii de o variabilǎ (folosind funcţia plot2d) sau de douǎ variabile
(folosind funcţia plot3d). În continuare vom exemplifica doar folosirea funcţiei plot2d, funcţia plot3d
având o sintaxǎ asemǎnţoare.
Pentru a reprezenta grafic funcţiile y = y(x), z = z(x) se foloseşte una din variantele:
plot2d([y(x),z(x)],[x,x_min,x_max])
plot2d([y(x),z(x)],[x,x_min,x_max],[y,y_min,y_max])
De exemplu, comanda
0.5
-0.5
-1
-4 -3 -2 -1 0 1 2 3 4
Se pot reprezenta grafic şi curbe date parametric. De exemplu, un cerc dat parametric se poate reprezenta
cu comanda:
6
[gnuplot_term,ps],[gnuplot_out_file,’’cerc.eps’’]);
produce rezultatul:
1
cos(x), sin(x)
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Opţiunea [nticks,n] care defineşte numǎrul de puncte ı̂n care se calculeazǎ valoarea funcţiei de
reprezentat.
(%i1) ode2(’diff(x,t)=1+x^2,x,t);
(%o1) atan(x) = t + %c
(%i2) ic1(%o1,t=0,x=sqrt(3));
t + %pi
(%o2) atan(x) =
3
Funcţia x datǎ ı̂n (%o2) poate fi reprezentatǎ grafic. La prima vedere, putem folosi sintaxa
(%o3)
care nu va da nici un rezultat. Explicaţia este cǎ expresia de la (%o3) este o ecuaţie, şi nu o funcţie de
t. Pentru a remedia aceastǎ situaţie, extragem pe x ı̂n funcţie de t, şi apoi reprezentǎm partea dreaptǎ
a ecuaţiei obţinute:
(%i4) solve(%o2,x);
µ ¶
%pi
(%o4) [x = tan x + ]
3
ceea ce ne va da o listǎ cu soluţia ecuaţiei (%o2). Pentru a gǎsi primul element din aceastǎ listǎ (adicǎ
ecuaţia care ne intereseazǎ pe noi) folosim:
(%i5) %o4[1];
µ ¶
%pi
(%o5) x = tan x +
3
Pentru a selecta partea dreaptǎ a ecuaţiei, scriem:
(%i6) rhs(%o5);
7
µ ¶
%pi
(%o6) tan x +
3
iar (%o6) este o funcţie de t reprezentabilǎ grafic:
(%o7)
-1
-2
-3
-4
-5
-6 -4 -2 0 2 4 6
Acelaşi rezultat poate fi scris şi pe scurt, dacǎ de la linia (%i5) scriem: