Maple
Maple
Maple
Introduzione
Maple `e un Computer Algebra System sviluppato inizialmente in ambito accademico e attualmente
prodotto dalla MapleSoft (www.maplesoft.com), che fornisce un ambiente integrato per il calcolo
simbolico e numerico, il trattamento di dati strutturati, la programmazione, la visualizzazione
grafica, le presentazioni multimediali interattive.
Possiede una sofisticata interfaccia amichevole con un elevato grado di interattivit`
a per la manipolazione di espressioni e grafici, e un linguaggio di alto livello basato su una sintassi relativamente
semplice, anche se non sempre pulita e coerente, che consente la rappresentazione di oggetti matematici con notazioni simili a quelle standard.
Dispone di strumenti per lesportazione/importazione di dati in parecchi formati e per lintegrazione
con altri software/linguaggi, che ne consentono un utilizzo immediato a diversi livelli e in diversi
ambiti (didattico, scientifico, applicativo).
In particolare, mentre ha funzioni di calcolo simbolico molto sviluppate, per il calcolo numerico, oltre alle funzioni proprie, consente di utilizzare quelle di MatLab, sistema prodotto dalla MathWorks
(www.mathworks.com) specializzato negli aspetti modellistico-numerici e diuso soprattutto in ambito ingegneristico.
Laltro Computer Algebra System commerciale con prestazioni analoghe `e Mathematica, prodotto
dalla Wolfram (www.worlfram.com). Ci sono poi diversi Computer Algebra System non commerciali sviluppati in ambito accademico, tra i quali: Maxima (www.maxima.sourceforge.net), Sage
(www.sagemath.org), SciLab (www.scilab.org).
Principi generali
Ambienti di lavoro
Maple consente due diverse modalit`
a di lavoro: Worksheet e Document. Quando si crea un nuovo
documento (usando il comando New del men`
u File), si sceglie quale modalit`
a usare per quel
documento. In entrambi i casi vi sono due tipologie di input principali disponibili nella barra dei
comandi: Text e Math.
Nella modalit`
a Worksheet, Text serve per immettere comandi alfanumerici nel formato Maple
originario, mentre Math consente limmissione nel formato grafico 2D-Math di simboli e formule
(come per esempio frazioni, radici, esponenti e indici). Nella modalit`
a Document, Text serve invece
per inserire eettivamente del testo (non comandi o espressioni da valutare), mentre Math ha
esattamente la stessa funzionalit`
a detta sopra.
Indipendentemente dalla modalit`
a scelta `e comunque possibile usare il men`
u Insert per inserire:
testi (Text), comandi/espressioni in formato Maple (Maple Input), comandi/espressioni in formato
` inoltre possibile
2D-Math (2D Math), disegni (Canvas), immagini (Image), grafici (Plot) e altro. E
organizzare tutto il materiale in sezioni e pi`
u livelli di sottosezioni, ciascuna collassabile al solo
testo iniziale (titolo ed eventuale sommario).
I comandi/espressioni (sia nel formato Maple che in quello 2D-Math) possono essere distribuiti su
pi`
u righe (usando il tasto Return con opportuno modificatore per andare a capo), nel qual caso
i ritorni a capo sono interpretati come spazi. In ciascuna riga `e possibile inserire un commento
preceduto dal simbolo # . Lesecuzione/valutazione del comando/espressione si ottiene digitando
un semplice Return. Nel formato Maple ogni comando/espressione deve terminare con ; (punto e
virgola).
gestione flessibile dei parametri e luso delloperatore di assegnazione (a variabili locali o globali)
nei calcoli intermedi e/o per lesecuzione di azioni collaterali alla valutazione.
La palette Components consente di inserire nel foglio di lavoro elementi interattivi con i quali si
pu`
o realizzare facilmente una semplice interfaccia grafica per i propri programmi.
Interfacce grafiche pi`
u sofisticate in grado di funzionare anche come applicazioni indipendenti
(chiamate Maplet) possono essere realizzate utilizzando il package Maplets. In questo caso per`
o
linserimento degli elementi interattivi e la defininizione delle loro propriet`
a (caratteristiche e azioni
ad essi associati) deve essere fornita in modo testuale con il formato di input Maple.
Strumenti
Maple `e dotato di un Help in linea molto esteso. In particolare `e possibile ottenere informazioni su
tutte le funzioni di sistema mediante il comando ?nomefunz .
Il men`
u Tools contiene diversi strumenti utili: Tasks, Assistants, Math Apps e Tutor.
I Tasks sono template da incollare nel foglio di lavoro, per lo svolgimento di una grande variet`
a
di calcoli. Gli Assistants sono invece Maplet che forniscono interfacce interattive per eettuare diverse attivit`
a, come lapprossimazione analitica (Curve fitting) e lanalisi statistica (Data
Analysis) di dati numerici, la manipolazione di equazioni (Equation manipulator), la ricerca
di massimi/minimi vincolati di funzioni reali (Optimization), la realizzazione di grafici (Plot
Builder).
Math Apps e Tutor sono rispettivamente documenti Maple con componenti interattive e Maplet
finalizzati ad illustrare concetti matematici a scopo didattico.
Infine lo stesso nem`
u Tools contiene i sottomen`
u Load Package e Unload Package, per caricare
e scaricare estensioni del sistema Maple dedicate ad aspetti specifici. Quelli menzionati di seguito
sono solo alcuni dei numerosi package disponibili.
combinat
funzioni combinatorie, permutazioni e combinazioni, partizioni di interi
CurveFitting
approssimazione analitica di dati numerici
geometry
costruzione e visualizzazione di oggetti geometrici nel piano euclideo
GraphTheory
costruzione, analisi e visualizzazione di grafi
LinearAlgebra manipolazione di vettori e matrici
ListTools
manipolazione di liste
Maplets
strumenti per la creazione di Maplet
Optimization
determinazione numerica di massimi/minimi vincolati di funzioni reali
plots
generazione di diversi tipi di grafici
plottools
generazione e manipolazione di oggetti grafici
StringTools
manipolazione delle stringhe
Statistics
analisi statistica di dati
Student
collezione di package didattici
Oggetti
Numeri
Ci sono diversi tipi di oggetti numerici: integer, rational, float e complex. Il tipo integer
rappresenta i numeri interi con un numero arbitrario di cifre. Il tipo rational `e codificato
come frazione nella forma +n/m.
Il tipo float, per i numeri in virgola mobile, si suddivide in due
sottotipi: sfloat (software float, con precisione arbitraria) e hfloat (hardware float, rappresentato
in 8 byte). I tipi integer, rational e float formano il tipo numeric. Il tipo complex `e
rappresentato nella forma x + yI, dove x e y sono di tipo numeric.
Simboli
Tutti gli oggetti simbolici sono inclusi nel tipo name, che si divide in due sottotipi: symbol per
gli oggetti simbolici atomici e indexed per gli oggetti simbolici con (multi)indici. In entrambi i
casi loggetto `e rappresentato da un nome formato da una parola contenente caratteri alfanumerici
(con distinzione tra lettere maiuscole e minuscole), soggetto alle sole considizioni di iniziare con
una lettera e di non contenere spazi e caratteri speciali riservati agli operatori (+ - * / _ , ;
: . ^ ' " ` % ! ? # $ & @ < > ~ \). Ogni oggetto di tipo symbol pu`
o essere usato come
variabile, associandogli un valore (altrimenti il valore `e lui stesso). Analogamente a un oggetto
di tipo indexed possono essere associati pi`
u valori, uno per ogni scelta del (multi)indice.
Strutture
Le strutture fondamentali sono i tipi set, list, table e rtable. Il tipo set `e usato per rappresentare insiemi finiti. Gli elementi sono ordinati in modo standard (in base alla complessit`
a
e poi allordine numerico/alfabetico) e le ripetizioni sono eliminate. Ogni elemento `e accessibile
mediante un indice intero che ne rappresenta la posizione. Il tipo list `e usato per rappresentare liste di oggetti, cio`e insiemi finiti ordinati, con possibili ripetizioni. Le liste possono avere una
struttura gerarchica ad albero, nel senso che gli elementi di una lista possono a loro volta essere
liste. Ogni elemento `e accessibile mediante un (multi)indice intero che ne rappresenta la posizione.
` analogo al tipo list, con la dierenza che
Il tipo table `e usato per rappresentate tabelle. E
i (multi)indici non sono necessariamente interi, ma possono essere oggetti arbitrari. Il tipo
rtable rappresenta in modo efficiente tabelle rettangolari con (multi)indici interi. Le strutture
Vector, Matrix e Array, che rappresentano vettori, matrici e array multidimensionali, sono implementate come sottotipi di rtable. Le analoghe strutture vector, matrix e array sono invece
implementate come table, ma restano solo per compatibilit`
a con le versioni precedenti.
Espressioni
Costanti numeriche
I
Pi
exp(1)
infinity
e
1
unit`
a immaginaria
pi greco
numero di Nepero
infinito positivo
a + b + ...
addizione
ab ...
moltiplicazione
a b
a/b
sottrazione
divisione
ab
potenza
a mod b
n!
modulo
fattoriale
a=b
a b
ab
uguaglianza
maggiore o uguale
minore o uguale
Operatori aritmetici
a + b + ...
a * b * ...
a b ...
a - b
a / b
a ** b
a ^ b
a mod b
n!
o
o
Relazioni aritmetiche
a = b
a >= b
a <= b
a > b
a < b
a <> b
a>b
a<b
a 6= b
maggiore
minore
disuguaglianza
T
F
vero
falso
p
p ^ q ^ ...
p _ q _ ...
p Y q Y ...
p)q
negazione
congiunzione
disgiunzione
disgiunzione esclusiva
implicazione
A[B
A\B
A B
unione
intersezione
dierenza
a2A
AB
appartenenza
inclusione
Costanti logiche
true
false
Operatori logici
not p
p and q and ...
p or q or ...
p xor q xor ...
p implies q
Operatori insiemistici
A union B
A intersect B
A minus B
Relazioni insiemistiche
a in A
A subset B
Operatori funzionali
x -> fx
g @ f
f @@ n
f', f'', ...
g f
fn = f f
f 0 , f 00 , . . .
...
Operatori vettoriali
V1 + V2
somma di vettori
aV
V1 V2
MV
M1 + M2
somma di matrici
aM
M1 M2
Mn
M 1
M+
matrice potenza
matrice inversa
matrice trasposta
(A|B)
A
B
V1 + V2
a * V
a V
V1 . V2
V1 V2
M . V
M V
M1 + M2
a * M
a M
M1 . M2
M1 M2
M ^ n
M^(-1)
M^+
hA | Bi
hA , Bi
Operatore sequenza
$ n..m
a $ n
ai $ i = m..n
m, . . . , n
a, . . . , a
am , . . . , an
sequenza numerica
sequenza costituita da n volte lespressione a
sequenza di espressioni per i da m a n
Operatore assegnazione
name := expr
name[i,j,...] := expr
assegnazione a un simbolo
assegnazione a un elemento di una struttura
f(x,y,...) := expr
f := (x,y,...) -> expr
Unit`
a di misura
[[m]]
[[s]]
[[kg]]
[[K]]
[[A]]
metro
secondo
kilogrammo
kelvin
ampere
Parentesi
( )
per
per
[ ]
per
per
{ }
per
h i
per
Punteggiatura
,
tra gli elementi di insiemi (dentro parentesi grae)
tra gli elementi di liste e tabelle (dentro parentesi quadre)
tra gli elementi di vettori colonna e di righe di matrici (dentro parentesi angolari)
tra gli indici di insiemi liste, tabelle, vettori e matrici (dentro parentesi quadre)
tra gli argomenti di funzioni (dentro parentesi tonde)
tra gli elementi di sequenze (senza parentesi)
;
per separare le righe di una matrice (dentro parentesi angolari)
per terminare e concatenare diverse espressioni ...
:
... sopprimendo loutput di quelle precedute dai due punti
::
per specificare il tipo di un simbolo
.
per separare la parte decimale di un numero (senza spazi)
per indicare il prodotto tra array (per esempio prodotto scalare e righe per colonne)
..
per indicare un intervallo di valori
Virgolette
f'
'expr'
`name`
"string"
per
per
per
per
Spaziatura
Spazi consecutivi valgono come uno solo. Uno spazio tra due espressioni vale come moltiplicazione, eccetto il caso in cui la seconda sia un numero. Gli spazi prima e dopo gli operatori,
le parentesi e la punteggiatura sono trascurati, tranne che prima e dopo il punto (nessuno spazio
per il punto decimale, altrimenti vale come operatore dot) e prima delle parentesi tonde aperte
Funzioni di sistema
Numeri interi
isprime(n)
ifactor(n)
ifactors(n)
isqrfree(n)
ithprime(i)
iquo(a,b)
irem(a,b)
igcd(a,b,...)
(a, b, . . . )
ilcm(a,b,...)
[a, b, . . .]
igcdex(a,b,x,y)
isqrt(n)
issqr(n)
n mod m
mod(n,m)
chrem([n1,...,nk],[m1,...,mk])
Numeri razionali
Fraction(n,m)
numer(q)
denom(q)
surd(x,n)
n modulo m (a valori in 0, . . . , m
1)
frazione n/m
numeratore del numero razionale q
denominatore del numero razionale q
Numeri reali
xen
xEn
Float(x,n)
SFloat(x,n)
HFloat(x,n)
HFloat(x,n,2)
round(x)
trunc(x)
frac(x)
frem(x,y)
fnormal(expr)
fnormal(expr,n)
Numeri complessi
Complex(x,y)
Re(z)
Im(z)
abs(z)
argument(z)
n `e un numero primo?
fattorizzazione del numero intero n
lista dei fattori primi di n
n non ha fattori primi multipli?
i-esimo numero primo
quoziente della divisione tra interi a : b
resto della divisione tra interi a : b (con segno)
massimo comune divisore
minimo comune multiplo
assegna a x e y valori interi t.c. ax + by = (a, b)
radice quadrata intera (approssimata)
n `e un quadrato perfetto?
o
o
x+yi
Re z
Im z
|z |
arg z
p
n
z
numero complesso
parte reale del numero complesso z
parte immaginaria del numero complesso z
modulo del numero complesso z
argomento del numero complesso z
radice complessa di z
Conversioni numeriche
convert(x,rational)
convert(x,rational,n)
convert(x,rational,exact)
identify(x)
convert(x,float)
convert(x,float,n)
Float(x)
SFloat(x)
HFloat(x)
Funzioni aritmetiche
Pn
add(ai,i = m..n)
a
o Pi=m i
add(ai,i = S)
i2S ai
add(ai,i in S)
sum(ai,i = m..n)
Qn
mul(ai,i = m..n)
a
o Qi=m i
mul(ai,i = S)
i2S ai
mul(ai,i in S)
product(ai,i = m..n)
factorial(n)
n!
max(a,b,...)
max{a, b, . . .}
min(a,b,...)
min{a, b, . . .}
Polinomi
ispoly(p,n,x)
ispoly(p,n,x,a0,a1,...,an)
degree(p,x)
ldegree(p,x)
coeff(p,x,n)
sort(p,opts)
irreduc(p)
irreduc(p,K)
factor(p)
factor(p,K)
factors(p)
factors(p,K)
quo(p,q,x)
rem(p,q,x)
divide(p,q)
gcd(p,q,...)
lcm(p,q,...)
discrim(p,x)
compoly(p,x)
roots(p,x)
roots(p,x,K)
RootOf(p,x)
interp([x1,...,xn],[y1,...yn],x)
randpoly(x,y,...,opts)
approssimazione razionale di x
approssimazione razionale di x con n cifre
approssimazione razionale di x con tutte le cifre
approssimazione di x in forma chiusa
conversione di x in float
conversione di x in float con n cifre decimali
conversione di x in sfloat
conversione di x in hfloat
p `e un polinomio di grado n in x?
... se s`, assegna i coefficienti alle variabili a0 , . . . , an
grado del polinomio p rispetto ad x
minimo esponente di x del polinomio p
coefficiente di xn nel polinomio p
ordina i termini del polinomio p
il polinomio p `e irriducibile?
p `e irriducibile sul campo K?
fattorizzazione del polinomio p
fattorizzazione di p sul campo K
lista dei fattori irriducibili del polinomio p
lista dei fattori irriducibili di p sul campo K
quoziente della divisione p(x) : q(x)
resto della divisione p(x) : q(x)
il polinomio p `e divisibile per il polinomio q?
massimo comune divisore di polinomi
minimo comune multiplo di polinomi
discriminante del polinomio p(x)
cerca q e r polinomi t.c. p(x) = q(r(x))
lista delle radici del polinomio p(x)
lista delle radici di p(x) sul campo K
radici formali del polinomio p(x)
polinomio interpolante p(x) t.c. p(xi ) = yi
polinomio random nelle indeterminate x, y, . . .
Espressioni algebriche
indets(expr)
indets(expr,type)
depends(expr,x)
numer(expr)
denom(expr)
normal(expr)
normal(expr,expanded)
radnormal(expr,opts)
rationalize(expr)
expand(expr)
expand(expr,expr1,...,exprn)
collect(expr,x)
collect(expr,{x1,...,xn})
combine(expr)
combine(expr,type)
combine(expr,type,symbolic)
algsubs(a = b,expr,opts)
subsindets(expr,type,f)
simplify(expr)
simplify(expr,r1,r2,...)
simplify(expr,a1 = b1,a2 = b2,...)
simplify(expr,assume = prop)
simplify(expr,symbolic)
match(expr = pat,{v1,v2,...},opts)
expr assuming p1,p2,...
Funzioni elementari
abs(x)
signum(x)
floor(x)
ceil(x)
|x|
sgn(x)
bxc
dxe
p
x
op
n
x
sqrt(x)
root(x,n)
root[n](x)
exp(x)
ex
a^x
ax
o
ln(x)
log x
log(x)
log[a](x)
loga x
sin(x) cos(x) tan(x)
sec(x) csc(x) cot(x)
arcsin(x) arccos(x) arctan(x)
arcsec(x) arccsc(x) arccot(x)
arctan(y,x)
sinh(x) cosh(x) tanh(x)
sech(x) csch(x) coth(x)
arcsinh(x) arccosh(x) arctanh(x)
arcsech(x) arccsch(x) arccoth(x)
radice quadrata
radice n-esima
funzione esponenziale naturale
funzione esponenziale con base a
logaritmo naturale
o
logaritmo in base a
funzioni goniometriche
Operatori funzionali
vars -> expr
unapply(expr,vars,opts)
apply(f,vars)
define(f,r1,r2,...)
definemore(f,r1,r2,...)
undefine(f)
Calcolo
limit(expr,x = a)
limx!a expr
limit(expr,x = a,dir)
limx!a expr
iscont(expr,x = a..b)
iscont(expr,x = a..b,closed)
discont(expr,x)
isdifferentiable(expr,x,k)
isdifferentiable(expr,x,k,s)
diff(expr,x1,...,xk)
abs(k,x)
signum(k,x)
floor(k,x)
ceil(k,x)
@ kexpr/@xk . . .@x1
dk |x| /dxk
dk sgn(x)/dxk
dk bxc/dxk
dk dxe/dxk
derivata
derivata
derivata
derivata
derivata
D[i1,...,ik](f)
@ kf/@xik . . .@xi1
D[i1,...,ik](f)(x1,...,xn)
minimize(expr,vars,opts)
maximize(expr,vars,opts)
extrema(expr,{eq1,...,eqm},vars)
extrema(expr,{eq1,...,eqm},vars,p)
taylor(expr,x = a,n)
coeftayl(expr,x = a,k)
order(s)
R
int(expr,x,opts)
R bexpr dx
int(expr,x = a..b,opts) a expr dx
int(expr,[x,y,...],opts)
int(expr,[x = a..b,y = c..d,...],opts)
Vettori e matrici
Vector([x1,...,xn])
Vector(n,init,opts)
Matrix([[x11,...],...,[...,xnm]])
Matrix(n,m,init,opts)
v[i]
v[i..j]
m[i,j]
m[i1..i2,j1..j2]
vettore (x1 , . . . , xn )
vettore di dimensione n inizializzato con init
matrice (xi,j )i=1,...,n,j=1,...,m
matrice n m inizializzata con init
i-esima componente del vettore v
componenti del vettore v dalli-esima alla j-esima
elemento di indice (i, j) nella matrice m
sottomatrice di m con indici da (i1 , j1 ) a (i2 , j2 )
Package LinearAlgebra
Dimension(V)
DotProduct(V1,V2)
CrossProduct(V1,V2)
V1 V2
V1 V2
Dimension(M)
Determinant(M)
DotProduct(M1,M2)
DotProduct(M,V)
det M
M1 M2
MV
Equazioni
lhs(eqn)
rhs(eqn)
isolate(eqn,expr,opts)
eliminate(eqns,vars)
solve(eqns,vars,opts)
fsolve(eqns,vars,opts)
isolve(eqns)
msolve(eqns,m)
rsolve(eqns,vars,opts)
dsolve(eqns,y(x),opts)
odetest(sol,eqns,y(x),opts)
intsolve(eqns,y(x),opts)
Equate(a,b)
Grafica
plot(fx,x = a..b,opts)
plot(hx1,...,xni,hy1,...,yni,opts)
plot([x,y,t = a..b],opts)
plot([[x1,y1],...,[xn,yn]],opts)
plot3d(fxy,x = a..b,y = c..d,opts)
plot3d([x,y,z],t = a..b,s = c..d,opts)
Package plots
display(gr1,gr2,...,opts)
animate(p,args,t = a..b,opts)
contourplot(expr,x = a..b,y = c..d,opts)
contourplot3d(expr,...,opts)
fieldplot([vx,vy],vars,opts)
fieldplot3d([vx,vy,vz],vars,opts)
implicitplot(eq,vars,opts)
implicitplot3d(eq,vars,opts)
spacecurve([x,y,z],t = a..b,opts)
tubeplot(c,opts)
Package plottools
point([x,y],opts)
punto nel piano di coordinate (x, y)
point([x,y,z],opts)
punto nello spazio di coordinate (x, y, z)
curve([[x1,y1],...,[xn,yn]],opts)
poligonale nel piano di vertici (xi , yi )
curve([[x1,y1,z1],...,[xn,yn,zn]],opts poligonale nello spazio di vertici (xi , yi , zi )
polygon([[x1,y1],...,[xn,yn]],opts)
poligono nel piano di vertici (xi , yi )
polygon([[x1,y1,z1],...,[xn,yn,zn]],opts) poligono nello spazio di vertici (xi , yi , zi )
line([x1,y1],[x2,y2],opts)
segmento di estremi (x1 , y1 ) e (x2 , y2 )
rectangle([x1,y1],[x2,y2],opts)
circle([x0,y0],r,opts)
disk([x0,y0],r,opts)
arc([x0,y0],r,a..b,opts)
sector([x0,y0],r1..r2,a..b,opts)
transform(f)(gr)
Simboli
cat(a,b,...)
assign(s1 = expr1,s2 = expr2,...)
unassign('s1','s2',...)
assigned(s)
anames();
anames(user);
anames(type);
protect(s1,s2,...)
unprotect(s1,s2,...)
setattribute(s,a1,a2,...)
attributes(s)
assume(x1,p1,x2,p2,...)
assume(x1::t1,x2::t2,...)
assume(rel1,rel2,...)
additionally(x1,p1,x2,p2,...)
additionally(x1::t1,x2::t2,...)
additionally(rel1,rel2,...)
about(s)
hasassumptions(s)
getassumptions(s)
AndProp(p1,p2,...)
OrProp(p1,p2,...)
Non(p)
Tabelle e array
table([v1,v2,...])
table([i1 = v1,i2 = v2,...])
rtable(dims,init,opts)
Array(dims,init,opts)
a[i]
a[i..j]
a[i,j,...]
copy(t)
numelems(t)
indices(t)
entries(t,opts)
lowerbound(a,n)
upperbound(a,n)
ArrayNumDims(a)
ArrayDims(a)
ArrayNumElems(a,opts)
ArrayElems(a)
comparray(a,b,opts)
Sequenze, liste e insiemi
x1,x2,...
x1 , x2 , . . .
seq(m..n)
m, . . . , n
seq(f,i = m..n)
f (m), . . . , f (n)
o
seq(f,i = S)
f (i) | i 2 S
seq(f,i in S)
[x1,x2,...]
(x1 , x2 , . . . )
{x1,x2,...}
{x1 , x2 , . . .}
l[i]
l[i..j]
l[i,j,...]
sort(l)
sort(l,ord)
zip(f,l1,l2)
union(S1,S2,...)
S1 [ S2 [ . . .
intersect(S1,S2,...)
S1 \ S2 \ . . .
symmdiff(S1,S2,...)
minus(S1,S2)
S1 S2
subset(S1,S2)
S1 S2
x in S
x2S
x in SetOf(t)
Espressioni
NULL
length(expr)
op(expr)
nops(expr)
op(i,expr)
op(i..j,expr)
op([i,j,...],expr)
member(x,expr)
membertype(t,expr)
has(expr,x)
hasfun(expr,f)
hasfun(expr,f,x)
numboccur(expr,x)
select(p,expr,t1,t2,...)
remove(p,expr,t1,t2,...)
subsop(i1 = x1,i2 = x2,...,expr)
applyop(f,i,expr,opts)
map(f,expr)
map(f,expr,x1,x2,...)
map[i](f,x1,...,expr,xi,...)
sequenza ordinata
sequenza di interi da m a n
sequenza di espressioni f (i) al variare di i da m a n
sequenza di espressioni f (i) al variare di i in S
lista (= insieme ordinato) degli elementi x1 , x2 , . . .
insieme degli elementi x1 , x2 , . . .
i-esimo elemento della lista/insieme/sequenza l
elementi di l dalli-esimo al j-esimo
elemento di posizione (i, j, . . . ) nella lista l
ordina la lista l rispetto allordine standard
ordina la lista l rispetto allordine ord
lista [f (xi , yi )] con xi nella lista l1 e yi nella lista l2
unione degli insiemi S1 , S2 , . . .
intersezione degli insiemi S1 , S2 , . . .
dierenza simmetrica degli insiemi S1 , S2 , . . .
dierenza tra gli insiemi S1 e S2
S1 `e sottoinsieme di S2 ?
x appartiene allinsieme/lista S?
x appartiene allinsieme degli oggetti di tipo t?
espressione nulla
lunghezza (= complessit`
a) dellespressione expr
sequenza degli operando dellespressione expr
numero degli operandi dellespressione expr
i-esimo operando dellespressione expr
operandi di expr dalli-esimo allo j-esimo
operando di expr nella posizione (i, j, . . . )
expr ha x tra i suoi operandi?
expr ha un operando di tipo t?
expr contiene x?
expr contiene f come funzione?
expr contiene f funzione con x nellargomento?
numero di occorrenze di x nellespressione expr
elimina dallespressione expr gli operandi x
che non soddisfano la propriet`
a p(x, t1 , t2 , . . . )
elimina dallespressione expr gli operandi x
che soddisfano la propriet`
a p(x, t1 , t2 , . . . )
sostituisce lik -esimo operando di expr con xk
applica la funzione f alli-esimo operando di expr
applica la funzione f agli operandi di expr
applica x ! f (x, x1 , x2 , . . .) agli operandi di expr
applica x ! f (x1 , . . . , x, xi , . . .) agli operandi di expr
simbolo x di tipo t
s `e un sottotipo del tipo t?
tipo principale dellespressione expr
lespressione expr `e di tipo t?
expr contiene una sottoespressione di tipo t?
lespressione expr corrisponde al pattern pat?
expr corrisponde al pattern pat in base ai tipi?
In base alle assunzioni sulle indeterminate ...
... lespressione expr soddisfa la propriet`
a p?
... lespressione expr `e di tipo t?
... la relazione rel `e soddisfatta?
Per qualche valore delle indeterminate ...
... lespressione expr pu`
o soddisfare la propriet`
a p?
... lespressione expr pu`
o essere di tipo t?
... la relazione rel pu`
o essere soddisfatta?
is(expr,p)
is(expr::t)
is(rel)
coulditbe(expr,p)
coulditbe(expr::t)
coulditbe(rel)
Valutazione
expr assuming p1,p2,...
eval(expr)
eval(expr,{a1 = b1,a2 = b2,...})
evalb(expr)
evalf(expression)
evalf[n](expression)
evalhf(expr)
evalc(expr)
evalindets(expr,t,f,x1,x2,...)
value(expr)
freeze(expr)
thaw(expr)
Stringhe
length(s)
cat(s1,s2,...)
s[m..n]
substring(s,m..n)
searchtext(t,s)
SearchText(t,s)
parse(s,opts)
Package StringTools
Char(n)
Ord(c)
Search(t,s)
SearchAll(t,s)
Substitute(s,t1,t2)
SubstituteAll(s,t1,t2)
Select(p,s)
Remove(p,s)
Split(s,opts)
LengthSplit(s,n,opts)
Strutture dati
stack[new](x1,x2,...)
stack[push](x,s)
stack[pop](s)
stack[top](s)
stack[depth](s)
stack[empty](s)
heap[new](ord,x1,x2,...)
heap[insert](x,h)
heap[extract](h)
heap[max](h)
heap[size](h)
heap[empty](h)
queue[new](x1,x2,...)
queue[enqueue](q,x)
queue[dequeue](q)
queue[front](q)
queue[clear](q)
queue[reverse](q)
queue[length](q)
queue[empty](q)
Input-Output
currentdir()
currentdir(dir)
open(f,READ)
open(f,WRITE)
close(f1,f2,...)
fopen(f,RAED,opts)
fopen(f,WRITE,opts)
fopen(f,APPEND,opts)
fflush(f1,f2,...)
fclose(f1,f2,...)
fremove(f1,f2,...)
feof(f)
readbytes(f,n,opts)
readbytes(f,rtable)
directory corrente
imposta dir come directory corrente
apre il file f in lettura senza buer
apre il file f in scrittura senza buer
chiude i file f1 , f2 , . . .
apre il file f in lettura con buer
apre il file f in scrittura con buer
apre il file f in scrittura con buer
scrive il contenuto dei buer nei file f1 , f2 , . . .
chiude i file f1 , f2 , . . .
rimuove i file f1 , f2 , . . .
la posizione corrente nel file f `e terminale?
legge n byte dal file f
legge il contenuto della struttura rtable dal file f
readline(f)
fscanf(f,fmt)
sscanf(s,fmt)
fprintf(f,fmt,a,b,...)
sprintf(fmt,a,b,...)
ImportVector(f,opts)
ImportMatrix(f,opts)
ExportVector(f,V,opts)
ExportMatrix(f,M,opts)
read f
save a,b,...,f
Procedure
procedura di tipo t con argomenti descritti dalla sequenza paramSeq
variabili locali descritte dalla sequenza localSeq
variabili global descritte dalla sequenza globalSeq
sequenza delle opzioni (remember per generare una remember table)
descrizione opzionale della procedura
usesSeq `e la sequenza dei moduli e package usati dalla procedura
comandi che formano il corpo eseguibile della procedura
proc(paramSeq)::t;
local localSeq;
global globalSeq;
option optionSeq;
description descrSeq;
uses usesSeq;
statements
end proc;
if expr1 then
statments1
elif expr2 then
statments2
...
else
statementn
end if
while expr
do statements end do;
for i from m by j to n
do statements end do;
for i in I
do statements end do;
break
9
>
>
>
>
>
>
>
>
>
=
>
>
>
>
>
>
>
>
>
;
struttura if
struttura while
next
return expr1,expr2,...
Moduli
module()
export s1,s2,...;
local localSeq;
global globalseq;
option optionSeq;
description descrSeq;
uses usesSeq;
statements
end module
exports(mod)
mod:-fp
Package
packages()
with(pack)
with(pack,fp1,fp2,...)
unwith(pack)
pack[fp]