Sunteți pe pagina 1din 38

Curs 2

Calcule numerice

Marea majoritate a calculelor din Maple sunt numerice. Maple poate lucra
ca un calculator convenional cu numere ntregi, raionale, iraionale, numere n
virgul mobil sau chiar complexe. Cele mai importante tipuri numerice
implementate n Maple sunt: integer, rational, float, complex. Pentru a
introduce o expresie folosim sintaxa natural i operatorii uzuali (+ adunare, scdere, * nmulire, / mprire, ^ ridicare la putere) care trebuie introdui
explicit. Maple respect regulile generale de calcul, cunoscnd ordinea efecturii
operaiilor. Pentru a efectua calcule numerice folosim paranteze rotunde (a nu se
utiliza paranteze drepte sau acolade).
> 1+2;
3

> 1+3/2;

5
2

> 2*(3+1/3)/(5/3-4/5);
100
13

> 2.8754/2;
1.437700000

> sqrt(2);
> evalf(%);

Maple poate manipula numere, variabile, mulimi, liste, iruri, polinoame i alte
construcii matematice. n plus, Maple este un limbaj complet de programare ce
conine proceduri, tablouri i alte seciuni de programare.

1. Calcule cu numere ntregi. Tipul


integer.

Tipul integer specific numerele ntregi. Calculele cu astfel de numere se


efectueaz direct. Maple poate lucra cu numere ntregi extrem de mari, limita
fiind de 500000 de cifre, depinznd n special de viteza i resursele

calculatorului respectiv. Dac un numr are o lungime prea mare, pentru afiarea
pe o singur linie, este continuat pe linia urmtoare. Maple nu ntmpin
dificulti n efectua calcule cu numere ntregi mari, n a calcula numrul de
cifre dintr-un numr sau n a factoriza ntregi. n expresiile algebrice, numerele
negative sunt incluse n paranteze.
> 123;-98;
123
-98

> 4+(-9);4-(-9);4*(-2);4/(-2);
-5

13
-8
-2

> 123!;
12146304367025329675766243241881295855454217088483382315328918161829235892362167668831156
96061264020217073583522129404778259109157041165147218602951990626164673073390741981495296
0000000000000000000000000000

Maple posed o mulime de funcii care ne ajut s lucrm cu ntregii, cum ar fi:

FUNCIA factorial
Funcia calculeaz factorialul unui numr.
Sintaxa: factorial(n)
Argument:

n - numr ntreg

Funcia returneaz un numr ntreg pozitiv; o sintax echivalent este: n!. Dac
n este pozitiv se calculeaz produsul numerelor de la 1 la n, dac n este 0,
Maple returneaz 1, dac n este negativ Maple returneaz un mesaj de eroare.
Exemple:
> factorial(0);0!;

1
1

> factorial(4);4!;
24
24

> factorial(n);
n!

> factorial(-5);
Error, numeric exception: division by zero
FUNCIA binomial
Funcia calculeaz coeficientul binomial.
Sintaxa: binomial(n,k)
Argumente: n, k ntregi pozitivi

Dac

ambele

argumente

sunt

ntregi

pozitivi

0<=k<=n

binomial(n,k)=n!/k!(n-k)!. Dac k>n atunci funcia returneaz 0.


Exemple:
> binomial(4, 2);
6

> binomial(n, 2);


binomial( n, 2 )

> expand(%);
FUNCIA ifactor
Funcia determin descompunerea n factori a unui numr.
Sintaxa: ifactor(n)
Argument:

n - numr ntreg sau raional

atunci

Funcia returneaz produsul factorilor ntregi, primi, ai lui n cu ordinul lor de


multiplicitate. Rspunsul va fi de forma sign(n)*f1^e1**fm^em, unde
sign(n) este semnul lui n, f1,..,fm factorii si, iar e1,,em ordinul lor de
multiplicitate. n cazul n care n este un numr raional sunt descompui n
factori primi att numitorul ct i numrtorul.
Exemple:
> ifactor(61);
( 61 )

> ifactor(90);
( 2 ) ( 3 )2 ( 5 )

> ifactor(-144);
( 2 )4 ( 3 )2

