Sunteți pe pagina 1din 8

Maxima - scurtǎ introducere

http://maxima.sourceforge.net

Simina Mariş

Cuprins

1 Prezentare generalǎ 1

2 Reguli generale de introducere a comenzilor 1

3 Constante şi operatori 2

4 Aritmeticǎ. Polinoame. 3

5 Trigonometrie 4

6 Ecuaţii şi sisteme de ecuaţii algebrice 4

7 Calcul diferenţial şi integral 4

8 Rezolvarea ecuaţiilor diferenţiale de ordinul 1 şi 2 5

9 Reprezentǎri grafice 6

9.1 Graficul unei funcţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

9.2 Graficul soluţiei unei ecuaţii diferenţiale de ordinul 2 . . . . . . . . . . . . . . . . . . . . . 7

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.

Programul poate fi downloadat de pe pagina http://maxima.sourceforge.net/download.shtml, iar


documentaţia poate fi accesatǎ şi on-line la adresa http://maxima.sourceforge.net/docs.shtml.

2 Reguli generale de introducere a comenzilor

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

3 Constante şi operatori

Constantele folosite ı̂n Maxima sunt:


%e baza logaritmului natural, e
%i unitatea imaginarǎ, i
%pi π
inf +∞ ∈ R
minf −∞ ∈ R
infinity +∞ ∈ C
true
false

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

Alte funcţii mai des folosite sunt:



sqrt sqrt(a) radicalul a
abs abs(a) modulul |a|
log log(a) logaritmul natural ln a
sign sign(a) semnul lui a

4 Aritmeticǎ. Polinoame.

Prezentǎm pe scurt o listǎ de funcţii mai des folosite:

expand(expr) este o funcţie care dezvoltǎ expresia expr.

noeval(expr) anuleazǎ evaluarea anterioarǎ a unei expresii.

numer forţeazǎ evaluarea ı̂n sistem zecimal a unei expresii.

?round(x) rotunjeşte numǎrul x la cel mai apropiat ı̂ntreg.

?truncate(x) dǎ partea ı̂ntreagǎ a numǎrului x.

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:

(%i1) assume(x>0); sqrt(x^2); forget(x>0);

(%o1) [x > 0]

(%o2) x

(%o3) [x > 0]

(%i4) assume(x<0); sqrt(x^2);

(%o4) [x < 0]

(%o5) −x

coeff(expr,x,n) returneazǎ coeficientul lui xn ı̂n expresia expr.

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.

factor(expr) descompune expresia expr ı̂n factori.

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.

6 Ecuaţii şi sisteme de ecuaţii algebrice

Pentru a rezolva o ecauţie algebricǎ se foloseşte comanda solve(ecuatie,necunoscuta).

Pentru a rezolva un sistem de ecuaţii algebrice se foloseşte una din comenzile:

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])

7 Calcul diferenţial şi integral

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

Comanda changevar(expr,f(x,y),x,y) realizeazǎ schimbarea de variabilǎ datǎ de f(x,y)=0 ı̂n toate


integralele din expresia expr, noua variabilǎ de integrare fiind y, iar cea veche x.
b
X
Comanda sum(f(i),i,a,b) ı̂nseamnǎ f (i). În acest fel se poate defini o serie.
i=a

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

8 Rezolvarea ecuaţiilor diferenţiale de ordinul 1 şi 2

Ecuaţiile diferenţiale se pot rezolva cu ajutorul funcţiilor desolve sau ode2.

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.

De exemplu, putem avea:

(%i1) desolve(diff(x(t),t)=k*x(t),x(t));

(%o1) x(t) = x(0) %ekt

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

9.1 Graficul unei funcţii

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

(%i1) plot2d(sin(x), x=-%pi,%pi);

produce urmǎtorul rezultat:


1
sin(x)

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:

(%i1) plot2d([parametric, cos(t),sin(t),[t,-%pi,%pi],[nticks,40]],

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.

Opţiunile [gnuplot_term,ps],[gnuplot_out_file,’’nume.eps’’] definesc numele fişierului localizat


ı̂n %Maxima-5.10.0\wxMaxima, ı̂n care se va reprezenta grafic funcţia datǎ.

9.2 Graficul soluţiei unei ecuaţii diferenţiale de ordinul 2

Fie de exemplu ecuaţia diferenţialǎ


ẋ = 1 + x2

cu condiţia iniţialǎ x(0) = 3. Rezolvarea acestei ecuaţii se face ı̂n doi paşi: ı̂ntâi se aflǎ soluţia ecuaţiei,
apoi se rezolvǎ problema cu date iniţiale. Obţinem astfel:

(%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

(%i3) plot2d(%o2, [t,-5,5],[y,-5,5]);

(%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:

(%i7) plot2d(%o6, [t,-5,5],[y,-5,5]);

(%o7)

Rezultatul acestei instrucţiuni este dat ı̂n figura de mai jos:


5
tan(t+%pi/3)

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

(%i5) plot2d(rhs(%o4[1]), [t,-5,5],[y,-5,5]);

S-ar putea să vă placă și