1.2 Aritmetica esatta, approssimata e modulare

L'esempio che segue mostra una caratteristica importante di un sistema di computer algebra: l'aritmetica esatta. Le espressioni non sono approssimate ma sono calcolate esattamente.   
Il segno # che compare sulla riga significa che tutto cio' che viene dopo viene ignorato. Questo fatto si puo' usare per scrivere commenti.

> 3*1/3; # si confronti con 0.3333333...

Si possono pero' anche approssimare espressioni usando evalf (evaluate + floating number):

> 1/7;

> evalf(%);

Il segno % (ditto) indica il risultato dell'ultimo comando lanciato, il segno %% il penultimo, %%% il terz'ultimo (poi stop).

evalf calcola il valore approssimato di un numero con una precisione determinata dalla variabile Digits (per default si hanno 10 cifre decimali):

Il segno % (ditto) indica il risultato dell'ultimo comando lanciato, il segno %% il penultimo, %%% il terz'ultimo (poi stop).

evalf calcola il valore approssimato di un numero con una precisione determinata dalla variabile Digits (per default si hanno 10 cifre decimali):

> Digits:=40;

> evalf(1/7);

Il numero n di cifre decimali si puo' anche richiedere dall'interno di evalf con evalf(espr,n) (qui e nel seguito espr indica una qualunque espressione: numero, nome, variabile, ecc.)

> evalf(1/7,15);

> 47 mod 5;

> 5^(5^5) mod 7;

Numeri interi

Maple puo' dire se un numero e' primo (si tratta di un test probabilistico, ma molto efficiente; un controesempio deve avere centinaia di cifre).

> isprime(15);

> not isprime(15);

> isprime(19);

> 25:

> R0 := isprime(25);

> R4 := ifactor(25);

> R3 := isprime(25);

Abbiamo cliccato su 25 con il bottone destro del mouse ottenendo opzioni rilevanti per gli interi. Abbiamo scelto integer factors (e ottenuto ifactor) e test primality, e ottenuto la fattorizzazione e false, perche' 25 non e' primo.

> ifactor(123456);

> 8!;

> ifactor(%);

> sum(k,k=0..4);

> sum('k','k'=0..n);

> expand(%);

> factor(%);

> sum(i^2,i=0..n);

> expand(%):

> factor(%);

Massimo comun divisore (greatest common divisor) e minimo comune multiplo (least common multiple):

> gcd(40,25);

> lcm(40,25);

Lo stesso vale per i polinomi:

> f:=x^3-2*x-1;

> g:=expand((x^2-x-1)*(x^2+1));

> gcd(f,g);

> lcm(f,g);


L'esempio che segue mostra una caratteristica importante di un sistema di computer algebra: l'aritmetica esatta. Le espressioni non sono approssimate ma sono calcolate esattamente.   

Il segno # che compare sulla riga significa che tutto cio' che viene dopo viene ignorato. Questo fatto si puo' usare per scrivere commenti.

> 3*1/3; # si confronti con 0.3333333...

Si possono pero' anche approssimare espressioni usando evalf (evaluate + floating number):

> 1/7;

> evalf(%);

Il segno % (ditto) indica il risultato dell'ultimo comando lanciato, il segno %% il penultimo, %%% il terz'ultimo (poi stop).

evalf calcola il valore approssimato di un numero con una precisione determinata dalla variabile Digits (per default si hanno 10 cifre decimali):

> Digits:=40;

> evalf(1/7);

Il numero n di cifre decimali si puo' anche richiedere dall'interno di evalf con evalf(espr,n) (qui e nel seguito espr indica una qualunque espressione: numero, nome, variabile, ecc.)

> evalf(1/7,15);

> 47 mod 5;

> 5^(5^5) mod 7;