> ifactor(6/121);

(2) (3)
( 11 ) 2

FUNCIA igcd
Funcia determin c.m.m.d.c. (cel mai mare divizor comun) al unor numere
ntregi.

Sintaxa: igcd(n1,n2,...)
Argumente: n1,n2,... - numere ntregi
Funcia returneaz un numr ntreg nenegativ. Dac funcia nu are nici un
argument atunci ea returneaz valoarea 0.
Exemple:
> igcd();igcd(4,6,15);igcd(-12,8,16);
0
1

FUNCIA ilcm
Funcia determin c.m.m.m.c. (cel mai mic multiplu comun) al unor numere
ntregi. Dac funcia nu are nici un argument atunci ea returneaz valoarea 1.

Sintaxa: ilcm(n1,n2,...)
Argumente: n1,n2,... - numere ntregi
Funcia returneaz un numr ntreg nenegativ.
Exemple:
> ilcm();ilcm(-4,6,-15);ilcm(12,8,-16);
1
60
48

FUNCIILE iquo & irem


Funcia iquo calculeaz ctul mpririi a dou numere ntregi. Funcia irem
calculeaz restul mpririi a dou numere ntregi.
Sintaxe: iquo(m,n)
iquo(m,n,'r')

irem(m,n)
irem(m,n,'q')

Argumente: m, n - numere ntregi


q, r - nume
Argumentului r i se asigneaz valoarea restului mpririi numerelor.
Argumentului q i se asigneaz valoarea ctului mpirii numerelor.
Dac m i n sunt ntregi, atunci funcia irem returneaz restul r, astfel nct
m=n*q+r, |r|<|n| i m*r>=0.
Exemple:
> irem(25,3,'q');

> q;
8

> iquo(25,3,'r');
8

> r;
1

> irem(-25,8);
-1

> irem(25,-8);
1

> irem(-25,-8);
-1

FUNCIA isprime
Funcia determin dac un numr pozitiv ntreg este prim.
Sintaxa: isprime(n)
Argument:

n - numr ntreg pozitiv

Se returneaz valorile true sau false.


Exemple:
> isprime(1);
false

> isprime(2);
true

> isprime(19);
true

> isprime(24);

false

FUNCIILE nextprime & prevprime


Sintaxe: nextprime(n)
prevprime(n)
Argument:

n - numr ntreg

Funcia nextprime returneaz cel mai mic numr prim mai mare sau egal cu n,
dac n este pozitiv, altfel ia valoarea 2.
Funcia prevprime returneaz cel mai mare numr prim mai mic sau egal cu n,
dac n este pozitiv mai mare sau egal cu 3, altfel este afiat un mesaj de eroare.
Exemple:
> nextprime(1);
2

> nextprime(-1);

> nextprime(23);
29

> nextprime(-23);
2

> prevprime(23);
19

> prevprime(2);
Error, (in prevprime) there are no primes less than 2
FUNCIA ithprime
Funcia returneaz al n-lea numr prim, unde n este precizat; primul numr prim
este 2.
Sintaxa: ithprime(n)

Argument:

n - numr ntreg pozitiv

Exemple:
> ithprime(1);
2

> ithprime(2);
3

> ithprime(9);
23

> ithprime(10);
29

FUNCIA iroot
Funcia determin o aproximaie ntreag pentru rdcina de ordinul k a unui
numr ntreg.

Sintaxa :

iroot(n,k,exact)

Argumente: n, k - numere ntregi


Valoarea returnat este exact pentru ptrate perfecte i are o eroare subunitar,
n caz contrar.
Dac n<0 i k este par, atunci valoarea returnat este 0. Dac n<0 i k este
impar atunci funcia returneaz -iroot(-n,k).
Dac apare i cel de-al treilea argument, atunci acesta este setat true sau false
pentru a arta dac rdcina este sau nu exact.
Utilizarea funciei trebuie precedat de comanda readlib(iroot).
Exemple:
> readlib(iroot):
> iroot(81,4);
3

> iroot(27,3);
3

> iroot(66,3);
4

> iroot(-81,4);
0

> iroot(-27,3);
-3

> iroot(66,3,'exact');exact;
4

false

> iroot(81,4,'exact');exact;
3

true

FUNCIA isqrt
Funcia calculeaz o aproximaie ntreag pentru rdcina ptrat a unui numr
ntreg pozitiv.
Sintaxa: isqrt(n)
Argument:

n - numr ntreg

Valoarea returnat este exact pentru ptrate perfecte i are o eroare subunitar
altfel. Dac n<0 atunci funcia returneaz 0.
Exemple:
> isqrt(16);
4

> isqrt(20);
4

> isqrt(21);
5

> isqrt(-16);
0

FUNCIA issqr
Funcia testeaz dac un numr ntreg pozitiv este ptrat perfect.
Sintaxa: issqr(n)
Argument:

n - numr ntreg pozitiv

Se returneaz valorile true sau false.


Utilizarea funciei trebuie precedat de comanda readlib(issqr).
Exemple:
> readlib(issqr):
> issqr(1);

true

> issqr(8);
false

> issqr(9);
true

FUNCIA divisors
Funcia calculeaz divizorii pozitivi ai unui numr ntreg.
Sintaxa: divisors(n)
Argument:

n - numr ntreg

Funcia returneaz rezultatul sub forma unei mulimi. Funcia se afl n pachetul
de teoria numerelor deci utilizarea ei trebuie precedat de comanda
with(numtheory).
Exemple:

> with(numtheory):
> divisors(0);
{ }

> divisors(1);
{1}

> divisors(12);
{ 1, 2, 3, 4, 6, 12 }

> divisors(81);
{ 1, 3, 9, 27, 81 }

FUNCIA / OPERATORUL mod


Funcia calculeaz restul mpririi unui numr la un numr ntreg dat.
Sintaxe: expr mod m
`mod`(expr,m)

Argumente: expr numr ntreg sau expresie algebric


m - numr ntreg nenegativ
Operatorul mod evalueaz expresia expr folosind mprirea modulo m. Sintaxa
expr mod m este echivalent cu sintaxa `mod`(expr,m).
Exemple:
> 7 mod 3;
1

> `mod`(7,3);
1

> `mod`(-9,5);
1

> (-9) mod 5;


1

Cu ajutorul operatorului mod putem efectua operaii matematice de forma:


i+j mod m;

i-j mod m;

j^(-1) mod m;

i*j mod m;

i/j mod m

Exemple:
> 5+9 mod 3;
2

> 5-9 mod 3;


2

> 3*(-4) mod 5;


3

> 3/(-4) mod 5;


3

> 5^(-1) mod 2;


1

Putem , de asemenea, lucra cu numere ntregi i n alte baze sau sisteme de


numeraie (2, 3, 8, 16, etc.). Baza de numeraie considerat implicit este baza 10.
Trecerea numerelor dintr-o baz ntr-alta se face cu funcia convert.
FUNCIA convert
Realizeaz conversia numerelor dintr-o baz n alta.
Sintaxe: convert(n,binary)
convert(n,decimal)
convert(n,hex)
convert(n,octal)
convert(n,base,b)

Argument: n - numr ntreg pozitiv n cazul bazei 16, ntreg pozitiv sau negativ
sau chiar numr zecimal n cazul bazelor 2, 8.
Cu ajutorul acestor sintaxe este convertit numrul n n bazele 2, 10, 16, 8 sau n
baza specificat b. Cnd utilizm ultima sintax este returnat o list de numere
n baza b.
Exemple:
> convert(247,binary);
11110111

> convert(1023,hex);
3FF

> convert(17,base,3);
[ 2, 2, 1 ]

2. Calcule cu numere raionale. Tipul


rational.
O proprietate important a Maple-ului este abilitatea de a efectua aritmetica
raional exact, adic de a lucra cu fracii fr a le reduce la aproximri n
virgul mobil. Maple poate efectua operaii cu numere raionale i returneaz
rspunsul tot sub forma unei fracii.
> 45/18;
5
2

> -42/28;42/(-28);
-3
2
-3
2

Cele mai importante funcii pentru manipularea numerelor raionale sunt


funciile numer i denom .
FUNCIILE numer & denom
Aceste funcii returneaz numrtorul, respectiv numitorul unei fracii.
Sintaxe: numer(x)
denom(x)
Argument:

x numr raional, sau expresie algebric

Dac x nu este n form normal, atunci el este mai nti normalizat (se elimin
factorii comuni de la numitor i numrtor) i apoi sunt exprimai numrtorul,
respectiv numitorul fraciei x. Dac x are semn atunci semnul merge la
numrtor. Aceste funcii pot fi aplicate i numerelor ntregi sau zecimale, ele
fiind considerate fracii cu numitorul 1.

Exemple:
> numer(4/5);
4

> denom(4/5);
5

> numer(-7/3);
-7

> denom(-7/3);
3

> numer(15/25);
3

> denom(15/25);
5

> numer( x+1/(x+1/x) );


x ( x 22 )

> denom( x+1/(x+1/x) );


x 2 1

> numer( 3/x + y );


3y x

> denom(3/x+y);
x

> numer(45);
> denom(2.5);

Maple lucreaz cu numere raionale i produce rezultate exacte, distincia dintre


rezultatele exacte i cele aproximative fiind extrem de important. Maple poate
produce i estimri n virgul mobil, dac o astfel de cerere este fcut.
Pentru aceasta este suficient s introducem n expresia respectiv punctul
zecimal.
De cte ori introducem un numr n forma zecimal, Maple l interpreteaz ca o
aproximare n virgul mobil. Prezena unui numr zecimal ntr-o expresie are
drept efect producerea unui rezultat aproximativ n virgul mobil:
> 5/2*6;
15

> 2.5*6;
15.0

> 1+3/2;

> 1+3./2;

n concluzie, folosim numere n virgul mobil doar atunci cnd dorim s


restricionm Maple-ul la folosirea de expresii ne-exacte. Mai mult, Maple-ul
trateaz numerele iraionale i chiar unele constante drept cantiti exacte:
> sqrt(2);
2

> sqrt(3)^2;
3

> Pi;

> sin(Pi);
0

> exp(1);
e

n realitate, Maple poate lucra cu numere n virgul mobil cu sute de zecimale,


i deci producerea unor estimri cu o acuratee sporit, a unor expresii nu
prezint o problem.
Trecerea de la un numr raional la aproximarea sa n virgul mobil se face cu
funcia evalf.
FUNCIA evalf
Aceast funcie convertete numerele raionale n numere n virgul mobil.
Sintaxe: evalf(x)
evalf[n](x)
Argumente: x expresie algebric

n -(opional) ntreg; specific nr. de cifre semnificative exacte


Funcia evalf evalueaz n virgul mobil expresii care conin constante ca: Pi,
exp(1), gamma, sau funcii ca exp, ln, sin, arctan, cosh, GAMMA, etc.
Acurateea rezultatelor depinde de valoarea variabilei Digits. Prin convenie,
calculatorul realizeaz calculele cu 10 cifre semnificative exacte, dar putem
schimba valoarea lui Digits cu orice numr ntreg ce nu depete valoarea dat
de kernelopts(maxdigits). Parametrul n stabilete valoarea variabilei Digits pe
durata calculelor.
Exemple:
> evalf(1/3);
> evalf[3](1/3);
> evalf(Pi);

3.141592654

> evalf(sqrt(2));
1.414213562

> evalf[15](sqrt(2));
1.41421356237310

> evalf(sin(2)/3+2*cos(1));
1.383703754

> evalf(3/4*x^2+1/3*x-sqrt(2));
0.7500000000 x 20.3333333333 x1.414213562

Trecerea de la numere n virgul mobil la numere raionale se face cu


funcia convert.

FUNCIA convert
Aceast funcie convertete un numr zecimal ntr-o fracie aproximativ. Dac
al treilea argument este cuvntul exact, atunci se va ncerca o conversie exact.
Sintaxe: convert(x,rational)
convert(x,rational,exact)
Argumente: x - numr zecimal
Exemple:
> convert(0.3,rational);
> convert(0.333,rational);
> convert(0.3333333333,rational);
> convert(0.3333333333,rational,exact);

> convert(0.125,rational);
1
8

> convert(2.345,rational);
469
200

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