Upload
ngokien
View
214
Download
0
Embed Size (px)
Citation preview
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 1 ottobre 2005 Indice
Insiemi
La notazione matematica 2
L’assioma della scelta 3
L’insieme delle parti 4
Le funzioni
Le funzioni 2
Uguaglianza di funzioni 3
Composizione di funzioni 3Associativita 3
La funzione identica 3L’immagine 3
Funzioni iniettive 3Funzioni suriettive 4
Iniettivita categoriale 4Suriettivita categoriale 4
Funzioni biiettive 4Spazi di funzioni 4
Proprieta funtoriali 4
Algebra lineare
Equazioni lineari in una incognita 6
Sistemi astratti 7Due sistemi lineari in due incognite 7
Esempi 8La forma generale della regola
di Cramer 8Determinanti 8
L’algoritmo di eliminazione di Gauß 9Sistemi con piu di una soluzione 10
L’insieme delle soluzioni di unsistema lineare 10
Trigonometria
Trigonometria oggi 11
Un problema di geodesia 11Il triangolo 12
Il triangolo rettangolo 12
Triple pitagoree 12Le funzioni trigonometriche 12
La dimostrazione indiana 13Il triangolo isolatero 13
Angoli sul cerchio 13Il teorema del coseno 14
Il grafico della funzione seno 14La periodicita di seno e coseno 14
Altre proprieta di seno e coseno 14��������� �������������e������ ����
14
Geometria
Grafica al calcolatore e geometria 11
Distanze in ��� 15
Il prodotto scalare 15Ortogonalita 15
Coordinate polari nel piano 21Coordinate cilindriche nello spazio 21
Coordinate polari nello spazio 21Rotazioni nel piano 21
Disuguaglianze fondamentali 24Il segno del prodotto scalare 24
Ellissi 29Iperboli 29
Rette e segmenti 30
Equazione di una retta 30Proiezione su una retta 30
Riflessione in un punto 36Riflessione in una retta 36
Numeri complessi
Numeri complessi in R 22
I numeri complessi 23
La formula di Euler 23Il campo dei numeri complessi 24
La formula di de Moivre 24Parte reale e parte immaginaria 24
Radici di un polinomio 25Radici � -esime dell’unita 25
Radici di un numero complesso 25Perturbazione dei coefficienti 36
I cammini delle radici 37Il teorema di Rouche 37
Continuita delle radici 37
Programmazione in R
R 16Le funzioni d’aiuto 16
Installazione di R 16
Il libro di Crawley 16Programmare in R 17
Programmi autonomi 17Nomi in R 17
Assegnamento 17Successioni 18
Angoli espressi in gradi 18I commenti 18
Funzioni in R 22
expression ed eval 29ifelse 32
NA 32if ... else 33
identical 33Operazioni insiemistiche 33
dimnames 33for, while e repeat 40
Abbreviazioni 45Options e print(x,n) 45
any e all 46
Ordinamento 46La libreria 46
Grafica con R
Figure di Lissajous 18
La grafica di R 19plot e lines 19
Il comando postscript 19points 22
symbols e rect 22Grafici di funzioni 26
Curve parametrizzate nel piano 26Octobrina elegans 26
Octobrinidae I 27Octobrinidae II 27
abline 28
Parabrinidae 28Rotazioni 28
Testi matematici 29Curve di livello 31������������� 31Una collana 32� � ���! #"$� � 33���%��� 33���%��� �&��� 33���%��� "$� 34���%��� �&� 34
Il foglio di Cartesio 34La chiocciola di Pascal 34
La lemniscata 34Una curva trascendente 34
La funzione polygon 35Il file figure 35
Tratteggi 35Una modifica in Postscript 36
Parallele 38Come nasce una forma 38
Vettori e matrici con R
outer 32
Creazione di matrici 38
Matrici in R 39Esempi per le operazioni matriciali 39
Piccoli operatori 39Indici vettoriali 40
v[v%%p0] 40Assegnazione vettoriale 41
Indici matriciali 41L’opzione drop 41
rbind e cbind 41Sistemi lineari con R 42
length e dim 42
det (determinante) e traccia 42Matrici diagonali 42
abs (valore assoluto) e sign 42Autovalori 42
Matrici simmetriche 43eigen (autovalori e autovettori) 43
Matrici reali 43I cerchi di Gershgorin 43
Analisi
I numeri binomiali 20
La formula di Stirling 21Funzioni iperboliche 28
Derivazione simbolica 44
La derivata 44La funzione esponenziale 44
Esempi per l’uso di D 45La serie di Taylor 45
La professione del matematico
Che cos’e la matematica? 1
La professione 2Dall’universita all’azienda 2
Geometria applicata 5La matematica in azienda 5
La statistica matematica 5La matematica degli ingegneri 5
Matematica e chimica 5La dinamica dei fluidi 5
Geomatematica 5
Malattie tropicali 5La matematica del futuro 18
Varia
Il re dei matematici 6
Le basi di Grobner 6Il sito CRAN di Ferrara 30
Il crivello di Eratostene 40
Strumenti
L’alfabeto greco 1
Esercizi per gli scritti
Esercizi 1-13 10Esercizi 14-17 15
Esercizi 18-22 18Esercizi 23-27 22
Esercizi 28-43 25Esercizi 44-53 30
Esercizi 54-58 34Esercizi 59-66 38
Esercizi 67-76 43
ALGORITMI E STRUTTURE DI DATI
Corso di laurea in matematica Anno accademico 2004/05 Numero 1
Che cos’e la matematica?
Dividiamo questa domanda in due sottodomande, cercando di indicare prima i
costituenti elementari della matematica, poi come la matematica deve essere usata.
I componenti elementari del ragionamento matematico sono enunciati della for-
ma ipotesi implica tesi; in questo senso la matematica non conosce affermazioni
assolute, ma soltanto proposizioni che si compongono ogni volta di un preciso elen-
co delle ipotesi che vengono fatte, e poi di una altrettanto precisa specificazione
dell’enunciato che secondo quella proposizione ne consegue. A questo punto non e
detto che la proposizione sia valida, bisogna ancora dimostrarla, e cio significa,
nella matematica, dimostrare che la tesi segue dalle ipotesi unite agli assiomi e ai
risultati gia ottenuti e alle regole logiche che dobbiamo applicare. Gli assiomi so-
no enunciati che vengono messi all’inizio di una teoria, senza dimostrazione; ogni
altro enunciato deve essere invece dimostrato.
E importante che bisogna sempre dimostrare una proposizione - che e sempre
della forma ipotesi implica tesi! - nella sua interezza, cioe che si tratta di di-
mostrare la validita dell’implicazione e non la validita della tesi. L’enunciato A
implica B puo essere vero, anche se B non e vero. Ad esempio in logica si impara
che, se l’ipotesi A e falsa, allora la proposizione A implica B e sempre vera. Quin-
di l’affermazione se 3 e uguale a 3.1, allora io mi chiamo Piero e sempre vera,
indipendentemente da come mi chiamo io. Nella pratica matematica cio significa
che da una premessa errata si puo, con un po’ di pazienza, dedurre qualunque
cosa.
La validita si riferisce quindi sempre a tutta la proposizione A implica B.
Mentre il matematico puro cerca soprattutto di arricchire l’edificio delle teorie
matematiche con nuovi concetti o con dimostrazioni, talvolta assai difficili, di teo-
remi, il matematico applicato deve anche saper usare la matematica. Nelle scienze
naturali e sociali, le quali pongono problemi molto complessi, uno dei compiti piu
importanti e spesso la separazione degli elementi essenziali di un fenomeno dagli
aspetti marginali. In queste scienze le informazioni disponibili sono quasi sempre
incomplete, cosicche possiamo ogni volta descrivere soltanto una piccola parte del-
la realta. Anche quando disponiamo di conoscenze dettagliate, queste si presentano
in grande quantita, sono complesse e multiformi e richiedono concetti ordinatori
per poterle interpretare. Cio significa che bisogna estrarre e semplificare.
Un modello matematico di un fenomeno ha soprattutto lo scopo di permettere di
comprendere meglio quel fenomeno, quindi di metterne in evidenza cause e effetti
e comportamenti quantitativi, di individuarne i tratti essenziali e i meccanismi
fondamentali. In un certo senso la matematica consiste di tautologie, e nel modello
matematico si tenta di evidenziare le tautologie contenute nel fenomeno studiato.
La teoria cerca di comprendere i processi e legami funzionali di un campo del
sapere.
La mente umana pensa in modelli. Anche quando non facciamo matematica
della natura, cerchiamo di comprendere la natura mediante immagini semplifi-
cate. La teoria inizia gia nell’istante in cui cominciamo a porci la domanda quali
siano gli aspetti essenziali di un oggetto o di un fenomeno. La matematica non e
dunque altro che un modo sistematico e controllato di eseguire questi processi di
astrazione e semplificazione costantemente attivi nel nostro intelletto.
Il modello matematico, una volta concepito, se sviluppato correttamente, si mo-
stra poi di una esattezza naturale che spesso impressiona l’utente finale che e ten-
tato di adottare gli enunciati matematici come se essi corrispondessero precisa-
mente ai fenomeni modellati. Ma cio non e affatto vero: La precisione del modello
matematico e soltanto una precisione interna, tautologica, e la semplificazione,
quindi verita approssimata e parziale, che sta all’inizio del modello, si conserva,
e piu avanza lo sviluppo matematico, maggiore e il pericolo che iterando piu volte
l’errore, questo sia cresciuto in misura tale da richiedere un’interpretazione estre-
mamente prudente dei risultati matematici. Proprio le teorie piu avanzate, piu
belle quindi per il matematico puro, sono spesso quelle piu lontane dalla realta.
Questo automatismo della matematica puo essere pero anche fonte di nuovi punti
di vista e svelare connessioni nascoste.
Un modello matematico e percio solo un ausilio per la riflessione, per controllare
il contenuto e la consistenza logica di un pensiero o di una ricerca. In altre parole,
modelli sono strumenti intellettuali e non si possono da essi aspettare descrizioni
perfette della realta. Essi non forniscono risposte complete, ma indicano piuttosto
quali siano le domande che bisogna porre.
L’astrattezza intrinseca della matematica comporta da un lato che essa rimanga
sempre diversa dalla realta, offre pero dall’altro lato la possibilita di generalizzare
i risultati ottenuti nelle ricerche in un particolare campo applicativo o anche uno
strumento della matematica pura a problemi apparentemente completamente di-
versi, se questi hanno proprieta formali in comune con il primo campo.
In questo numero
1 Che cos’e la matematica?
L’alfabeto greco2 La professione
Dall’universita all’azienda
La notazione matematicaLe funzioni
3 Uguaglianza di funzioni
Composizione di funzioniAssociativitaLa funzione identica
L’immagineFunzioni iniettiveL’assioma della scelta
4 Funzioni suriettiveIniettivita categorialeSuriettivita categoriale
Funzioni biiettiveSpazi di funzioniProprieta funtoriali
L’insieme delle parti5 Geometria applicata
La matematica in azienda
La statistica matematicaLa matematica degli ingegneri
Matematica e chimicaLa dinamica dei fluidiGeomatematica
Malattie tropicali
L’alfabeto greco
alfa � �beta � �gamma � �delta � �epsilon � zeta �eta � theta θ �iota � �kappa � �lambda � �mi � �ni � �xi � �omikron � �pi � �rho � sigma σ, ! "tau # $ypsilon % &fi ' (chi ) *psi + ,omega - .
Sono 24 lettere. La sigma minuscola ha due for-me: alla fine della parola si scrive ! , altrimenti
σ. In matematica si usa solo la σ.Mikros ( �/� �0�21/! ) significa piccolo, megas
( �/34�5�6! ) grande, quindi la omikron e la o piccola
e la omega la o grande.Le lettere greche vengono usate molto spes-
so nella matematica, ad esempio3
P
k=0
ak e
un’abbreviazione per la somma a0+a1+a2+a3
e3
Q
k=0
ak per il prodotto a0a1a2a3, mentre Ai
αe
un oggetto con due indici, per uno dei quali ab-biamo usato una lettera greca.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 1 2
La professione
\ In genere lavoro in un team con in-gegneri, biologi o bancari. Lavoro auto-nomo o in team nella programmazione
(chi conosce il C e il Perl puo realizzarele costruzioni e tecniche astratte mate-
matiche imparate nel corso di laurea inmodo creativo e utile per l’azienda).
\ Il matematico deve essere in grado dicomprendere e analizzare i problemi
che si pongono nella prassi aziendale,di tradurli nel linguaggio formale del-
la matematica e di risolverli, spesso conl’aiuto di tecniche e mezzi informatici.
\ Matematica finanziaria e attuariale(calcolo delle probabilita, statistica, se-
rie temporali, previsione dei valori diborsa, calcolo dei rischi e delle tariffe).
\ Matematica aziendale (ottimizzazione,statistica, teoria dei grafi). Il matema-
tico puo lavorare nei reparti di ricercaoperativa in grandi ditte, nello svilup-
po di software aziendale, nel controllodella produzione, nel servizio statistico,
nelle banche, nelle assicurazioni, nellapubblica amministrazione.
\ Matematica industriale (equazioni dif-ferenziali, fisica matematica, ma an-
che statistica, serie temporali, ottimiz-zazione e controllo automatico, analisi
numerica).
\ Elaborazione delle immagini (appli-
cazioni nell’industria, nella medicina,nella robotica). Geometria (discreta e
differenziale) computazionale, graficaal calcolatore).
\ Informatica teorica: algebra, struttureordinate, funzioni booleane (metodi
classici di semplificazione, diagrammidi decisione, proprieta matematiche-
strutturali), linguaggi formali, automi.Algoritmi. Analisi formale dei concetti.
\ Bioinformatica (confronto di sequenze,
studio dell’espressione genica, reti me-taboliche). Statistica multivariata didati clinici di grandi dimensioni.
\ Possibilita di posizioni anche supe-
riori (industria farmaceutica, ramoattuariale-statistico).
Dall’universita all’azienda
b Per inserirsi e crescere aziendalmentenel modo migliore, e importante capi-re sin dall’inizio che cosa le imprese vo-
gliono dai laureati appena assunti.
b Allenarsi al lavoro in team vuoldire l’opposto che vedersi con ipropri simili: vuol dire sviluppare
l’interdisciplinarita, la capacita di farsicapire da chi ha una cultura e un
gergo differenti, di trovare soluzionia problemi che toccano tutti in modo
diverso.
b L’universita spinge invece ad aggregar-
si per omogeneita, a verificare di saperetutti esattamente le stesse cose.
Purtroppo l’universita abitua spesso aun rapporto passivo, spersonalizzato,
burocratico e disincentiva l’iniziativaindividuale, la capacita di costruirsi
sentieri e schemi propri.
Gian Battista Rosa (ed.): Dall’universita all’azienda.
ACTL 2002, 350p. Euro 30.
La notazione matematica
Matematica e linguaggi di programmazionehanno in comune la quasi perfetta precisio-
ne e allo stesso tempo la grande complessitadegli enunciati. E necessario quindi defini-
re attentamente gli oggetti con cui si vuolelavorare e le operazioni che si vogliono effet-tuare. Spesso questi oggetti e queste opera-
zioni vengono utilizzati piu volte nello stes-so ragionamento o in una teoria. E quindi
necessario introdurre abbreviazioni e, sic-come talvolta le stesse operazioni possono
essere effettuate su oggetti diversi, variabi-li. Ci limitiamo qui ad alcuni dei piu comuni
concetti insiemistici.L’insieme che consiste degli elementi
a1, . . . , an e denotato con {a1, . . . , an}.{x | P (x)} e l’insieme di tutti gli x che go-
dono della proprieta P o che comunque pos-sono essere descritti dall’espressione P (x).
Se x e elemento di un insieme X, allora siscrive x ∈ X. Il simbolo := significa ugualeper definizione. Alcuni insiemi di numeri:
N := {0, 1, 2, 3, . . . }
Z := {. . . ,−3,−2,−1, 0, 1, 2, 3, . . . }
Q := {a
b| a, b ∈ Z e b 6= 0}
Gli elementi di N si chiamano numeri natu-rali, quelli di Z numeri interi, gli elementi
di Q numeri razionali. L’insieme dei numerireali viene definito nei corsi di analisi ed e
denotato con R.Molto importante e versatile e il concet-
to di prodotto cartesiano di insiemi: datidue insiemi X ed Y , con X × Y si denota
l’insieme delle coppie (ordinate) di elementiche si possono formare prendendo come pri-
ma componente un elemento di X e comeseconda un elemento di Y :
X × Y := {(x, y) | x ∈ X, y ∈ Y }
Si possono anche formare prodotti cartesia-ni di piu di due fattori, in particolare si puoformare l’insieme Xn := X × · · · × X
| {z }
nvolte
.
R2 e quindi il piano reale, R3 lo spaziotridimensionale. In statistica una tabella di
n righe ed m colonne di numeri puo essereconsiderata come una collezione di n puntinello spazio Rm.
Quando un insieme X e contenuto in uninsieme Y (cio significa, per definizione, che
ogni elemento di X e anche elemento diY ), allora si scrive X ⊂ Y . Cosı abbiamo
N ⊂ Z ⊂ Q ⊂ R. Due insiemi si chiamanouguali se hanno gli stessi elementi. Cio si
puo formulare anche cosı:
X = Y se e solo se X ⊂ Y e Y ⊂ X.
L’unione A ∪ B di due insiemi A e B e
l’insieme di tutti gli elementi che apparten-gono ad almeno uno dei due insiemi, men-
tre l’intersezione A ∩ B e l’insieme dei lo-ro elementi comuni, cio degli elementi che
appartengono sia ad A che a B.Come in aritmetica e utile avere un nu-
mero 0, cosı nell’insiemistica si introduce
un insieme vuoto apparentemente artificia-le definito dalla proprieta di non avere al-
cun elemento. Esso viene denotato con ∅ ede sottoinsieme di ogni altro insieme: ∅ ⊂ X
per ogni insieme X (infatti ogni elemento di∅, cioe nessuno, appartiene a X).
⇐⇒ e un’abbreviazione per se e solo se.
Le funzioni
Il concetto singolo piu importante della ma-tematica e certamente quello di funzione.
Mediante funzioni possiamo trasformare in-formazioni da una forma all’altra, possiamo
semplificare informazioni complesse o im-mergere informazioni in contesti piu gene-rali. Una funzione del tempo puo essere stu-
diata per scoprire proprieta di periodicita,funzioni complicate possono essere decom-
poste in funzioni piu semplici. Se per esem-pio sappiamo che il prodotto di due funzioni
continue e ancora continuo e se accettiamoper certo che la funzione che manda un nu-
mero reale in se stesso e continua, possia-mo immediatamente concludere che la fun-
zione che manda un numero reale x in x2 eanch’essa continua.
Il concetto di funzione in matematica emolto generale. Una funzione (o applica-
zione) e definita da tre componenti: un in-sieme X su cui la funzione e definita (il do-minio della funzione), un insieme Y (il co-
dominio) di valori possibili (ogni valore del-la funzione deve essere un elemento di Y ,
ma non necessariamente ogni elemento diY e valore della funzione), e un sottoinsie-
me G ⊂ X × Y (il grafico della funzio-ne) che deve avere la proprieta che per ogni
x ∈ X esiste esattamente un y ∈ Y tale che(x, y) ∈ G.
La tripla f := (X, Y, G) si chiama allo-ra una funzione da X in Y e si scrive anche
f : X−→Y oppure Xf
−→Y . Per ogni x ∈ X
con f(x) si denota quell’unico y ∈ Y per cui(x, y) ∈ G.
Se f puo essere espressa mediante unaformula, per f si scrive anche f = ©
x
f(x),
ad esempio ©x
sin(x2 + 1) : R−→R.
Quando X e un insieme finito e non troppo
grande, una funzione f : X−→Y puo essererappresentata anche da una tabella:
x f(x)
1 42 0
3 34 25 1
6 2
In questo caso X = {1, 2, 3, 4, 5, 6} e perY possiamo prendere ad esempio l’insieme
Y = {0, 1, 2, 3, 4}.Nell’analisi di una variabile reale si stu-
diano funzioni definite su un intervallo di R
a valori reali. Il grafo di queste funzioni e un
sottoinsieme di R2 e puo quindi essere rap-presentato nel piano.
©x
sin 3x + sin 5x + 4 cos x
Funzioni di questa forma, rappresentabilicome somme (finite o infinite) di funzioni tri-
gonometriche, vengono studiate nell’analisiarmonica (o analisi di Fourier).
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 1 3
Uguaglianza di funzioni
Quand’e che due funzioni sono uguali?
Per definizione una funzione e una tripla.Due triple di oggetti matematici (a1, b1, c1)e (a2, b2, c2) sono uguali, se coincidono in
ogni componente, cioe se a1 = b1, a2 =b2 e a3 = b3. Percio due funzioni f1 =
(X1, Y1, G1) e f2 = (X2, Y2, G2) sonouguali se e solo se X1 = X2, Y1 = Y2 e
G1 = G2. Le prime due condizioni significa-no che le due funzioni hanno lo stesso domi-
nio e lo stesso codominio che a questo puntopossiamo chiamare X e Y ; analizziamo la
terza condizione, cioe G1 = G2. Cio signifi-ca che, per x ∈ X e y ∈ Y si ha (x, y) ∈ G1
se e solo se (x, y) ∈ G2 e quindi y = f1(x)se e solo se y = f2(x). In altre parole, la ter-za condizione e equivalente a f1(x) = f2(x)
per ogni x ∈ X.Due funzioni f1 e f2 sono percio uguali se
e solo se hanno lo stesso dominio X e lo stes-so codominio Y e se inoltre f1(x) = f2(x)
per ogni x ∈ X.
Composizione di funzioni
Se f : X−→Y e g : Y −→Z sono due fun-zioni, si puo definire la funzione composta
g ◦ f : X−→Z ponendo
g ◦ f(x) := g(f(x))
per ogni x ∈ X. La funzione composta tras-
forma quindi prima x in f(x) e applica poila g ad f(x). Questa operazione e molto im-portante, sia per costruire nuove funzioni
da funzioni note, sia per studiare funzio-ni complicate decomponendole in funzioni
piu semplici, rappresentando cioe la funzio-ne complicata come composizione di funzio-
ni piu semplici.Si usano allora spesso diagrammi com-
mutativi: Un diagramma di funzioni
X Y
Z
f
gp
si chiama commutativo, se p = g ◦ f . Sic-come p e g ◦ f hanno, per definizione, lo
stesso dominio X e lo stesso codominio Z,l’uguaglianza significa che p(x) = g(f(x))
per ogni x ∈ X. Esempi:
R R × R
R
©x
(x, x)
©x
x2
©(x,y)
xy
R R
R
R
©x
x3
f
©x
x + 1
sin
In analisi si dimostra che la composizione
di funzioni continue e continua; quindi sesappiamo che ©
x
x3,©x
x + 1 e sin sono con-
tinue, possiamo dedurre che anche la fun-zione f = ©
x
sin(x3 + 1) e continua.
Associativita
Assumiamo che siano date tre funzioni
Xf
−→Y , Yg
−→Z e Zh
−→U . Allora possiamo
formare prima g ◦ f e comporre il risultatocon h ottenendo cosı r1 := h◦(g◦f), oppurecomporre f con h ◦ g, ottenendo la funzione
r2 := (h◦g)◦f . Dimostriamo che si ottienein entrambi i casi la stessa funzione. In pri-
mo luogo r1 ed r2 hanno lo stesso dominioX e lo stesso codominio U . Dobbiamo dimo-
strare che r1(x) = r2(x) per ogni x ∈ X.Ma
r1(x) = h ◦ (g ◦ f)(x) =
= h((g ◦ f)(x)) = h(g(f(x)))
r2(x) = (h ◦ g) ◦ f(x) =
= (h ◦ g)(f(x)) = h(g(f(x)))
e quindi r1(x) = r2(x). Abbiamo cosı otte-
nuto la legge di associativita per la compo-sizone di funzioni:
h ◦ (g ◦ f) = (h ◦ g) ◦ f
Possiamo percio tralasciare le parentesi escrivere semplicemente h◦g◦f per una com-posizione di tre funzioni. In un diagram-
ma commutativo la legge di associativitaci permette di percorrere il diagramma se-
guendo le frecce, il risultato dipendera so-lo dall’inizio e dalla fine del cammino. Veri-
ficare questa regola nell’ultimo diagrammain basso a sinistra!
La legge di associativita corrisponde allacommutativita del diagramma
X
Y Z
U
f
g
g ◦ f
h ◦ gh
In verita, in un diagramma commutativonon useremo il cerchietto per denotare la
composizione, ma daremo dei nuovi nomi atutte le frecce; che nel diagramma che segue
p = g◦f segue proprio dalla commutativita.
X
Y Z
U
f
g
p
qh
La funzione identica
Per ogni insieme X esiste la funzione iden-
tica (o identita) idX := ©x
x : X−→X. Per
ogni funzione f : X−→Y abbiamo un dia-
gramma commutativo
X
X
Y
Y
f
f
idX idYf
L’immagine
f : X−→Y sia un’applicazione. Allora l’im-
magine di f e l’insieme
Imm f : = {f(x) | x ∈ X}
= {y ∈ Y | esiste x ∈ X con y = f(x)}
Imm f e quindi un sottoinsieme di Y e consi-ste di quegli y ∈ Y che sono immagine sotto
f di qualche elemento di X.
Funzioni iniettive
Una funzione f : X−→Y e detta iniettiva, setrasforma elementi distinti di X in elementi
distinti di Y ; quindi la funzione f e inietti-va se e solo se l’uguaglianza f(x1) = f(x2)implica x1 = x2.
Proposizione 3.1. Sia X 6= ∅. Allora la fun-zione f : X−→Y e iniettiva se e solo se esiste
una funzione g : Y −→X tale che g◦f = idX .
Dimostrazione: (1) f sia iniettiva. L’ideadella costruzione di g e di mandare ogni y ∈Imm f in quell’x ∈ X (unico per la inietti-vita di f ) per cui y = f(x). Se Imm f = Y ,
abbiamo gia finito. Cosa facciamo pero, in ca-so generale, con quegli y ∈ Y che non appar-
tengono ad Imm f? A questo scopo scegliamoun elemento qualsiasi x0 ∈ X (cio e possibile
perche per ipotesi X 6= ∅) e mandiamo tuttigli elementi di {y ∈ Y | y 6∈ Imm f} in x0.
In altre parole
g(y) =
(
x se y = f(x)
x0 altrimenti
In verita avremmo dovuto definire g medi-
ante un grafo. E pero chiaro che basta porreg = (Y, X, H) con H = H1 ∪ H2, dove
H1 := {(f(x), x) | x ∈ X}
e
H2 := {(y, x0) | y ∈ Y, y 6∈ Imm f}.
(2) Molto piu semplice, ma in un certo sen-
so anche piu interessante e la seconda di-rezione della dimostrazione, perche da un
primo saggio dell’efficacia di questo modoastratto di ragionare. Assumiamo che esistauna funzione g : Y −→X tale che g ◦ f =
idX . Per dimostrare che f allora e iniettiva,prendiamo due elementi x1 e x2 di X per cui
f(x1) = f(x2).Ma, per ipotesi, g(f(x)) = x per ogni x ∈
X, e quindi x1 = g(f(x1)) = g(f(x2)) = x2.
L’assioma della scelta
Quando si sviluppa assiomaticamente la teo-
ria degli insiemi, si scopre che un enuncia-to che per molti versi sembrerebbe naturale,
non puo essere dedotto dagli altri assiomi.E quindi necessario aggiungerlo al sistema
degli assiomi insiemistici. Questo enunciatoprende il nome di assioma della scelta e puo
essere formulato in questo modo:
Sia Y un insieme e per ogni y ∈ Y sia da-to un insieme non vuoto Fy in modo tale che
per y 6= z gli insiemi Fy ed Fz non abbianoelementi in comune. Allora esiste un insieme
H contenuto nell’unione degli Fy tale che perogni y ∈ Y l’intersezione H ∩ Fy possieda
esattamente un elemento.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 1 4
Funzioni suriettive
Una funzione f : X−→Y e detta suriettivase ogni elemento di Y e immagine di qual-
che elemento di X, cioe se Imm f = Y .
Proposizione 4.1. La funzione f : X−→Y
e suriettiva se e solo se esiste una funzioneh : Y −→X tale che f ◦ h = idY .
Dimostrazione: (1) f sia suriettiva. Sta-
volta la costruzione di h non e affatto ele-mentare e richiede l’assioma della scelta.
Per ogni y ∈ Y definiamo
Fy := {(y, x) ∈ Y × X | f(x) = y}
Siccome la f e suriettiva, Fy 6= ∅ per ogni
y ∈ Y . Inoltre Fy ed Fz per y 6= z nonhanno elementi in comune, come e evidente
dalla definizione. Per l’assioma della sceltaesiste un insieme H contenuto nell’unione
degli Fy (e quindi contenuto in Y × X
perche Fy ⊂ Y × X per ogni y) tale chel’intersezione H ∩Fy per ogni y ∈ Y possie-
da esattamente un elemento.Quest’ultima condizione significa pero
per ogni y ∈ Y esiste esattamente un x ∈X tale che (y, x) ∈ H.
Percio la tripla h := (Y, X, H) e una fun-zione ben definita.
Dobbiamo pero dimostrare che f ◦ h =idY , cioe che f(h(y)) = y per ogni y ∈ Y .
Ma h(y) e proprio scelto in modo tale chef(h(y)) = y!
Riassumiamo la dimostrazione di questaprima parte: L’idea intuitiva e semplice-
mente che per ogni y ∈ Y scegliamo unxy ∈ X tale che f(xy) = y (un tale xy
esiste sempre per l’ipotesi della suriettivita
della f ). Poi formiamo H := {(y, xy) | y ∈Y }. Ma senza l’assioma della scelta non ri-
usciamo a dimostrare che in questo modoabbiamo veramente definito un insieme H.
(2) La seconda direzione e di nuovo faci-le e istruttiva. Assumiamo che esista una
funzione h : Y −→X tale che f ◦ h = idY .Cio significa che per ogni y ∈ Y abbiamoy = f(h(y)), per cui y ∈ Imm f .
Iniettivita categoriale
L’algebra dei diagrammi commutativi e cosıimportante in alcuni campi avanzati dellamatematica, che e argomento di una disci-
plina apposita, la teoria della categorie. For-muliamo le proposizioni 3.1 e 4.1 in un mo-
do un po’ piu vicino al linguaggio delle cate-gorie.
Proposizione 4.2. La funzione f : X−→Y
e iniettiva se e solo se per ogni insieme T e
ogni coppia di funzioni p : T−→X eq : T−→X l’uguaglianza f ◦ p = f ◦ q im-plica p = q.
Dimostrazione: Il caso X = ∅ e banale;sia quindi X 6= ∅. (1) f sia iniettiva. Per la
prop. 3.1 esiste una funzione g : Y −→X ta-le che g ◦ f = idX . Allora, usando l’ipotesi e
l’associativita della composizione di funzio-ni, abbiamo
p = idX ◦ p = g ◦ f ◦ p =
= g ◦ f ◦ q = idX ◦ q = q
(2) Viceversa siano x1, x2 ∈ X tali che
f(x1) = f(x2). Sia T := {0}. Definiamo le
funzioni Tp
−→X e Tq
−→X ponendo p(0) :=
x1 e q(0) := x2. E chiaro che f ◦ p = f ◦ q.L’ipotesi implica p = q e cio a sua volta e
possibile solo se x1 = x2.
Suriettivita categoriale
Proposizione 4.3. La funzione f : X−→Y
e suriettiva se e solo se per ogni insieme U e
ogni coppia di funzioni p : Y −→U eq : Y −→U l’uguaglianza p ◦ f = q ◦ f im-
plica p = q.
Dimostrazione: (1) f sia suriettiva. Per laprop. 4.1 esiste una funzione h : Y −→X ta-
le che f◦h = idY . Di nuovo, usando l’ipotesie l’associativita della composizione, abbia-
mo
p = p ◦ idY = p ◦ f ◦ h =
= q ◦ f ◦ h = q ◦ idY = q
(2) Viceversa sia U := {1, 2}. La funzio-
ne p : Y −→U sia la funzione costante chemanda ogni y in 1. La funzione q : Y −→U
sia definita cosı:
q(y) =
(
1 se y ∈ Imm f
2 se y 6∈ Imm f
E chiaro che p(f(x)) = q(f(x)) = 1 per
ogni x ∈ X, perche f(x) appartiene sempread Imm f . Quindi p◦f = q◦f . Per ipotesi cio
implica p = q. Ma questo non sarebbe possi-bile se Imm f 6= ∅. Quindi necessariamente
Imm f = ∅ e cio significa che f e suriettiva.
Funzioni biiettive
Un’applicazione f : X−→Y si chiama bii-
ettiva se e allo stesso tempo iniettiva e su-riettiva. Tralasciamo di nuovo il caso bana-
le (ma un po’ intricato) che X sia l’insiemevuoto e assumiamo quindi che X 6= ∅.
(1) f sia biiettiva. Per le prop. 3.1 e 4.1esistono funzioni g : Y −→X e h : Y −→X
tali che g ◦ f = idX e f ◦ h = idY . Dimo-
striamo prima che g = h. Infatti
g = g ◦ idY = g ◦ f ◦ h = idX ◦ h = h
Abbiamo quindi un’applicazione g : Y −→X
tale che g ◦ f = idX e f ◦ g = idY . Dalleprop. 4.2 e 4.3 segue inoltre che g e univoca-
mente determinata. Essa si chiama la fun-zione inversa di f e viene denotata con f−1.
(2) Se viceversa esiste una funzioneY
g−→X tale che g ◦ f = idX e f ◦ g = idY ,
allora f e iniettiva e suriettiva, quindi biiet-tiva, per le prop. 3.1 e 4.1. Abbiamo quindiil seguente risultato.
Proposizione 4.4. La funzione f : X−→Y
e biiettiva se e solo se esiste una funzione g :
Y −→X t.c. g ◦ f = idX e f ◦ g = idY .g e allora univocamente determinata.
Spazi di funzioni
Per insiemi X ed U definiamo UX comel’insieme di tutte le funzioni X−→U . Uninsieme della forma UX o un suo sottoin-
sieme si chiama uno spazio di funzioni. Siaf : X−→Y una funzione.
(1) Per ogni insieme T ed ogni funzioner ∈ XT possiamo formare la composizione
f∗(r) := f ◦ r ∈ Y T , ottenendo cosı unafunzione f∗ : XT −→Y T .
(2) Per ogni insieme U ed ogni funzione
p ∈ UY possiamo formare la composizionef∗(p) := p ◦ f ∈ UX , ottenendo cosı una
funzione f∗ : UY −→UX .
Rn puo essere identificato con R
{1,...,n}.
Proprieta funtoriali
Proposizione 4.5. Siano date funzioni
Xf
−→Y e Yg
−→Z. T sia un insieme. Co-
me prima abbiamo applicazioni XT f∗−→Y T
e Y T g∗−→ZT . Allora
(f ◦ g)∗ = f∗ ◦ g∗
Dimostrazione: Sia r ∈ XT .
Allora (f ◦g)∗(r) = (f ◦g)◦r = f ◦ (g ◦r) =f∗(g ◦ r) = f∗(g∗(r)).
Proposizione 4.6. Siano date funzioni
Xf
−→Y e Yg
−→Z. U sia un insieme. Abbia-
mo applicazioni UY f∗
−→UX e UZ g∗
−→UY . Al-lora
(f ◦ g)∗ = g∗ ◦ f∗
Dimostrazione: Sia p ∈ UZ .Allora (f ◦g)∗(p) = p◦ (f ◦g) = (p◦f)◦g =
g∗(p ◦ f) = g∗(f∗(p)).
Proposizione 4.7. Sia f : X−→Y una fun-zione. Allora:
f e iniettiva ⇐⇒ f∗ : XT −→Y T e iniettivaper ogni insieme T .
f e suriettiva ⇐⇒ f∗ : UY −→UX e iniettiva
per ogni insieme U .
Dimostrazione: Cio non e altro che una ri-formulazione delle prop. 4.2 e 4.3.
L’insieme delle parti
L’insieme delle parti di un insieme X e de-
finito come l’insieme di tutti i sottoinsiemidi X. Ne fanno parte almeno X stesso e
l’insieme vuoto ∅ che sappiamo essere sot-toinsieme di ogni insieme. Se X e vuoto e
quindi coincide con ∅, l’insieme delle partiha un solo elemento ed e uguale a {∅}; se X
possiede esattamente un elemento, X 6= ∅e non ci sono sottoinsiemi di X diversi daX e ∅, quindi l’insieme delle parti e ugua-
le all’insieme {∅, X} e possiede due elemen-ti. In genere, se X e un insieme finito con n
elementi, l’insieme delle parti consiste di 2n
elementi. L’insieme delle parti di X si deno-
ta con P(X).
X P(X)
∅ {∅}
{0} {∅, {0}}
{0, 1} {∅, {0}, {1}, {0, 1}}
{0, 1, 2} {∅, {0}, {1}, {2}{0, 1}, {0, 2}, {1, 2}, {0, 1, 2}}
Una funzione booleana di n variabili e una
funzione f : {0, 1}n−→{0, 1} o, equivalen-temente, una funzione f : P(X)−→{0, 1},dove X e un insieme con n elementi.
Il numero delle funzioni booleane e esor-bitante. Esistono 22
nfunzioni booleane di
n variabili, quindi 65536 funzioni booleanecon 4 argomenti, piu di 4 miliardi con 5 ar-
gomenti, piu di 18 miliardi di miliardi con6 argomenti (ogni volta che si aggiunge una
variabile il numero delle funzioni booleane eil quadrato di quello precedente).
Le funzioni booleane appaiono, sotto vestidistinte, nella matematica pura, nello svi-
luppo di circuiti elettronici, nella ricerca me-dica. Su Google con boolean gene expressioncancer filetype:pdf si trovano 900 files.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 1 5
Geometria applicata
La geometria viene utilizzata in molti cam-pi della tecnologia moderna: nella tomogra-fia computerizzata, nella pianificazione di
edifici, nella creazione di animazioni perfilm e pubblicita, nell’analisi dei movimenti
di robot e satelliti.La matematica e di grande aiuto nella
grafica al calcolatore; conoscere le opera-zioni fondamentali della geometria (trasla-
zioni, rotazioni, riflessioni, coordinate bari-centriche, i vari tipi di proiezioni) permet-
te di creare facilmente programmi di grafi-ca con caratteristiche che talvolta mancano
anche nei programmi di grandi produttoriquando non sono stati sviluppati da mate-
matici.A livello piu avanzato la geometria stu-
dia le varie rappresentazioni di curve, su-
perficie e varieta geometriche di dimen-sione superiore, mediante rappresentazioni
parametriche oppure sistemi di equazioni.Si impara allora come passare da una
rappresentazione parametrica a un siste-ma di equazioni che descrive la stessa va-
rieta e viceversa; si studiano le funzioni chetrasformano una varieta in un’altra.
Nella statistica medica i dati sono spessopunti in spazi di alta dimensione (se in una
analisi di prove di sangue con la spettrome-tria di massa vengono rilevate le concentra-zioni di 80 molecole, ogni prova corrispon-
de a un punto di R80). Se adesso vogliamo
suddividere i pazienti in gruppi caratteri-
stici (sani e malati nel caso piu semplice)abbiamo bisogno di metodi geometrici per
definire validi criteri di separazione.
La matematica in azienda
La matematica aziendale comprendeda un lato la ricerca operativa, cioe
l’ottimizzazione delle risorse di un’aziendao di un ente, una disciplina che si e evolutadall’ottimizzazione lineare a metodi semp-
re piu avanzati (ottimizzazione quadratica,convessa, dinamica, geometria dei numeri
e ottimizzazione intera, topologia algebri-ca, programmazione logica), e dall’altro,
soprattutto in campo bancario, la mo-derna sofisticata matematica finanziaria
che deriva dalla matematica attuariale,ma utilizza strumenti matematici molto
complicati.Processi stocastici e serie temporali oltre
che in matematica finanziaria hanno moltealtre applicazioni in economia: osservazionidel carico elettrico della rete ENEL, cam-
biamenti demografici, andamento di mer-cati e borse.
La statistica matematica
Lo statistico che lavora in un’azienda,
nell’amministrazione pubblica o nella ricer-ca clinica, deve comprendere i compiti che
gli vengono posti e deve essere in gradodi interagire con i committenti. Nonostan-
te cio la statistica e di sua natura una dis-ciplina matematica che si basa sul calcolo
delle probabilita e richiede conoscenze tec-niche in altri campi della matematica come
analisi reale e complessa, analisi armoni-ca, calcolo combinatorio (ad esempio per la
pianificazione di esperimenti).
La matematica degli ingegneri
Problemi ingegneristici hanno quasi semp-re una forte componente matematica: dal-la teoria dei materiali all’elaborazione dei
segnali, dall’interpretazione di misurazio-ni al controllo di qualita, da modelli per
il corpo umano e i suoi movimenti (adesempio nell’industria automobilistica, ma
anche nell’industria tessile - in sartoria!)all’analisi strutturale di edifici e ponti, dai
modelli matematici per i processi fisici echimici in un altoforno all’ottimizzazione
dell’illuminazione in impianti industriali,dallo studio dell’erosione nel letto di un
fiume ai problemi inversi della geofisica(importanti per esempio anche nell’analisi
strutturale di monumenti e edifici), dapper-tutto si utilizza la matematica.
Potremmo elencare tanti altri campi di
applicazione: la geometria dei movimenti(cinematica) in robotica e nella costruzione
di macchine, teoria dei sistemi e controlloottimale nell’automazione, modellazione di
reazioni chimiche nella chimica industriale,ottimizzazione strutturale di componenti di
macchine o della composizione di punte pertrapani da dentista, microstruttura di me-
talli, costruzione di autoveicoli, treni ed ae-rei, ottimizzazione di orari ferroviari, piani-
ficazione urbanistica, telecomunicazioni.
Matematica e chimica
Il ruolo della matematica in chimica e in ra-
pida crescita, essa viene applicata ad esem-pio nel disegno razionale di farmaci, nellaselezione e sintesi di nuovi materiali, come
guida nella ricerca di nuovi catalizzatori,nello sviluppo di algoritmi per la dinamica
molecolare, nella risoluzione di problemi diottimizzazione di conformazioni, per la com-
prensione del ripiegamento delle proteine,nello studio del trasporto di sostanze attra-
verso le membrane esterne ed interne del-la cellula (fondamentale per la farmacolo-
gia), nell’analisi del complicato avvolgimen-to delle molecole di DNA, nello studio della
struttura di cristalli e quasicristalli, nellachimica quantistica.
La geometria e la topologia possono con-tribuire alla comprensione della strutturatridimensionale delle molecole, la teoria dei
grafi permette non solo la visualizzazionedei legami chimici, ma puo essere applicata
alla rappresentazione di reazioni chimicheoppure nell’organizzazione di banche dati di
molecole o della letteratura chimica; il cal-colo combinatorio e la teoria dei gruppi in-
tervengono nella chimica combinatoria, unatecnica sempre piu utilizzata dall’industria
farmaceutica. Il matematico puo lavorarenello sviluppo di algoritmi per la trasfor-
mazione di Fourier per le applicazioni nellaspettroscopia molecolare oppure nella chi-mica quantistica computazionale.
Equazioni differenziali parziali, anali-si armonica, processi stocastici, statistica,
analisi numerica, teoria combinatoria deigruppi finiti, teoria dei grafi, quasiordini,
teoria dei numeri (generazione di numericasuali), geometria computazionale e gra-
fica al calcolatore nella modellistica mole-colare (computer aided molecular design e
computer aided drug design): sono poche lediscipline matematiche che non hanno in-
teressanti applicazioni in chimica.
La dinamica dei fluidi
Uno dei campi piu classici e allo stesso tempopiu attuali della fisica matematica e la dina-mica dei fluidi e dei gas. Essa richiede un ric-
co bagaglio di tecniche matematiche, soprat-tutto dall’analisi (equazioni differenziali par-
ziali) e dalla geometria differenziale (calcolotensoriale), oltre a solide conoscenze in mec-
canica dei continui e termodinamica (densitae viscosita e altre caratteristiche di un flui-
do o di un gas dipendono dalla temperatu-ra e viceversa – un gas si scalda se viene
compresso). E una disciplina molto vasta contantissime applicazioni: costruzione di mac-
chine (iniettori, turbine, ventilatori, pompe),ale di aerei, eliche di aerei e di navi, ruote a
vento, modelli per nuovi materiali, flussi inmedi porosi, raffreddamento di vetri, produ-zione di fibre plastiche, serbatoi di olio, ot-
timizzazione del caffe espresso, studio del-la formazione di vortici e turbolenze, combu-
stione, detonazioni, modelli per il movimen-to di animali (pesci, serpenti, uccelli), mo-
delli aerodinamici per la meteorologia (circo-lazioni e turbolenze atmosferiche, moto dei
venti attorno a grandi catene di montagne,uragani, convezione termica nell’atmosfera)
e l’agricoltura (moto dell’aria in piantagionio foreste), aerodinamica di edifici, pianifica-
zione di esperimenti aerodinamici e idrodi-namici (costruzione di canali aerodinamici),previsione delle interazioni con l’aria di tre-
ni ad alta velocita, stima delle esposizioni alvento di un ponte. In medicina la fluidodina-
mica del sangue e un campo importante maancora piuttosto difficile (prevenzione di an-
eurismi e patologie circolatorie).
Geomatematica
Questo e un campo nuovo, molto bello e diffi-cile della matematica. Funzioni speciali del-
la geofisica matematica, funzioni armonichesulla sfera, operatori pseudodifferenziali del-la geodesia matematica, metodi di approssi-
mazione multivariata, splines, wavelets, me-todi degli elementi finiti nella geodesia, de-
terminazione del campo gravitazionale dellaTerra, analisi delle deformazioni della super-
ficie terrestre, effetti della rifrazione atmos-ferica, determinazione del campo magnetico
della Terra mediante l’analisi di dati tras-messi da satelliti, sono solo alcuni dei temi
di questa interessante disciplina.
Malattie tropicali
E tipico per la natura viva che essa ponedei problemi che difficilmente possono essere
perfettamente modellati con i metodi mate-matici classici sviluppati in genere per la fi-
sica o l’ingegneria. Cio da un lato vale natu-ralmente anche per le malattie tropicali co-
me malaria, bilharziosi, filariosi, leishmani-osi, dall’altro lato queste malattie colpisco-
no ogni anno centinaia di milioni di perso-ne, sono trascurate dalle ditte farmaceutiche(i pazienti non possono pagare) e richiedo-
no quindi interventi ecologici o politici moltoimpegnativi. Alla pianificazione di questi in-
terventi anche i modelli matematici possonocontribuire e sicuramente la medicina tropi-
cale e attraente per il suo fascino e per il latoumano.
Corso di laurea in matematica 4 Corso di Algoritmi e strutture di dati � © � Docente: Josef Eschgfaller
ALGORITMI E STRUTTURE DI DATI
Corso di laurea in matematica Anno accademico 2004/05 Numero 2
Il re dei matematici
Carl Friedrich Gauß (1777-1855) e conside-
rato il re dei matematici. La lettera ß alla fi-
ne del nome e una s tedesca antica; il nome
(talvolta scritto Gauss) si pronuncia gaos, si-
mile a caos, ma con la g invece della c e con
la o molto breve e legata alla a in modo che le
due vocali formino un dittongo. Nessun altro
matematico ha creato tanti concetti profondi
ancora oggi importanti nelle discipline mate-
matiche piu avanzate (teoria dei numeri, geo-
metria differenziale e geodesia matematica,
teoria degli errori e statistica, analisi com-
plessa). Il ritratto lo mostra a ventisei anni.
E stato forse il primo a concepire le geometrie non euclidee, ha dato una
semplice interpretazione dei numeri complessi come punti del piano reale
con l’addizione vettoriale e la moltiplicazione
(a, b) · (c, d) = (ac − bd, bc + ad)
e ha dimostrato il teorema fondamentale dell’algebra (che afferma che
ogni polinomio con coefficienti complessi possiede, nell’ambito dei nume-
ri complessi, una radice), ha introdotto la distribuzione gaussiana del
calcolo delle probabilita, ha conseguito importanti scoperte nella teoria
dell’elettromagnetismo; e stato direttore dell’osservatorio astronomico di
Gottinga.
L’algoritmo di eliminazione era noto nel 1759 a Lagrange (1736-1813) e
gia 2000 anni fa in Cina; Gauß lo ha usato nel suo lavoro sui moti celesti
del 1809, in cui descrisse il metodo dei minimi quadrati, una tecnica di
approssimazione ancora oggi universalmente utilizzata.
Le basi di Grobner
Se si prova ad imitare l’algoritmo di elimi-nazione nella soluzione di sistemi polino-miali di grado maggiore di uno, ad esem-
pio di
3x2 + 5xy + 6x − 7y = 4
8x2 + y
2 + x + 10y = 3
si incontrano molte difficolta (provare). Ilproblema e stato risolto solo nel 1965 con
l’introduzione delle basi di Grobner (Wolf-gang Grobner, 1899-1980, era un mate-
matico austriaco)e dell’algoritmo di
Buchberger (Bru-no Buchberger, na-
to 1942), molto piuprofondo e compli-
cato dell’algoritmodi eliminazione nelcaso lineare. Siste-
mi di equazioni po-linomiali appaiono
in molti campi del-la matematica con
Wolfgang Grobner
numerose applicazioni in ingegneria e sta-tistica. Per questa ragione la geometria al-
gebrica computazionale (compresa la geo-metria algebrica reale, importantissima
e molto difficile) e oggi un campo estre-mamente attivo della matematica, intera-
gendo con la teoria dell’ottimizzazione, lateoria dei poliedri convessi, la crittogra-fia, le equazioni differenziali parziali, la
fisica teorica e, se ci si fida, la matematicafinanziaria.
Bruno Buchberger nel 1987 ha fondatoil RISC (Research Institute for Symbolic
Computation, www.risc.uni-linz.ac.at/),che ha sede nel castello di Hagenberg a 25
km da Linz e di cui e stato direttore finoal 2003.
Il RISC e un istituto dell’universita diLinz e ospita circa 70 collaboratori, tra
cui molti studenti. Le attivita, iniziatecon la geometria algebrica algoritmica
nell’intento di sfruttare le possibilita offer-te dall’algoritmo di Buchberger, sono mol-
to varie, ma hanno tutte in qualche mododa fare con
la risoluzio-ne di equazio-ni e disequa-
zioni, talvoltain senso mol-
to lato confi-nando con la
logica compu-tazionale, la
dimostrazio- Il castello di Hagenberg
ne automatica di teoremi, l’inteligenza
artificiale, la robotica e la chimica indu-striale.
In questo numero
6 Il re dei matematici
Le basi di GrobnerEquazioni lineari in una incognita
7 Sistemi astratti
Due equazioni lineari in due incognite8 Esempi
La forma generale della regola
di CramerDeterminanti
9 L’algoritmo di eliminazione di Gauß
10 Sistemi con piu di una soluzioneL’insieme delle soluzioni di un
sistema lineare
Esercizi 1-13
Equazioni lineari in una incognita
Siano dati numeri reali a e b. Cercare di risolve-
re l’equazione ax = b nell’incognita x significacercare tutti i numeri reali x per i quali ax = b.
Per a 6= 0 la soluzione e unica e data da x =b
a.
Dimostrazione: E chiaro che le seguenti equa-
zioni sono equivalenti, cioe se x soddisfa una diesse, allora le soddisfa tutte:
ax = b
ax
a=
b
a
x =b
a
E evidente che nel nostro ragionamento solo leproprieta algebriche formali dei numeri reali so-
no state usate e che rimane quindi valido, cosıcome le considerazioni successive, se lavoriamo
con numeri razionali o numeri complessi o al-tri insiemi di numeri con quelle corrispondenti
proprieta. Si vede comunque anche che abbiamoavuto bisogno di poter dividere per un numero
6= 0, e quindi il risultato non e vero nell’ambitodei numeri naturali o interi.
Un insieme, su cui sono date due operazionidi addizione e di moltiplicazione che soddisfanole familiari regole di calcolo e in cui si puo semp-
re dividere per un elemento 6= 0, in matematicasi chiama un campo. Quindi l’algoritmo di eli-
minazione di Gauß rimane valido per sistemi diequazioni lineari i cui coefficienti appartengono
a un campo qualsiasi.Elenchiamo le regole che devono valere in un
campo; verranno stabilite e studiate piu detta-gliatamente negli altri corsi.
a + (b + c) = (a + b) + c
a + b = b + a
a + 0 = a
a + (−a) = 0
a(bc) = (ab)c
ab = ba
a1 = a
1
aa = a per a 6= 0
a(b + c) = ab + ac
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 2 7
Sistemi astratti
Definizione 7.1. Siano dati un insieme X ed una funzionef : X−→R. Denotiamo con (f = 0) l’insieme degli zeri di f :
(f = 0) := {x ∈ X | f(x) = 0}.
Piu in generale, se sono date m funzionif1, . . . , fm : X−→R, con
(f1 = 0, . . . , fm = 0)
denotiamo l’insieme
(f1 = 0) ∩ · · · ∩ (fm = 0)
degli zeri comuni di queste funzioni. Questa notazione e
molto usata in calcolo delle probabilita.
Osservazione 7.2. X sia un insieme. Abbiamo visto a pagi-na 4 che con R
X si denota l’insieme di tutte le funzioni a va-
lori reali definite su X. Possiamo formare somme di funzioni,moltiplicare funzioni con un numero reale o con un’altra fun-
zione, e costruire combinazioni lineari di funzioni in questospazio nel modo seguente.
Siano f, g, f1, . . . , fm ∈ RX ed α, α1, . . . , αm ∈ R. Allo-
ra:
f + g := ©x
f(x) + g(x)
αf := ©x
αf(x)
α1f1 + · · · + αmf := ©x
α1f1(x) + · · · + αmfm(x)
Teorema 7.3. Siano dati un insieme X ed m funzioni
f1, . . . , fm : X−→R. Siano α1, . . . , αm numeri reali conα1 6= 0. Allora gli insiemi
(f1 = 0, . . . , fm = 0)
e(α1f1 + α2f2 + · · · + αmfm = 0, f2 = 0, . . . , fm = 0)
coincidono.
Dimostrazione. Per dimostrare l’uguaglianza tra i due in-siemi, dobbiamo dimostrare che ogni elemento del primo in-
sieme e anche elemento del secondo, e che ogni elemento delsecondo insieme e elemento del primo.
Sia quindi x un elemento fissato di X.
(1) Sia f1(x) = 0, . . . , fm(x) = 0. E chiaro che allora anche
α1f1(x) + α2f2(x) + · · · + αmfm(x) = 0
f2(x) = 0. . .
fm(x) = 0.
(2) Sia viceversa
α1f1(x) + α2f2(x) + · · · + αmfm(x) = 0f2(x) = 0
. . .
fm(x) = 0.
Dobbiamo dimostrare che f1(x) = 0. Ma se sostituia-mo f2(x) = 0, . . . , fm(x) = 0 nella prima equazione,
vediamo che
α1f1(x) = 0.
Qui possiamo adesso applicare la nostra ipotesi che
α1 6= 0. Essa implica f1(x) = 0.
Attenzione: Il ragionamento non vale piu, se non sappiamo
che α1 6= 0!
Nota 7.4. Nel seguito avremo X = R2 oppure, piu in gene-
rale, X = Rn. Nel primo caso scriveremo gli elementi di X
nella forma (x, y), cosicche x denotera la prima coordinatadi un elemento e non l’elemento stesso.
Gli elementi di R3 saranno scritti nella forma (x, y, z),
gli elementi di Rn nella forma x = (x1, . . . , xn). Questo
passaggio da una notazione all’altra e frequente e diventerapresto familiare.
Due equazioni lineari in due incognite
Siano dati numeri reali a1, b1, c1, a2, b2, c2. Risolvere il sistema lineare
a1x + b1y = c1
a2x + b2y = c2
significa trovare tutte le coppie (x, y) di numeri reali che soddisfano entram-be le equazioni. Per poter applicare il teorema 7.3 introduciamo le funzioni
f1, f2 : R2−→R definite da
f1(x, y) := a1x + b1y − c1
f2(x, y) = a2x + b2y − c2
cosicche l’insieme delle soluzioni cercate coincide con (f1 = 0, f2 = 0). La-sciamo come esercizio il caso molto facile che a1 = 0.
Assumiamo quindi che a1 6= 0 e definiamo la funzione
f3 := a1f2 − a2f1
Per il teorema 7.3 abbiamo
(f1 = 0, f2 = 0) = (f1 = 0, f3 = 0)
perche e f2 che sicuramente appare con un coefficiente 6= 0 in f3. Scritta peresteso l’equazione f3 = 0 diventa
a1a2x + a1b2y − a1c2 − a2a1x − a2b1y + a2c1 = 0
cioe
(a1b2 − a2b1)y = a1c2 − a2c1,
e quindi le soluzioni del sistema originale coincidono con le soluzioni del si-
stema
a1x + b1y = c1
(a1b2 − a2b1)y = a1c2 − a2c1
Il numero a1b2 − a2b1 si chiama il determinante del sistema; lasciamoancora come esercizio il caso che il determinante si annulli; se e invece 6= 0,
allora la seconda equazione significa che
y =a1c2 − a2c1
a1b2 − a2b1.
Se per numeri reali a, b, c, d poniamo
˛
˛
˛
˛
a b
c d
˛
˛
˛
˛
:= ad−bc, possiamo scrivere
y =
˛
˛
˛
˛
a1 c1
a2 c2
˛
˛
˛
˛
˛
˛
˛
˛
a1 b1a2 b2
˛
˛
˛
˛
Vediamo che anche il numeratore ha la forma di un determinante; infatti siottiene dal denominatore sostituendo per la seconda colonna la colonna che
costituisce il lato destro del sistema.A questo punto possiamo calcolare anche x. Ricordando che a1 6= 0, otte-
niamo
x =c1 − b1y
a1
=
c1 − b1a1c2 − a2c1
a1b2 − a2b1
a1
=
=a1b2c1 − a2b1c1 − b1a1c2 + b1a2c1
a1(a1b2 − a2b1)=
=a1b2c1 − b1a1c2
a1(a1b2 − a2b1)=
b2c1 − b1c2
a1b2 − a2b1=
˛
˛
˛
˛
c1 b1c2 b2
˛
˛
˛
˛
˛
˛
˛
˛
a1 b1a2 b2
˛
˛
˛
˛
Quindi nel caso che il determinante del sistema sia 6= 0, il sistema possiedeun’unica soluzione data da
x =
˛
˛
˛
˛
c1 b1c2 b2
˛
˛
˛
˛
˛
˛
˛
˛
a1 b1a2 b2
˛
˛
˛
˛
y =
˛
˛
˛
˛
a1 c1
a2 c2
˛
˛
˛
˛
˛
˛
˛
˛
a1 b1a2 b2
˛
˛
˛
˛
Si osservi che il numeratore di x si ottiene anch’esso dal determinante del
sistema, sostituendo stavolta la prima colonna con il lato destro del siste-ma. Questo risultato e molto importante per l’algebra lineare e puo essere
generalizzato a piu dimensioni; e noto come regola di Cramer.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 2 8
Esempi
Risolviamo con la regola di Cramer il sistema
3x − 2y = 8
x + 6y = 5
Il determinante del sistema e
˛
˛
˛
˛
3 −2
1 6
˛
˛
˛
˛
= 18+2 = 20, quindi
diverso da 0, per cui
x =
˛
˛
˛
˛
8 −2
5 6
˛
˛
˛
˛
20=
48 + 10
20=
58
20
y =
˛
˛
˛
˛
3 8
1 5
˛
˛
˛
˛
20=
15 − 8
20=
7
20
Esercizio. Risolvere da soli
4x + 3y = 10
2x + 9y = 7
Esercizio. Perche non si puo applicare la regola di Cramer al
sistema
x + 3y = 1
2x + 6y = 4
Eppure non e difficile trovare “tutte” le soluzioni. Perche homesso “tutte” tra virgolette? E perche e anche (quasi) facile tro-
vare tutte le soluzioni di
x + 3y = 2
2x + 6y = 4
La forma generale della regola di Cramer
Sia dato un sistema di n equazioni lineari in n incognite (quindiil numero delle equazioni e uguale al numero delle incognite):
a11x1 + a12x2 + · · · + a1nxn = c1
a21x1 + a22x2 + · · · + a2nxn = c2
. . .
an1x1 + an2x2 + · · · + annxn = cn
Anche in questo caso piu generale si puo definire il determinan-
te del sistema, un numero che viene denotato con
D :=
˛
˛
˛
˛
˛
˛
˛
˛
a11 a12 . . . a1n
a21 a22 . . . a2n
. . .
an1 an2 . . . ann
˛
˛
˛
˛
˛
˛
˛
˛
e si dimostrera nel corso di Geometria I che questo determi-nante e 6= 0 se e solo se il sistema possiede un’unica soluzioneche in tal caso e data da
x1 =
˛
˛
˛
˛
˛
˛
˛
˛
c1 a12 . . . a1n
c2 a22 . . . a2n
. . .
cn an2 . . . ann
˛
˛
˛
˛
˛
˛
˛
˛
D
x2 =
˛
˛
˛
˛
˛
˛
˛
˛
a11 c1 . . . a1n
a21 c2 . . . a2n
. . .
an1 cn . . . ann
˛
˛
˛
˛
˛
˛
˛
˛
D
. . .
xn =
˛
˛
˛
˛
˛
˛
˛
˛
a11 a12 . . . c1
a21 a22 . . . c2
. . .
an1 an2 . . . cn
˛
˛
˛
˛
˛
˛
˛
˛
D
xi e quindi un quoziente il cui numeratore si ottiene dal deter-
minante del sistema, sostituendo la i-esima colonna con il latodestro del sistema.
Determinanti
Conosciamo gia i determinanti 2 × 2:
˛
˛
˛
˛
a1 b1a2 b2
˛
˛
˛
˛
= a1b2 − a2b1.
Definizione 8.1. Per induzione definiamo i determinanti di ordine supe-riore:
˛
˛
˛
˛
˛
˛
a1 b1 c1
a2 b2 c2
a3 b3 c3
˛
˛
˛
˛
˛
˛
:= a1
˛
˛
˛
˛
b2 c2
b3 c3
˛
˛
˛
˛
− a2
˛
˛
˛
˛
b1 c1
b3 c3
˛
˛
˛
˛
+ a3
˛
˛
˛
˛
b1 c1
b2 c2
˛
˛
˛
˛
˛
˛
˛
˛
˛
˛
˛
˛
a1 b1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
˛
˛
˛
˛
˛
˛
˛
˛
:= a1
˛
˛
˛
˛
˛
˛
b2 c2 d2
b3 c3 d3
b4 c4 d4
˛
˛
˛
˛
˛
˛
− a2
˛
˛
˛
˛
˛
˛
b1 c1 d1
b3 c3 d3
b4 c4 d4
˛
˛
˛
˛
˛
˛
+
+a3
˛
˛
˛
˛
˛
˛
b1 c1 d1
b2 c2 d2
b4 c4 d4
˛
˛
˛
˛
˛
˛
− a4
˛
˛
˛
˛
˛
˛
b1 c1 d1
b2 c2 d2
b3 c3 d3
˛
˛
˛
˛
˛
˛
e cosı via. Si noti l’alternanza dei segni. I determinanti hanno molte pro-prieta importanti che verranno studiate nel corso di Geometria. Qui cilimiteremo a determinanti 2 × 2 e 3 × 3, per i quali dimostriamo alcune
semplici regole, valide anche per determinanti n × n, se riformulate inmodo naturale.
Lemma 8.2. Se in un determinante 2 × 2 scambiamo tra di loro due righeo due colonne, il determinante si moltiplica con −1.
Dimostrazione. Immediata.
Lemma 8.3. Un determinante 3 × 3 puo essere calcolato anche secondo laregola
˛
˛
˛
˛
˛
˛
a1 b1 c1
a2 b2 c2
a3 b3 c3
˛
˛
˛
˛
˛
˛
:= a1
˛
˛
˛
˛
b2 c2
b3 c3
˛
˛
˛
˛
− b1
˛
˛
˛
˛
a2 c2
a3 c3
˛
˛
˛
˛
+ c1
˛
˛
˛
˛
a2 b2a3 b3
˛
˛
˛
˛
Dimostrazione. Le due espansioni si distinguono in
−a2
˛
˛
˛
˛
b1 c1
b3 c3
˛
˛
˛
˛
+a3
˛
˛
˛
˛
b1 c1
b2 c2
˛
˛
˛
˛
= −a2b1c3+a2b3c1+a3b1c2−a3b2c1
e
−b1
˛
˛
˛
˛
a2 c2
a3 c3
˛
˛
˛
˛
+c1
˛
˛
˛
˛
a2 b2a3 b3
˛
˛
˛
˛
= −b1a2c3+b1a3c2+c1a2b3−c1a3b2
che pero, come vediamo, danno lo stesso risultato.
Lemma 8.4. Se si scambiano due righe o due colonne in una matrice 3×3,
il determinante si moltiplica per −1.
Dimostrazione. Cio, per il lemma 8.2, e evidente per lo scambio dellaseconda e della terza colonna e, per il lemma 8.3, anche per lo scambio
della seconda e della terza riga. Se invece scambiamo la prima e la secondacolonna, otteniamo il determinante
˛
˛
˛
˛
˛
˛
b1 a1 c1
b2 a2 c2
b3 a3 c3
˛
˛
˛
˛
˛
˛
:= b1
˛
˛
˛
˛
a2 c2
a3 c3
˛
˛
˛
˛
− a1
˛
˛
˛
˛
b2 c2
b3 c3
˛
˛
˛
˛
+ c1
˛
˛
˛
˛
b2 a2
b3 a3
˛
˛
˛
˛
uguale, come si vede subito, al determinante originale moltiplicato per −1.
Gli altri casi seguono adesso applicando le regole gia dimostrate.
Lemma 8.5. Se in un determinante appaiono due righe o due colonne
uguali, allora il determinante e uguale a 0.
Dimostrazione. Cio per un determinante 2 × 2 e ovvio, e se ad esempiosono uguali le ultime due colonne, l’enunciato segue (usando il caso 2 × 2)
dalla formula di espansione anche per i determinanti 3 × 3, e poi dal caso3 × 3 anche per i determinanti 4 × 4 ecc.
Esempio. Verificare con calcoli a mano che˛
˛
˛
˛
˛
˛
a1 a1 c1
a2 a2 c2
a3 a3 c3
˛
˛
˛
˛
˛
˛
= 0
e che˛
˛
˛
˛
˛
˛
a1 b1 + a1 c1
a2 b2 + a2 c2
a3 b3 + a3 c3
˛
˛
˛
˛
˛
˛
=
˛
˛
˛
˛
˛
˛
a1 b1 c1
a2 b2 c2
a3 b3 c3
˛
˛
˛
˛
˛
˛
L’ultima uguaglianza e un caso speciale di un’altra proprieta fondamenta-le dei determinanti.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 2 9
L’algoritmo di eliminazione di Gauß
La teoria dei determinanti e la regola di Cramer hanno unagrandissima importanza teorica, ma non possono essere utiliz-zate se non per sistemi in due o al massimo tre incognite. Inoltre
la regola di Cramer si applica solo al caso di un sistema quadra-tico. Esiste invece un metodo molto efficiente (anche nel calcoloa mano) per la risoluzione di sistemi di equazioni lineari, che
viene detto algoritmo di eliminazione di Gauß e che consistenella sistematica applicazione del teorema 7.3.
Esempio 9.1. Consideriamo il sistema
3x + 2y − z = 10 . . . f1
4x − 9y + 2z = 6 . . . f2
x + y − 14z = 2 . . . f3
In analogia a quanto abbiamo fatto a pagina 7 per il sistema2 × 2 le funzioni f1, f2 ed f3 sono definite da
f1(x, y) := 3x + 2y − z − 10
f2(x, y) := 4x − 9y + 2z − 6
f3(x, y) := x + y − 14z − 2
Le indichiamo alla destra delle equazioni corrispondenti. Con lanotazione che abbiamo introdotto nell’osservazione 7.2 poniamo
f4 := 4f1 − 3f2
Per il teorema 7.3 allora
(f1 = 0, f2 = 0, f3 = 0) = (f4 = 0, f2 = 0, f3 = 0)
perche il coefficiente con cui f1 appare in f4 e diverso da 0. Es-plicitamente f4 = 0 equivale a
4(3x + 2y − z) − 3(4x − 9y + 2z) = 4 · 10 − 3 · 6
cioe a
35y − 10z = 22.
Se chiamiamo due sistemi equivalenti quando hanno le stessesoluzioni, possiamo dire che il sistema originale e equivalenteal sistema
4x − 9y + 2z = 6 . . . f2
x + y − 14z = 2 . . . f3
35y − 10z = 22 . . . f4
Nell’ultima equazione la variabile x in f4 e sparita, e stata eli-
minata. Ripetiamo questa operazione sostituendo la funzione f2
con
f5 := f2 − 4f3
Cio e possibile perche in f5 la f2 appare con un coefficiente 6= 0.Esplicitamente f5 = 0 significa
4x − 9y + 2z − 4(x + y − 14z) = 6 − 4 · 2
cioe
−13y + 58z = −2.
Percio il sistema originale ha le stesse soluzioni come il sistema
x + y − 14z = 2 . . . f3
35y − 10z = 22 . . . f4
−13y + 58z = −2 . . . f5
Adesso formiamo f6 := 13f4 + 35f5 che puo sostituire sia la f4
che la f5. Possiamo togliere la f5. f6 = 0 e equivalente a
13(35y − 10z) + 35(−13y + 58z) = 13 · 22 + 35 · (−2),
cioe a
1900z = 216.
Otteniamo cosı il sistema
x + y − 14z = 2 . . . f3
35y − 10z = 22 . . . f4
1900z = 216 . . . f6
che e ancora equivalente a quello originale. Ma adesso vedia-mo che nell’ultima equazione e stata eliminata anche la y ed e
rimasta solo la z che possiamo cosı calcolare direttamente:
z =216
1900= 0.11368,
poi, usando f4 = 0, otteniamo
y =22 + 10z
35= 0.66105,
e infine dal f3 = 0
x = −y + 14z + 2 = 2.930526.
Nella pratica si usera uno schema in cui vengono scritti,
nell’ordine indicato dall’ordine delle variabili, solo i coefficien-ti. Nell’esempio appena trattato i conti verrebbero disposti nel
modo seguente:
3 2 −1 10 f1 3
4 −9 2 6 f2 3
1 1 −14 2 f3
0 35 −10 22 f4 = 4f∗
1− 3f2
0 −13 58 −2 f5 = f∗
2− 4f3 3
0 0 1900 216 f6 = 13f4 + 35f∗
5
L’asterisco indica ogni volta l’equazione cancellata in quel pun-
to; l’uncino a destra di un’equazione significa che questa equa-zione e stata cancellata. Nei conti a mano spesso si preferiraforse cancellare la riga con un tratto orizzontale piuttosto di
usare l’uncino.Come si vede, nell’algoritmo cerchiamo prima di ottenere un
sistema equivalente all’originale in cui tutti i coefficienti tran-
ne al massimo uno nella prima colonna sono = 0, poi, usandole equazioni rimaste, applichiamo lo stesso procedimento allaseconda colonna (non modificando piu pero quella riga a cui
corrisponde quell’eventuale coefficiente 6= 0 nella prima colon-na), ecc. E chiaro che il procedimento termina sempre: alle m
equazioni iniziali si aggiungono prima m − 1, poi m − 2, poi
m − 3, ecc.L’insieme delle soluzioni rimane sempre lo stesso; le equazio-
ni cancellate naturalmente sono superflue e non vengono piu
usate. Quindi, se il sistema non ha soluzioni o piu di una solu-zione, riusciamo a scoprire anche questo.
Esempio 9.2. Consideriamo il sistema
2x1 − 5x2 + 3x3 − x4 = 1x1 + 4x2 − x3 + 2x4 = 33x1 − x2 + 2x3 + x4 = 7
Applichiamo il nostro schema:
2 −5 3 −1 1 f1 3
1 4 −1 2 3 f2
3 −1 2 1 7 f3 3
0 −13 5 −5 −5 f4 = f∗
1− 2f2 3
0 −13 5 −5 −2 f5 = f∗
3− 3f2
0 0 0 0 −3 f6 = f∗
4− f5
Il sistema dato e quindi equivalente al sistema
x1 + 4x2 − x3 + 2x4 = 3
−13x2 + 5x3 − 5x4 = −2
0 = −3
In particolare siamo arrivati alla contraddizione 0 = −3, quin-di il sistema non ha soluzione.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 2 10
Sistemi con piu di una soluzione
Consideriamo il sistema
4x − y + 3z = 5
x + 2y − 10z = 46x + 3y − 17z = 13
Usiamo di nuovo il nostro schema di calcolo:
4 −1 3 5 f1 3
1 2 −10 4 f2
6 3 −17 13 f3 3
0 −9 43 −11 f4 = f∗
1 − 4f2 3
0 9 −43 11 f5 = 6f2 − f∗
3
0 0 0 0 f6 = f∗
4 + f5
Stavolta non abbiamo una contraddizione, ma un’ultima equazione 0 = 0superflua, quindi siamo rimasti con due equazioni per tre incognite:
x + 2y − 10z = 49y − 43z = 11
Per ogni valore t di z possiamo risolvere
y =11 + 43t
9
x = −2y + 10t + 4 =−22 − 86t
9+ 10t + 4 =
=−22 − 86t + 90t + 36
9=
14
9+
4
9t
e vediamo che l’insieme delle soluzioni e una retta nello spazio R3 con la
rappresentazione parametrica
x(t) =14
9+
4
9t
y(t) =11
9+
43
9t
z(t) = t
Per ogni numero reale t si ottiene un punto (x(t), y(t), z(t)) ∈ R3 che e una
soluzione del nostro sistema, e viceversa ogni soluzione e di questa forma.
L’insieme delle soluzioni di un sistema lineare
Negli esempi visti finora abbiamo trovato sistemi che non avevano soluzioni,
oppure un’unica soluzione (descriventi cioe un unico punto nello spazio),oppure, nell’ultimo esempio, una retta di soluzioni.
Cio vale per ogni sistema di equazioni lineari: l’insieme delle soluzioni esempre o vuoto (nessuna soluzione), oppure un solo punto, oppure una retta,
oppure un piano, oppure uno spazio affine tridimensionale ecc., e viceversaogni insieme di questa forma puo essere descritto da un sistema di equazio-
ni lineari. La dimostrazione di questo teorema e la definizione precisa delconcetto di spazio affine verranno date nel corso di Geometria I.
Nonostante l’efficienza dell’algoritmo di eliminazione che permette la ri-soluzione abbastanza agevole di sistemi lineari non troppo grandi (con unpo’ di pazienza si possono risolvere anche sistemi 10×10 a mano) la pratica
e piu complicata. Nelle applicazioni reali si affrontano sistemi con decinedi migliaia di equazioni e variabili e non solo il tempo di calcolo, ma an-
che l’accumularsi di errori di arrotondamento nei calcoli approssimati cheil software normalmente utilizza possono creare grandi problemi.
Piccoli errori, spesso inevitabili, nei dati in entrata (ad esempio nei co-efficienti aij e bi del nostro sistema) possono provocare in taluni casi, che
bisogna riconoscere e controllare, grandi cambiamenti nelle soluzioni. Cosıil sistema
4x + 1.99y = 2.01
2x + y = 1
possiede un’unica soluzione x = 1, y = −1, ma se lo cambiamo di poco,
4x + 2y = 2
2x + y = 1
il determinante si annulla e l’insieme delle soluzioni e dato da y = 1− 2x, equindi le soluzioni non sono piu univocamente determinate e possono essere
arbitrariamente distanti dalla soluzione (1,−1) del primo sistema.
Esercizi per i compiti scritti
1. Sia f := ©x
3x4 − 2x2 + 10x− 6 : R−→R. Calcolare f(2).
2. Siano f := ©x
3x2 + 4 e g := ©x
6x − 1 considerate come
funzioni R−→R. Calcolare f ◦ g e g ◦ f .
3. Siano f := ©(x,y)
x + y3 : R2−→R e g := ©
x
x2 : R−→R.
Calcolare g ◦ f .
4. Risolvere con la regola di Cramer il sistema
3x − 2y = 9
2x + 7y = 5
5. Calcolare il determinante˛
˛
˛
˛
˛
˛
3 8 26 2 1
4 2 1
˛
˛
˛
˛
˛
˛
6. Calcolare il determinante˛
˛
˛
˛
˛
˛
2 8 125 1 11
4 3 11
˛
˛
˛
˛
˛
˛
Risolvere i sistemi con l’algoritmo di Gauß usando lo schema.
7. 2x1 − 4x2 + x3 − x4 = 8
x1 + 5x2 − x3 + 2x4 = 0
2x1 − x2 + 4x3 + x4 = 6
4x1 + x2 − x3 + 3x4 = 10
8. x1 + 2x2 + 3x3 + 2x4 = 8
4x1 + x2 + 2x3 + x4 = 5
4x1 + 2x2 + 3x3 + 4x4 = 0
x1 − 2x2 − 2x3 − 2x4 = 4
9. 8x + 7y + 15z = 10
2x + 3y + 3z = 4
3x + 2y + 6z = 3
10. 2x1 + x2 + x3 + x4 + 2x5 = 1
2x1 + x2 + x3 + x4 + x5 = 2
x1 − x2 + 2x3 + x4 + 2x5 = 9
x1 + 2x2 + 2x3 + x4 + 3x5 = 4
3x1 + x2 + x4 + 2x5 = −2
11. 4x1 + 8x2 + 17x3 + 100x4 + 2x5 = 0
3x1 + 5x2 + 32x3 + 33x4 + 34x5 = 1
2x2 + x3 + 100x4 + 2x5 = 4
2x1 + 3x2 + 15x3 + 6x4 + 5x5 = −1
4x1 + 8x2 + x3 + 7x4 + 2x5 = 2
12. 121x1 + 58x2 + 85x3 + 45x4 = 1
2x1 + 175x2 + 619x3 + 218x4 = 0
415x1 + 26x2 + 510x3 + 77x4 = 2
8x1 + 15x2 + 315x3 + 418x4 = −1
13. 6x1 + 2x2 + 3x3 + 5x4 + 2x5 + x6 = 1
3x1 + x2 + x3 + 10x4 + x5 + 2x6 = 0
3x1 + 2x2 + x3 + 2x4 + x5 + 2x6 = 0
2x1 + x3 + 5x4 + x5 + 4x6 = 0
3x1 + x2 + 2x5 + x6 = 0
6x1 + x3 + 5x4 + x5 + 4x6 = 0
Corso di laurea in matematica 4 Corso di Algoritmi e strutture di dati � © � Docente: Josef Eschgfaller
ALGORITMI E STRUTTURE DI DATI
Corso di laurea in matematica Anno accademico 2004/05 Numero 3
Trigonometria oggi
Dai piani di studio, soprattutto nell’universita, la trigonometria e sparita
da molto tempo. Ma questa disciplina, una delle piu antiche della mate-
matica, e ancora oggi una delle piu importanti.
Mentre almeno gli elementi della trigonometria pia-
na vengono insegnati nelle scuole, la trigonometria sfe-
rica e ormai conosciuta pochissimo anche tra i ma-
tematici di professione. Eppure le applicazioni sono
tantissime: nautica, cartografia, geodesia e geoinfor-
matica, astronomia, cristallografia, classificazione dei
movimenti nello spazio, cinematica e quindi robotica e
costruzione di macchine, grafica al calcolatore.
L’immagine rappresenta un robot con i suoi movimenti; trovata su
www.igm.rwth-aachen.de/deutsch/lehre-lehrveranstaltungen/guk/index.php
Un problema di geodesia
Sia dato, come nella figura, un triangolo
con base di lunghezza nota c e in cui an-che gli angoli α e β siano noti e tali che
0 < α, β < 90◦.Vogliamo calcolare x ed y.
c
y
x c − xα β
Per le nostre ipotesi tan α e tan β sono nu-meri ben definiti e > 0 (cfr. pag. 13). Inol-
tre abbiamo
tan α =y
x
tan β =y
c − x
Queste equazioni possono essere riscrittecome sistema lineare di due equazioni in
due incognite:
x tan α − y = 0
x tan β + y = c tan β
Il determinante
˛
˛
˛
˛
tan α −1
tan β 1
˛
˛
˛
˛
di questo
sistema e uguale a
tan α + tan β
e quindi > 0. Possiamo percio applicare la
regola di Cramer e otteniamo
x =
˛
˛
˛
˛
0 −1
c tan β 1
˛
˛
˛
˛
tan α + tan β=
=c tan β
tan α + tan β
mentre per y possiamo, se calcoliamo pri-ma x, usare direttamente la relazione y =
x tan α.
Esercizio: Prendendo il centimetro come
unita di misura e con l’uso di un gonio-metro verificare le formule con le distanze
nella figura.
Con questo metodo possiamo adesso ri-solvere un compito elementare ma fre-
quente di geodesia illustrato dalla figuraseguente.
y
xα β
c − x′
x′
y′
α′
β′
A B
C
C′
Assumiamo di conoscere la distanza tra i
punti A e B e, mediante un teodolite, di es-sere in grado di misurare gli angoli α, β,α′ e β′. Vorremmo conoscere la distanza
tra i punti C e C′, ai quali pero non pos-siamo accedere direttamente, ad esempio
perche da essi ci separa un fiume che nonriusciamo ad attraversare o perche si tro-
vano in mezzo a una palude. Se le distan-ze sono molto grandi (maggiore di 50 km),
dovremo appellarci alla trigonometria sfe-rica, per distanze sufficientemente piccole
invece possiamo utilizzare la tecnica vistasopra che ci permette di calcolare x, y, x′ e
y′, da cui la distanza tra C e C′ si ottienecome
|C − C′| =p
(x − x′)2 + (y − y′)2
Calcoliamo l’errore d − c che si commet-te approssimando la distanza d sulla sfera
terrestre tra due punti mediante la lun-ghezza c del segmento di retta che si ottie-
ne utilizzando la trigonometria piana:
c d − c
50 km 0.13 m
100 km 1 m500 km 128 m
1000 km 1029 m
In questo numero
11 Trigonometria oggiUn problema di geodesiaGrafica al calcolatore e geometria
12 Il triangoloIl triangolo rettangoloTriple pitagoroee
Le funzioni trigonometriche13 La dimostrazione indiana
Il triangolo isolatero
Angoli sul cerchio14 Il teorema del coseno
Il grafico della funzione seno
La periodicita di seno e cosenoAltre proprieta di seno e coseno
arcsin, arccos e arctan
15 Distanze in Rn
Il prodotto scalare
Ortogonalita
Esercizi 14-17
Grafica al calcolatore e geometria
La grafica al calcolatore e le discipline af-fini come la geometria computazionale e
l’elaborazione delle immagini si basano sullamatematica. E importante separare gli algo-
ritmi dalla loro realizzazione mediante un lin-guaggio di programmazione. E importante sepa-
rare la rappresentazione matematica delle figu-re nello spazio dalle immagini che creiamo sullo
schermo di un calcolatore.Il matematico e molto avvantaggiato in que-
sto. Gia semplici nozioni di trigonometria e digeometria affine e algebra lineare possono ren-
dere facili o immediate costruzioni e formule ditrasformazione (e quindi gli algoritmi che da es-se derivano) che senza questi strumenti mate-
matici risulterebbero difficoltose o non verreb-bero nemmeno scoperte.
La geometria proiettiva, apparentemente unavecchia teoria astratta e filosofica, diventa di
sorpresa una tecnica molto utile per trasfor-mare compiti di proiezione in semplici calco-
li.I concetti dell’analisi e della geometria differen-
ziale portano all’introduzionee allo studio delle curve e su-
perficie di Bezier, largamenteutilizzate nei programmi didisegno al calcolatore (CAD,
�
P0
��
P1 ��P2
�P3
computer aided design).Molte figure possono essere descritte median-
te equazioni algebriche; per questa ragione lageometria algebrica assume notevole importan-
za nella grafica al calcolatore moderna. Curve esuperficie possono essere date in forme parame-
trica oppure mediante un sistema di equazioni;le basi di Grobner forniscono uno strumento per
passare da una rappresentazione all’altra.La topologia generale, una disciplina tra la
geometria, l’analisi e l’algebra, e la base dellamorfologia matematica, mentre la topologia al-
gebrica e la geometria algebrica reale possiedo-no applicazioni naturali in robotica.
H. Pottmann/J. Wallner: Computational line geometry.
Springer 1999.
W. Bohm/H. Prautzsch: Geometric concepts for geometric
design. Peters 1994.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 3 12
Il triangolo
� �
A P’ C’ P C
B’
B
In questa figura i segmenti BC e B′C′ sono
paralleli. Nella geometria elementare si di-mostra che le proporzioni del triangolo piu
piccolo AB′C′ sono uguali alle proporzio-ni del triangolo grande ABC. Cio significa
che, se AB denota la lunghezza del segmen-to AB, allora
AB′
AB=
AC′
AC=
B′C′
BC
Se il valore comune di queste tre frazioniviene denotato con λ, abbiamo quindi
AB′ = λ · AB
AC′ = λ · AC
B′C′ = λ · BC
Una relazione analoga vale anche per le al-tezze:
B′P ′ = λ · BP
Dati tre punti A, B, C denotiamo con^(AC, AB) l’angolo α tra i segmenti AC e
AB:
A C
B
α
β
γ
Evidentemente 0 < α < 180◦.
Con β e γ indichiamo gli altri due angolicome nella figura; spesso serve solo la gran-
dezza assoluta degli angoli, allora si lascia-no via le punte di freccia.
Nella prima figura il triangolo piccolo e iltriangolo grande hanno gli stessi angoli,cioe
^(AC, AB) = ^(AC′, AB′)^(BA, BC) = ^(B′A, B′C′)
^(CB, CA) = ^(C′B′, C′A)
Si puo dimostrare ed e chiaro intuitivamen-te che, dati due triangoli con gli stessi ango-
li, essi possono essere sovrapposti in manie-ra tale che si ottenga una figura simile alla
nostra.Ogni triangolo puo essere considerato
(talvolta anche in piu modi - quando?) comeunione di due triangoli rettangoli.
A C
B
P
���
Le formule per i triangoli rettangoli sono
particolarmente semplici; conviene quindistudiare separatamente i triangoli APB e
PBC.
Il triangolo rettangolo
Il triangolo ABC sia rettangolo, ad esempio^(CA, CB) = 90◦.
A C
B
b
ca
�
Il lato piu lungo e quello opposto all’angolo retto,
cioe AB, e si chiama ipotenusa, i due altri latisono piu brevi e sono detti cateti.
La somma dei tre angoli α, β, γ di un triangoloe sempre uguale a 180◦:
α + β + γ = 180◦.
Cio implica che un triangolo puo avere al massi-mo un angolo retto (se ce ne fossero due, il terzo
dovrebbe essere zero e non avremmo piu un tri-angolo).
Teorema di Pitagora: Dato un triangolo ret-
tangolo e posto a := BC, b := AC e c := AB
come nella figura, si ha
a2 + b2 = c2.
Dimostrazione: Pag. 13.
Il teorema di Pitagora implica che l’ipotenusa e
veramente piu lunga di ciascuno dei due cateti(perche a, b > 0). La relazione c2 = a2 + b2 puo
essere anche usata per il calcolo di uno dei lati diun triangolo rettangolo dagli altri due:
c =√
a2 + b2
a =√
c2 − b2
b =√
c2 − a2
Triple pitagoree
Una tripla pitagorea e una tripla (a, b, c) di nu-meri naturali positivi tali che a2 + b2 = c2. La
tripla pitagorea si chiama primitiva, se a, b e c
sono relativamente primi tra di loro. Diamo una
tavola delle prime triple pitagoree primitive inordine crescente di c.
3 4 5
5 12 138 15 17
7 24 2520 21 29
12 35 379 40 41
28 45 5311 60 61
33 56 6516 63 65
48 55 73
Gli arabi possedevano gia nel 972 tavole simili aquesta.
Per n > 2 non esistono invece soluzioni
dell’equazione
an + bn = cn
con a, b, c interi > 0. La dimostrazione di questo
teorema (detto ultimo teorema di Fermat) e statamolto difficile; per circa tre secoli i matematici
l’avevano cercata invano e solo intorno al 1995Andrew Wiles ci e riuscito, utilizzando strumenti
molto avanzati della geometria algebrica.
Le funzioni trigonometriche
Consideriamo la seguente figura,
A C
B
b
ca
�b’
c’ a’
α
in cui a, b, c sono come prima i lati deltriangolo rettangolo piu grande e a′, b′
e c′ sono i lati del triangolo piu piccolo,che e ancora rettangolo. Le proporzioninella figura dipendono solo dall’angolo
α, si ha cioe
c′
c=
b′
b=
a′
a,
e da cio anche
a′
c′=
a
cb′
a′=
b
ac′
b′=
c
b
Questi rapporti sono percio funzionidell’angolo α che vengono dette fun-
zioni trigonometriche e denotate comesegue:
sin α :=a
c. . . seno di α
cos α :=b
c. . . coseno di α
tan α :=a
b. . . tangente di α
cotα :=b
a. . . cotangente di α
Dalle definizioni seguono le relazioni
a = c sin α = b tan α
b = c cos α = a cot α
c =a
sin α=
b
cos α
Esercizio. Calcolare sin 45◦, cos 45◦,
tan 45◦, cot 45◦.
Esercizio. I valori delle funzioni trigo-nometriche si trovano in tabelle oppure
possono essere calcolati con la calcola-trice tascabile oppure con una sempli-
ce istruzione in quasi tutti i linguaggidi programmazione. Ricavare in uno di
questi modi i necessari valori per cal-colare la distanza d e l’altezza a nella
seguente figura:
100 m
a
d
20◦
�
Pierre de Fermat (circa 1607-1665) so-stenne di conoscere una dimostrazionedel teorema che poi porto il suo nome,
ma non e mai stata trovata e si dubitamolto che sia esistita.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 3 13
La dimostrazione indiana
In una fonte indiana del dodicesimo secolo sitrova il seguente disegno, con una sola parola
in sanscrito: guarda!
c
a
b-a
a
Da esso si deduce immediatamente il teoremadi Pitagora:
Il nostro triangolo rettangolo abbia i latia, b, c con a < b < c. Allora l’area del qua-
drato grande e uguale a quella del quadratopiccolo piu quattro volte l’area del triangolo,
quindi
c2 = (b − a)2 + 4ab
2,
cioe
c2 = b2 − 2ab + a2 + 2ab = b2 + a2.
Esercizio: Disegnare la figura nel caso chea = b e convincersi che la dimostrazione ri-
mane ancora valida.
Il triangolo isolatero
Consideriamo adesso un triangolo isolatero dilato 1. In esso anche gli angoli devono essere
tutti uguali, quindi, dovendo essere la sommadegli angoli 180◦, ogni angolo e uguale a 60◦.
1
2
1
2
1 1
h
60◦
30◦
Dalla figura otteniamo
h =q
1 − 1
4=
√3
2
sin 60◦ = cos 30◦ =
√3
2
sin 30◦ = cos 60◦ =1
2
tan 60◦ = 2h =√
3
tan 30◦ =1
2h=
√3
3
Angoli sul cerchio
Siccome le lunghezze assolute non sono importanti,possiamo assumere che l’ipotenusa del triangolo rettan-
golo considerato sia di lunghezza 1 e studiare le funzio-ni trigonometriche sulla circonferenza di raggio 1.
Questo ci permette inoltre di estendere la definizionedelle funzioni trigonometriche a valori arbitrari di α,
non necessariamente sottoposti, come finora, alla con-dizione 0 < α < 90◦. Definiamo prima sin α e cos α per
ogni α con 0 ≤ α ≤ 360◦ come nelle seguenti figure:
α
1
cos α
sin
α
α = 0
cos α = 1
sin α = 0
0 < α < 90◦
α
cos α > 0sin α > 0
cos α
sin
α
α = 90◦
α
cos α = 0
sin α = 1
90◦ < α < 180 ◦
α
cos α < 0sin α > 0
cos α
sin
α
α = 180◦
α
cos α = −1sin α = 0
180◦ < α < 270 ◦
α
cos α < 0
sin α < 0
cos α
sin
α
α = 270◦
αcos α = 0
sin α = −1
270◦ < α < 360 ◦
α
cos α > 0
sin α < 0
cos α sin
α
Definiamo poi ogni volta
tan α :=sin α
cos αcotα :=
cos α
sin α
quando cos α 6= 0 risp. sin α 6= 0. Si vede subito che questa definizione coincide con quella
data a pag. 12, quando 0 < α < 90◦.
Quindi tan α =1
cot αquando entrambi i valori sono definiti.
Se α e infine un numero reale qualsiasi (non necessariamente compreso tra 0 e 360◦),
esiste sempre un numero intero n tale che α = n ·360◦ +α0 con 0 ≤ α0 < 360◦ e possiamodefinire cos α := cos α0, sin α := sin α0, tan α := tan α0, cot α := cot α0.
In matematica si identifica l’angolo con la lunghez-
za dell’arco descritto sulla circonferenza tra i punti E
e P della figura a lato, aggiungendo pero multipli del
perimetro della circonferenza se l’angolo e immaginatoottenuto dopo essere girato piu volte attorno al centro.
Se il centro del cerchio e l’origine (0, 0) del piano, pos-
siamo assumere che E = (1, 0). Siccome il perimetro
della circonferenza di raggio 1 e 2π, si ha 360◦ = 2π.
α
1
E
P
E chiaro che un angolo di g◦ e uguale ag
3602π,
in altre parole g◦ =2πg
360, e viceversa α = α
360◦
2πper ogni α ∈ R.
Infatti 1 =360◦
2π∼ 57.29577951◦
.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 3 14
Il teorema del coseno
Dato un triangolo con i vertici A, B, C po-
niamo ancora a := BC, b := AC e c :=AB. Denotiamo inoltre con cb la lunghez-
za della proiezione di AB su AC misuran-do a partire da A. In modo analogo sono
definite le grandezze ca, ba ecc. Se l’angoloα e ottuso, cb sara negativo. Sono possibili
quattro situazioni:
α
A C
B
b
c
a
�
In questo caso cb = b.
A C
B
α
ca
b
cb
A C
B
b
a
c
cb − b
α
P
Si osservi che qui cb e la lunghezza di tut-to il segmento AP .
B
A C
c
b
a
−cb
α
Teorema: In tutti i casi, quindi in ogni tri-angolo, vale la relazione
a2 = b2 + c2 − 2bcb.
Per simmetria vale anche
c2 = a2 + b2 − 2aba.
Dimostrazione: Quando cb = b, la formuladiventa a2 = c2 −b2 e segue direttamente
dal teorema di Pitagora.Nei rimanenti tre casi calcoliamo
l’altezza del triangolo con il teorema diPitagora in due modi.
Nella seconda figura abbiamo
c2 − c2
b= a2 − (b − cb)
2,
cioe
c2 − c2
b= a2 − b2 + 2bcb − c2
b,
per cui
c2 = a2 − b2 + 2bcb.
Similmente nella terza figura
c2 − c2
b= a2 − (cb − b)2,
la stessa equazione di prima.
Nella quarta figura infine abbiamo
c2 − (−cb)2 = a2 − (b − cb)
2,
che e ancora la stessa equazione.
Teorema di Pitagora inverso: Un tri-
angolo e rettangolo con l’ipotenusa c se esolo se
c2 = a2 + b2.
Dimostrazione: Dalla figura in alto a de-
stra a pag. 12 si vede che il triangolo erettangolo con ipotenusa c se e solo se
ba = 0 (oppure, equivalentemente, ab =0). L’enunciato segue dal teorema prece-dente.
Teorema del coseno:
a2 = b2 + c2 − 2bc cos α
Dimostrazione: cb = c cos α in tutti equattro i casi del precedente teorema (cfr.
le definizioni degli angoli sul cerchio apag. 13).
Il grafico della funzione seno
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
α
1
�
�
�
�
�
�
�
�
�
�
�
0π
2α π
sin
α
−π 0 π 2π 3π 4π 5π 6π
−1
0
1
Come si vede dalla figura e come sara dimostrato rigorosamente nel corso di Analisi,la funzione seno e iniettiva sull’intervallo chiuso [− π
2, π
2] e assume su questo inter-
vallo tutti i valori possibili per il seno, cioe tutti i valori tra -1 e 1. Possiamo quindidefinire una funzione biiettiva ©
α
sin α : [−π
2, π
2]−→[−1, 1]. L’inversa di questa fun-
zione viene denotata con arcsin. In modo analogo si definiscono l’inversa arccos della
funzione biiettiva ©α
cos α : [0, π]−→[−1, 1] e l’inversa arctan della funzione biiettiva
©α
tan α : (−π
2, π
2)−→(−∞,∞).
La periodicita di seno e coseno
Dalle definizioni date a pag. 13 segue che
cos(α + 360◦) = cos α
sin(α + 360◦) = sin α
per ogni numero reale α. Invece di 360◦ possia-mo anche scrivere 2π, quindi
cos(α + 2π) = cos α
sin(α + 2π) = sin α
per ogni numero reale α. Le funzioni sin e cos
sono quindi funzioni periodiche con periodo 2π.Facendo percorrere α l’asse reale e riportan-
do sin α come ordinata, otteniamo il grafico dellafunzione seno rappresentato in basso a sinistra.
Altre proprieta di seno e coseno
cos(−α) = cos α
sin(−α) = − sin α
per ogni numero reale α, come si vede dai disegni
a pagina 13. Il coseno e quindi una funzione pari,
il seno una funzione dispari.
Teorema di addizione:
sin(α + β) = sin α · cos β + sin β · cos α
cos(α + β) = cos α · cos β − sin α · sin β
Dimostrazione: Non richiesta. Una dimostrazio-ne geometrica si trova nei libri scolastici, una di-mostrazione analitica forse verra data nei corsi
di Analisi.
Esercizio: cos α = sin(α +π
2).
Verificare l’enunciato prima nelle illustrazionia pag. 13 e utilizzare poi il teorema di addizione
per la dimostrazione.
Esercizio: Calcolare sin 2α e cos 2α.
Teorema: sin2 α + cos2 α = 1.
Cio segue direttamente dalle definizioni geo-
metriche. Mentre queste proprieta algebrichedelle funzioni trigonometriche rimangono vali-
de anche per un argomento α complesso, cio none piu vero per le disuguaglianze | sin α| ≤ 1 e
| cos α| ≤ 1. Infatti, se dall’analisi complessa an-ticipiamo le formule
cos z =eiz + e−iz
2
sin z =eiz − e−iz
2i
valide per ogni numero complesso z, vediamo che
ad esempio cos ai =e−a + ea
2, quindi per a rea-
le e tendente ad infinito (in questo caso e−a ten-
de a 0) cos ai si comporta comeea
2e tende quindi
fortemente ad infinito.
arcsin, arccos e arctan
Queste funzioni, definite a sinistra, sono deter-
minate dalle seguenti relazioni:
arcsinx = α ⇐⇒ sin α = x
per −1 ≤ x ≤ 1 e −π
2≤ α ≤ π
2
arccosx = α ⇐⇒ cos α = x
per −1 ≤ x ≤ 1 e 0 ≤ α ≤ π
arctanx = α ⇐⇒ tan α = x
per −∞ < x < ∞ e −π
2≤ α ≤ π
2
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 3 15
Distanze in Rn
La distanza tra due punti x = (x1, x2) e y = (y1, y2) del piano reale R2 si calcola
secondo il teorema di Pitagora come
|x − y| =p
(x1 − y1)2 + (x2 − y2)2.
La distanza del punto x dall’origine e quindi |x| =p
x2
1+ x2
2e viceversa la
distanza di x e y e proprio la lunghezza del vettore x − y.
(y1, y2)
(x1, x2)
x1 − y1
x2−
y2
|x−
y|
0
x3
x1
x2
|x|
q
x21
+x22
Formule del tutto analoghe si hanno nello spazio tridimensionale R3. Calcoliamo
prima la lunghezza |x| di un vettore x = (x1, x2, x3) utilizzando la figura adestra, dalla quale si vede che
|x|2 = (p
x2
1+ x2
2)2 + x2
3= x2
1+ x2
2+ x2
3,
per cui
|x| =p
x2
1+ x2
2+ x2
3.
Se adesso y = (y1, y2, y3) e un altro punto, la distanza tra x e y sara uguale alla
lunghezza di x − y, quindi
|x − y| =p
(x1 − y1)2 + (x2 − y2)2 + (x3 − y3)2.
Per ogni n ≥ 1 possiamo definire lunghezze e distanze in Rn nello stesso modo.
Per x = (x1, . . . , xn) ∈ Rn poniamo
|x| :=p
x2
1+ · · · + x2
n,
e se y = (y1, . . . , yn) e un altro punto, la distanza tra x e y e la lunghezza di
x − y, cioe
|x − y| =p
(x1 − y1)2 + · · · + (xn − yn)2.
Il prodotto scalare
Siano come sopra x = (x1, . . . , xn) e y = (y1, . . . , yn) due punti di Rn. Calcolia-
mo la lunghezza |x + y| della somma dei due vettori; questo e anche in statisticail punto di partenza per la definizione del coefficiente di correlazione che, nono-
stante il nome prometta molto di piu, non e altro che un mezzo per confrontarex, y e x + y!
|x + y|2 =n
P
k=1
(xk + yk)2 =n
P
k=1
x2
k+
nP
k=1
y2
k+ 2
nP
k=1
xkyk
= |x|2 + |y|2 + 2n
P
k=1
xkyk
L’espressionen
P
k=1
xkyk si chiama il prodotto scalare dei vettori x ed y. Esso e di
fondamentale importanza per tutta la geometria. Introduciamo le abbreviazioni
‖x, y‖ := (x, y) := x1y1 + · · · + xnyn
La seconda e piu diffusa della prima, comporta pero il pericolo di confusionecon la coppia (x, y) che proprio nella statistica multidimensionale appare spessocontemporaneamente.
Sostituendo y con −y otteniamo
|x − y|2 = |x|2 + |y|2 − 2‖x, y‖.
I due punti x ed y formano insieme all’origine 0 un triangolo (eventualmentedegenerato) i cui lati hanno le lunghezze |x|, |y| e |x − y|. Assumiamo che iltriangolo non sia degenerato e sia α l’angolo opposto al lato di lunghezza |x− y|.
Per il teorema del coseno abbiamo
|x − y|2 = |x|2 + |y|2 − 2|x||y| cos α, da cui ‖x, y‖ = |x||y| cos α.
Ortogonalita
La formula fondamentale
‖x, y‖ = |x||y| cos α
rimane valida anche se x e y sono uno un multiplo
dell’altro, ad esempio y = tx per t ∈ R, pero entrambi6= 0 (cio implica t 6= 0). In questo caso infatti il triangolo
determinato da x, y e 0 e degenerato, ma e naturale as-segnare all’angolo tra x e y il valore 0 (per cui cos α = 1)
se t > 0 e invece il valore 180◦ (cosicche cos α = −1) set < 0.
Inoltre ‖x, y‖ = ‖x, tx‖ = t‖x, x‖ = t|x|2 e |x||y| =|x||tx| = |t||x||x| = |t||x|2. Dimostrare queste relazioni
e concludere da soli, stando attenti ai segni.Quindi se i due vettori sono diversi da zero (cio implica
che anche |x| 6= 0 e |y| 6= 0), allora essi sono ortogonali
(cioe α = 90◦ oppure α = 270◦) se e solo se cos α = 0,cioe se e solo se ‖x, y‖ = 0.
Siccome infine ‖x, 0‖ = 0 per ogni x, e naturale in-cludere anche il vettore 0 tra i vettori ortogonali ad x.
Raccogliendo tutto possiamo percio dire:
Due vettori x ed y di Rn sono ortogonali se e solo se
‖x, y‖ = 0.
Esercizi per gli scritti
14. Dalla figura si vede che la lunghezza c della corda
(cioe del segmento di retta) tra A e B e uguale a 2r sinα
2,
mentre la distanza (cioe l’arco) d sul cerchio tra A e B
(nell’ipotesi 0 ≤ α < π) e uguale ad rα.
r
A
B
α
La funzione cordale ©x
2 sinx
2e probabilmente la piu
antica funzione trigonometrica e venne tabulata gia daIpparco da Nikaia (Nicea) nel secondo secolo prima diCristo (tavola delle corde). Gia i babilonesi possedevano
pero una rudimentale trigonometria, di cui erano moltoorgogliosi.
Calcolare la differenza d−c, che corrisponde all’erroreche si commette usando c al posto di d per misurare la
distanza tra i punti A e B sulla sfera terrestre, che pos-siede un raggio medio r di 6371 km, per
c = 1 km, 10 km, 50 km, 100 km, 500 km, 1000 km.
Attenzione: Se sin β = u, come si calcola β?
15. tan(x + y) =tan x + tan y
1 − tan x tan y.
16. cos 5x = 16 cos5 x − 20 cos3 x + 5 cos x.
17. Quanto e lunga la diagonale di un cubo unita-
rio (cioe di lato uguale a 1) m-dimensionale , cioequal’e la distanza dm del vettore (1, . . . , 1) m-
dimensionale dall’origine?Il raggio della sfera m-dimensionale iscritta in un
tale cubo e invece sempre uguale a 1
2, quindi la sfera
iscritta dista di dm − 1
2dai vertici del cubo e, sicco-
me questa espressione diventa sempre piu grande,il cubo m-dimensionale al crescere di m assomiglia
sempre di piu a un riccio con corpo sferico e aculeisempre piu lunghi.
Corso di laurea in matematica 4 Corso di Algoritmi e strutture di dati � © � Docente: Josef Eschgfaller
� � � � � ��� � � �� � � � � � � � � � �
Corso di laurea in matematica Anno accademico 2004/05 Numero 4
R
R e un linguaggio di programmazione ad altissimo livello orientato so-
prattutto all’uso in statistica. In verita lo sbilanciamento verso la stati-
stica non deriva dalla natura del linguaggio, ma dalla disponibilita di
grandi raccolte di funzioni statistiche e dagli interessi dei ricercatori che
lo hanno inventato e lo mantengono. R e gratuito e molto simile a un lin-
guaggio commerciale, S, creato negli anni ’80 e anch’esso molto usato. S
viene commercializzato come sistema S-Plus. Le differenze non sono gran-
dissime se non sul piano della programmazione, dove R aderisce a una
impostazione probabilmente piu maneggevole.
R ed S-Plus sono particolarmente popolari nella statistica medica, ma
vengono anche usati nella statistica economica o sociale, in geografia, nel-
la matematica finanziaria. L’alto livello del linguaggio permette di creare
facilmente librerie di funzioni per nuove applicazioni. Il punto debole e
la velocita di esecuzione in calcoli numerici in grandi dimensioni, mentre
sono ricchissime le capacita grafiche.
Benche cosı indirizzato verso la statistica, R non deve essere conside-
rato un pacchetto di statistica. E un vero linguaggio di programmazione,
anzi un linguaggio di programmazione molto avanzato, e cio permette di
adattarlo ad ogni compito informatico. Nella stessa statistica questa fles-
sibilita e molto importante proprio oggi, dove continuamente si scoprono
nuovi bisogni applicativi, nuove necessita di tradurre metodi matema-
tici, ad esempio nella statistica di complessi dati clinici o geografici, in
strumenti informatici.
Le funzioni d’aiuto
R dispone di numerose funzioni d’aiuto.Da un lato ci sono varie guide disponibi-
li sul sito, dall’altra parte si possono invo-care gli aiuti mentre si sta lavorando conil programma. Con������������������� �"!appare una pagina web (mantenuta sulvostro PC) attraverso la quale si accede
a manuali e informazioni generali. Clic-cando sulla voce Packages si trovano elen-
chi dei molti pacchetti di base o aggiuntividisponibili.
Dopo������������������� �"!
le informazioni diaiuto appaiono sullo schermer del brow-
ser; per disattivare questa modalita si puousare # �$��% #�& �'�(����)������$����*�+$,$-$.�/0! dal termi-nale. Infatti spesso si lavora piu veloce-
mente rimanendo sul terminale. Ci sonodiversi modi per ottenere le informazioni
d’aiuto. Il modo piu semplice, ma molto ef-ficiente e di anteporre un punto interroga-
tivo al comando su cui si desidera saperedi piu; con12���$���������������vengono fornite i dettagli sull’utilizzo del-la�������3���������$�
. R distingue tra il nome 4 diuna funzione e la sua invocazione con 4 �"! ;naturalmente la parentesi puo anche con-tenere argomenti. Proprio su questi argo-
menti si consultera spesso l’aiuto in linea.Leggendo piu attentamente il testo della
guida si osserva che le funzioni di R han-no spesso argomenti opzionali determina-
ti dal loro nome; cio e tipico dei linguaggiin qualche modo derivati dal Lisp e verra
ancora trattato con piu dettaglio.Per uscire da un file informativo chia-
mato con1
basta premere il tasto 5 . Da
R si esce con 5 �"! o, equivalentemente, con5�6 %�� �"! . Per saperne di piu si puo usare il
comando1 5 ; le informazioni che ci vengo-
no fornite a questo punto sono piu com-plicate del necessario, come invero acca-
de spesso, d’altra parte il sistema di aiutoin linea di R e veramente molto comple-
to anche se non perfettamente organizza-to, perche richiede che si sappia gia come
si chiamano i comandi e perche i comandinon sono raggruppati bene secondo le fun-
zionalita. Per sapere di piu su���$���
usare1��������.
Esiste comunque un’altra funzione chepermette di cercare informazioni su co-
mandi di cui non si conosce il nome osu gruppi di comandi. Questa funzione e�0����������������72�
; per capire come bisogna uti-
lizzarla battiamo12������������������72�
. Assumia-mo adesso che cerchiamo le funzioni trigo-
nometriche. Proviamo prima con
���������8��������7��9�2:"���0%�; # :�!trovando una breve pagina d’aiuto che cirimanda al pacchetto < ��%�; . Se adesso bat-
tiamo1 < ��%�; , troviamo l’elenco delle fun-
zioni disponibili
7 # �'�8=�!��% & �8=�!��� & �8=�!�$7 # �>��=�!�$��% & ��=�!����� & ��=�!����� &0? ��@BA�=0!
con l’indicazione degli argomenti, seguito
da un’esposizione sull’uso.
In questo numero
16 R
Le funzioni d’aiutoInstallazione di RIl libro di Crawley
17 Programmare in RProgrammi autonomiNomi in R
Assegnamento18 Successioni
Angoli espressi in gradi
Figure di LissajousI commentiLa matematica del futuro
Esercizi 18-22
Installazione di R
Per l’uso e l’installazione di R sotto Windowspossiamo dare solo informazioni molto vaghe.
Il sito a cui rivolgersi e, per ogni sistema ope-rativo,
www.r-project.org/
dove, per copiare il programma, si sceglie CRANe poi uno dei siti depositori; quello che funziona
meglio e forse cran.r-mirror.de. Nella voce FAQesiste invece una guida per Windows.
L’installazione sotto Linux e molto semplice.Si ritira il file .rpm adatto per la propria versio-
ne di Linux e poi lo si installa, diventando� #�# � ,
con
���$)DC�E$F�� &�# )��$C�G$����C 4 %���� �(����)A questo punto, tornati utenti normali, bastabattere H dalla tastiera e il programma parte.
Sotto Windows viene consigliato di lanciareI0% &�J�H ; 6 %B����=$� oppure di creare un shortcut aquesto file.
Il libro di Crawley
One of the objectives of statistical analysis is todistil a long and complicated set of data into
a small number of meaningful descriptive sta-tistics. Many of the modern computer statisticspackages, however, do exactly the opposite of this.
They generate literally pages of output from themost meagre sets of data. This copious output
has several major shortcomings: it is open to un-critical acceptance; it can lead to over interpre-
tation of data; and it encourages the bad habitof data trawling (dredging through the output
looking for significant results without any priornotion of a testable hypothesis).
S-Plus, on the other hand, tells you nothingunless you explicitly ask for it ... The computing
is presented in S-Plus, but all the examples willalso work in the freeware program R, which can
be downloaded from the web, free of charge, any-where in the world ... S-Plus encourages goodhabits of data exploration by providing a superb
range of graphical facilities.La statistica, in fondo, si sviluppa attorno a
questa domanda: What do we mean when we saythat a result is significant?
M. Crawley: Statistical computing. Wiley 2004.
& www.bio.ic.ac.uk/research/mjcraw/crawley.htm
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 4 17
Programmare in R
Benche si tratti di un linguaggio ad alto li-
vello, gli ideatori di R preferiscono presen-tare R come linguaggio con cui lavorare in
linea e non mediante l’esecuzione di pro-grammi scritti su files. Oggigiorno cio non
e perfettamente comprensibile ed e comun-que possibile scrivere programmi e farli ese-
guire nel modo familiare ai programmatoricon la tecnica che adesso descriviamo.
Prima creiamo una nuova cartella (direc-
tory) in cui vogliamo svolgere un determi-nato lavoro.
Poi in questa cartella creiamo il file.Rprofile che contiene solo queste righe:
���������������� ������������ ������������������� ����!�!"Le istruzioni contenute in .Rprofile vengo-
no, come vedremo nel prossimo numero,eseguite alla partenza di R.
Adesso creiamo un file prove in cui scri-viamo (per il momento) tutto il resto del
programma, ad esempio
�#�#�����! �������%$��� ��$!�&�%'�$�(!$��!"���� )�*�)�%+��-,�.%/�0.��
La funzione � cosı definita corrisponde alla
funzione matematica 1 2�3�4 2�5 , mentre ���! e la funzione elementare di visualizzazione(un po’ complicata anch’essa come tutte le
funzioni di input/output di R) che qui visua-lizza 687*9�: per 9<;�= ..%/�0. e il carattere di invio che,nell’output, fa in modo che dopo la vi-
sualizzazione il programma torni su unanuova riga.
Per eseguire il programma battiamo R
dalla tastiera e poi, una volta in R, diamoil comando
���!���>���che, in accordo con la sua definizione, caricail file prove ed esegue le istruzioni in esso
contenute. Viene visualizzato il risultato:?&@A?�B!C�D�B!E�F�Gcioe 3�40H , come possiamo verificare aggiun-
gendo la riga
���! &�%��$!�&��' G �-,�.�/�&.��a prove. Cosı possiamo continuare a lavora-
re, rimanendo in R, ma scrivendo il pro-gramma e le sue modifiche in prove, usan-
do il terminale solo per ripetere il comando���!������� (a questo scopo in ambiente Linux e
sufficiente premere il tasto I che utilizza lastoria dei comandi dati in precedenza che si
trova nel file nascosto .Rhistory nella nostrastessa cartella).
Forse non tutti conoscono il valore del nu-mero 3 ; esso e uguale ad 3�J , quindi lo pos-
siamo visualizzare aggiungendo
���! &�%��$!�&� B �-,�.%/!&.��al nostro programma, cioe al file prove.
Vediamo cosı che 3K;�=ML N�O�P�=�P�= , se calcolato
sulle prime 6 cifre dopo il punto decimale,perche in verita 3 e un numero trascenden-
te, cioe non e radice di un polinomio a co-efficienti interi, e quindi sicuramente non erazionale.
Per scrivere il programma dobbiamo usare
un editor che crea soltanto files in forma-to testo puro o impostare questa modalita
nell’editor che vogliamo usare.
Programmi piu grandi verranno scritti supiu files, ad esempio prove, funzioni, grafi-
ca. In tal caso possiamo o modificare la fun-zione principale nel file .Rprofile,
���!�����#������ ������������ ��������>���������! ����!�� �����������������Q���������!�� ������������SR����������������!"Bisogna stare un po’ attenti all’ordine in cui
le inclusioni vengono effettuate; infatti unaltro punto debole di R, che deriva dalla fi-
losofia di voler costringere l’utente a pro-grammare sul terminale, e che le funzio-
ni possono essere ridefinite, possibilita checompromette notevolmente la trasparenza
dei programmi se il programmatore non eabituato ad organizzare bene il proprio la-
voro. Esempio:Cancelliamo tutto il contenuto del file
prove, scrivendo poi
�T�����U�� �����V�W$��� $�(!$�"�T�����U�� �����V�W$��� '�$�"���! )�*�)� D �-,�.%/!&.��
Se eseguiamo il programma con �������>��� vie-ne visualizzato ' D . Cio e comodo nel lavoro
sul terminale, ma piuttosto problematicoquando si vogliono creare programmi piu
consistenti o librerie di funzioni.
Programmi autonomi
Dal punto di vista della filosofia Unix, latecnica di programmazione che abbiamo
usato nell’articolo precedente, ha un neoimportante. Infatti il programmatore Unix
e abituato che tutti i programmi possono es-sere combinati tra di loro, cioe che possono
essere eseguiti da un altro programma e chesi possono scambiare dati. La nostra tecni-
ca non crea pero files eseguibili autonoma-mente perche richiede l’esecuzione dal ter-
minale di R.Praticamente tutti gli altri linguaggi in-
terpretati permettono, sotto Unix, la crea-zione di programmi eseguibili semplice-mente mettendo nella prima riga del file il
comando
X8Y ��� ����������! ��che fa in modo che il resto del file venga ese-
guito dall’interprete indicato. Per un pro-gramma in R dovremmo quindi scrivere
X8Y[Z � � Z�\ �� Z�]�Z
Per ragioni misteriose questa possibilita per
R non e mai stata realizzata.Si puo ovviare a questo problema scriven-
do nella prima riga
Z � � Z!\ �� Z!] '�' � ���� ���^�^�_Benche funzioni (almeno in ambiente Unix
o Linux), non e molto soddisfacente, ancheperche in ogni esecuzione R viene caricatocon molte delle sue librerie e quindi l’avvio
e lento; i tipici programmi Unix si caricanoin genere solo con quanto e necessario per
poter partire.
Nomi in R
Nomi (detti anche identificatori) in R consi-stono in una lettera ( ` '�a���'�Q ) seguita da una
o piu caratteri che possono essere lettere, ci-fre o punti. Quindi
���!���� D�E��$ @*E�C�C �sono nomi ammissibili, mentre non lo sonoD�E � , @*C � F , � E _ D . In R (come in C o in Perl)
bisogna distinguere tra minuscole e maius-cole.
Bisogna anche evitare i nomi riservati diR. Purtroppo in R anche alcuni caratteri sin-
goli sono riservati:
�b cd efg
inoltre ci sono parecchi nomi che consistono
di due lettere, ad esempio h � e �� . Questascelta sicuramente non e ottimale. Ad esem-
pio non possiamo usare per il tempo e nem-meno
eper le funzioni.
Assegnamento
L’assegnamento di un valore (spesso rappre-sentato da un’espressione) a una variabile $avviene mediante l’istruzione
$#�� ������!���Esiste anche la forma tradizionale (legger-
mente piu generale)
$i^�'j ������!���sicuramente meno leggibile. Per saperne dipiu usare k ��^�'U� .
Piu istruzioni sulla stessa riga devono es-
sere separate da un punto e virgola, mentreil punto e virgola alla fine di una riga e (a
differenza dal C) facoltativo:
$�� B�?�lnm ��$�(�$�_�+ l ���� )� m ,�.�/�&.�� l���! )���%$�_ m � Z +>,�.%/�0.�� lcon output
B�? +E�F
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 4 18
Successioni
Uno dei punti forti di R e che molte fun-
zioni sono definite direttamente per succes-sioni finite di valori. Cio significa che se
definiamo una funzione in R per la fun-zione matematica � ����� , la possiamo im-
mediatamente applicare a una successio-ne ����� ����������� per ottenere la successione����� � ���� ������� � . In C allo stesso scopo bisognalavorare con un ciclo, ad esempio un ����� , e
riflettere sulla struttura di dati che si vo-gliono utilizzare; in Lisp e Perl si puo usa-
re la funzione ����� che, data una funzione � ,trasforma la successione nella successione������� � ���� ���������� � ��� . In R e tutto molto piu
semplice e automatico: �! �#"%$%� !�&('�)�* � &,+�-�.�/#-�0�- 1! $ '2+�35476�478�4�9�4;:�.< $ �! �#" +�!=.' � )>+ < 4�?;@�&?�.con output3A9CBD3�ED6�:Si osservi qui che la successione
!e stata
creata utilizzando l’operatore', il cui nome
viene da concatenate e che unisce una se-quenza di valori in un unico oggetto.F '
per dettagli.
Anche le operazioni algebriche vengono ese-
guite su tutti gli elementi di una successio-ne; possiamo ad esempio moltiplicare una
successione con un numero oppure anchedue successioni tra di loro. Esempi:! $ '2+�35476�478�4�9�4;:�.5G < $ '�+76�4�354;8�47:�47E�.5G' � )>+H!�I < 4�?7@�&?J.5G' � )>+H!(0 < 4�?7@�&?J.5G' � )>+H!�I�3�K�4�?7@�&L?�.5G' � )>+�3�K�0�!4�?7@�&L?�.5Gcon output8%8DEMBN3�36%6DBM6#KD8#K3�3M3�6C3�8C3�9N3�:3�KD6#KD8#KM9�KD:#KUn operatore molto utile per generare suc-cessioni di valori equidistanti e la funzioneO#P#Q . Il risultato diO#P#Q + � 4HR=.e la successione� 4 � I�354 � I�6�4�S�S�Sche e continuata fino a quando non si supe-
raR. Il passo di progressione e quindi T se
non viene impostato come terzo argomento:O#P#Q + � 4HR4 � .restituisce la successione� 4 � I � 4 � I�6 � 4�S�S Sanch’essa continuata fino a quando l’ultimo
valore non superaR. Esempi:! $ O#P#Q +�K>47:�.5GU' � )>+H!4�?;@�&?�.5G! $ O#P#Q +�K>476�4�KS�8�.5GU' � )+H!4�?7@�&?�.5G! $ O#P#Q +78S�V�47B�.2GU' � )>+H!L4�?7@�&?J.5G! $ O#P#Q +78S�V�47:�47KS�6�.5GW' � )>+H!4�?;@�&?�.5G
OtteniamoKX3A6M8M9D:KDKS�8�KLS�E%KS�BD3�S�6N3�S�:D3�S�Y8S�V�9S�VD:>S�V%ES�VMV>S�V%Y>S�V8S�V%8>S�BM9S73Z9LS�8%9S�:�9S�VM9S�BAngoli espressi in gradi
Successioni possono essere valori di unafunzioni. Creiamo ad esempio una funzione[ P ��" P per la risoluzione del problema geo-detico visto in precedenza. Questa funzione
restituisce una successione \ i cui compo-nenti \^] T�_ e \^] `�_ sono � e a come a pagina
11. A differenza dal C l’indice delle succes-sioni parte da T . Per il b di pagina 11 usia-
mo la variabileR � O#P , perche
'e una parola
riservata.
Siccome vogliamo poter indicare gli ango-li in gradi, definiamo prima tre funzioni che
corrispondono alle funzioni trigonometrichec#d�e e�f g e hJi g per angoli espressi in gradi.
L’argomento va quindi moltiplicato con jT�k�lcome visto a pagina 13.m � *#n�3#Y#K' � & O ) � * " 3�Y#K $ KSHK�3#V#9 :�8�6 B�6�:�3�B B#9 8�GmMo !�&�p�* � &(*Z) � *�q � & ��� P ) � *�'�r P � P �m � &�q � s *%*�& " *�' � )�*M*�&Dq ����" *�St � O $%� !�&('�)�* � &,+�-�.%/ ' � O +�-�0�' � & O ) � * " 3�Y#K�.#1u�*�& $%� !�&('�)�* � &,+�-�.%/ O *�&L+�-�0�' � & O ) � * " 3�Y#K�.#1v � & $%� !�&('�)�* � &,+�-�.%/�) � &L+�-�0�' � & O ) � * " 3�Y#K�.#1mMw ��� R s P ����" *Aq P �#" P O * �%����� q�*�& � 3�3�Sm [ s * � &�q ��s * <�P &�q � & � *�& " *�' � )�*M*�&Cq ���#" *�S[ P �#" P $M� !�&('�)�* � &,+�R � O#P 4 ��s���� 4�R P ) � ./#) � & ��s#���#$ v � &+ ��s���� .5Gx) � &�R P ) �#$ v � &+HR P ) � .5G- $ R � O#P 0�) � &�R P ) � n�+�) � & ��s#��� I#) � &�R P ) � .5Gy $ -�0�) � & ��s���� GU'2+�-�4 y .�1! $ [ P �#" P +78�Y�4;E�6�4�9 V�.5Gz- $ !�{;3�|�G y $ !�{�6#|�G' � )>+�-�4 y 4�?7@�&L?�.5GLa base del triangolo era di }�k mm, gli an-goli di approssimativamente ~�` e �(� gradi.
L’output e3#8>S�V�B�B�K Y�6�:>S�B :�6�8#Ke corrisponde abbastanza bene alle misure
reali.
Useremo da ora in avanti per le funzionisempre nomi che iniziano con una maius-cola, ricordandoci che sono riservati i nomit�4W�4 o 4��54 v
.
Figure di Lissajous
Illustreremo nel prossimo numero le capa-
cita grafiche di R. Provare intanto questoesempio che dovrebbe far apparire una fi-
gura di Lissajous, cioe una curva con unarappresentazione parametrica tipicamentedella forma �H��� c#d�e��Z� e�f g��� � per � �C�Z� .- $ O#P#Q +7K�476 0 � *24 s P &�q#)#r $ 3�K�K�K�.s � ) �#$ '�+7��354�3 .m ��s�� )N* ����� O ) �%s�� q ����� * ' � S�(s�� )>+ s � ) � 4 s � ) � 4) y � P $=� & � 4�- s�� R $=��� 4 y s�� R $=� � .s *�& P O + O *�&+7Y�0�-�.54 O *�&+7V 0#-�.�.s � ' � ) �#� +H& $ 6�4�) y � P $=�;�2� .m t s *�' ' ��� P 6 < ��s ) P S" P�< S ��� � +�. mA� O '�* � P " ��s�s � q ����� *�' � S
I commenti
Se una riga contiene, al di fuori di una
stringa, il caratterem, tutto il resto della ri-
ga e considerato un commento, compreso il
caratterem
stesso.Molti altri linguaggi interpretati (Perl, Py-
thon, la shell di Unix) usano questo simboloper i commenti. In C una funzione analoga e
svolta dalla sequenzan�n
.
La matematica del futuro
The main scientific challenges of the twenty-
first century may no longer be divided intothe classical disciplines of mathematics, in-
formatics, physics, chemistry, biology, etc. Forexample, theoretical biology is currently in
the phase of formulating laws of nature interms of mathematical statements; quantum
chemistry has already become an importantresearch field in applied mathematics; phy-
sics needs more and more input from compu-ter science and mathematics, including logic
and informatics; and, outside of the naturalsciences, financial mathematics has develo-
ped highly reliable tools for economic marketand stock analysis. But how will researchersbe motivated to do interdisciplinary research
in a university environment, given the cur-rent system in which academic careers (typi-
cally) advance based upon a record of publi-cation in a single field?
www.wpi.ac.at/
And the missing ingredient in facing thoseproblems ... is mathematics.
D. Donoho: High-dimensional data analysis
- the curses and blessings of dimensionality.
Internet 2000, 32p.
Esercizi per gli scritti
18. �;`�T ��� ~`���� T#�19. � ` T � � ~�` � � � T `��~ ` �
Qual’e la ragione per cui nella secondariga del prodotto riappare il secondo fat-
tore?
20. � T�`}�� � �� ~ �k���T#l �= � `(T�` ��`����� � ��~=T �
21. �� l T�`� `�Tk�~�}¡¢ �� ` ���T~�`
¡¢= �� T�~ �` ��`��� k � `
¡¢22. La traccia hJ£�¤ di una matrice ¤ e la
somma degli elementi nella sua dia-gonale principale. Una matrice `¦¥§`�L¨ª©b�« �§� ¤ puo (in parte) essere con-
siderata come elemento � ¨ © �b��«(� di �¬ .Possiamo quindi formare il prodotto sca-
lare ®�¤W�¯Z® di due matrici `U¥%` in �¬ .Dimostrare che ®�¤W�¯�® � hJ£�¤¯ � , dove¯ � denota la matrice trasposta di ¯ , cioela matrice che si ottiene da ¯ scambian-do righe e colonne.
Corso di laurea in matematica ° Corso di Algoritmi e strutture di dati ±³²µ´ Docente: Josef Eschgfaller
� � � � � ��� � � �� � � � � � � � � � �
Corso di laurea in matematica Anno accademico 2004/05 Numero 5
La grafica di R
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18
19 20 21 22 23 24 25
R possiede ricche capacita grafiche,
pero anche molti comandi per la
grafica che e difficile imparare con
tutte le loro opzioni. Da un lato si
puo usare l’aiuto in linea (provare���������,������������������ "!����
,���� �#
,��$"!�#�%��
,��$���&�����!�#,������'"&���(
), dall’altro lato
pero e utile una certa disciplina
nell’impiegare una serie scelta e
ben composta di comandi che si
padroneggia. Cercheremo anche noi
di fare cosı, ad esempio utilizzando
il comando�������
in genere solo per
predisporre la finestra grafica su
cui successivamente le immagini verranno create con comandi separati,
anche se molte figure potrebbero essere ottenute con un unico comando�������complicato.
In particolare useremo sistematicamente comandi�� �#
separati dalle
istruzioni di disegno. Infatti il comando�� �#
permette una perfetta impo-
stazione dei parametri grafici (colore, spessore delle linee, disposizione
degli assi, caratteristiche dei testi che appaiono nelle figure, dimensioni
varie, possibilita di linee tratteggiate in vari modi), quindi nonostante
la molteplicita delle opzioni andrebbe studiato bene, ma il suo utilizzo
risulta piu trasparente se viene usato in modo esplicito al di fuori degli
altri comandi. La figura nell’inserto e spiegata a pagina 22.
plot e lines
Diamo solo le varianti essenziali di questicomandi. In particolare useremo )+*-,/. solo
per predisporre la finestra grafica, non peril disegno stesso. Per far apparire la figura
in una finestra sotto Linux in alcune ver-sioni di R bisogna prima chiamare il dis-
positivo grafico con 0+1-1"243 , ma non sembrapiu necessario nelle versioni piu recenti.
Per terminare il lavoro del dispositivo gra-fico si usa 57698�:;,/<-<�2=3 .)+*-,9. richiede (nell’uso che ne facciamo)come primi argomenti l’indicazione dei li-
miti per le coordinate > ed ? , entrambinella forma @�2BA�C;DE3 . Se vogliamo disegnare
il coseno, possiamo ad esempio impostarel’intervallo per > con F�GH.7I-JH@�2LK-M7N�)OF�CBM7N�)OFH3e l’intervallo per ? con F�GH.7P-JH@�2LKH1"C=1-3 .
I comandi di base per impostare la fine-stra grafica sono allora i seguenti:
F�GH.7I-JH@�2LK-M7N�)OF�CBM7N�)OFH3"QRF�G7.7P-J+@�2BKH1"C41-3)+*7,/.�2LF�GH.7I�CLF�GH.7P�C;.7P9)+69JESLG�SOCIH*-ATDHJES7SOCUP7*-A/DHJES-SOCAHV�)HJ+1"CLA9I767V/J-W7X-Y7Z/[�C;<-\HAT]O6�:^)+*-,9.7J9_-`9aH[O357698�:;,/<-<�2=3
Se eseguiamo il programma, vedremo per
un istante lampeggiare la finestra graficache pero si chiude subito. Per poterla guar-dare, inseriamo *-,7@-A/.H,/\�241-3 nella penulti-
ma riga; il parametro 1 indica che il pro-gramma aspetta che clicchiamo una volta
sull’immagine, prima di chiuderla. Vedia-mo allora un quadrato nella finestra che
e stato disegnato a causa dell’indicazione<-\HAT]O6�:^)+*-,9.7J9_-`9aH[ nel comando )+*-,/. .A9I76HV/J9W7X-YHZ/[ significa che gli assi dellecoordinate non vengono mostrati; A7VT)HJ+1 e
spesso utile per imporre che le coordina-te > ed ? vengano utilizzate nella stessa
scala ( A7V�)HJHM farebbe in modo che le coor-dinate ? appaiono in scala doppia rispetto
alle coordinate > ); IH*-ATD e P7*7ATD riguardanole scritte che appaiono ai lati del diagram-
ma; infine .7P9)+69JESLG�S indica che )+*-,/. vieneusato solo per l’impostazione e non per di-
segnare una figura.A questo punto, far apparire nella fine-
stra il grafico del coseno. e sufficiente in-serire la riga
*7F�G+67V�2UI�CL@9,HV�2UI+3-3Infatti, l’operazione a cui corresponde*HF�G+67V matematicamente puo essere de-scritta in questo modo: Se sono da-
ti due vettori >cb d;>�eOf-g-g-g7f�>�hji e?kb d;? e f-g-g-g-fT? h i , allora *7F�G+67V�2UI�CUP+3unisce il punto d;>�eOf�?"e9i con dU>�l"f�?Ol7i ,il punto d;> l f�? l i con dU>�m"f�?Om7i , ..., edU>�honpeOf�?Ohonpe9i con d;>�hqf�?Ohji . Quindi se re una funzione, con *7FTG+67V�2UI�C;<�2UI+373 otte-
niamo un’approssimazione poligonale del-la funzione r che, in una figura normale,
per s sufficientemente grande (ad esem-pio maggiore di t-uHu+u ) sembrera una rap-presentazione perfetta della funzione.
Possiamo utilizzare la stessa funzione*HF�G+67V per aggiungere alla figura (che ve-
diamo nell’inserto a destra) le rette ?vbwte ?jbyx�t . Per fare cio uniamo con una ret-
ta i punti d=x{z+|}f/t7i e dUzH|}f9t e con una se-conda retta i punti d=x{z+|}f-x~t-i e d;zH|�f-x�t7i :*7F�G+6HV�2L@�2BK7M7N�)OF�CLM7N�)OF73�CL@�2=1"C41-3-3*7F�G+6HV�2L@�2BK7M7N�)OF�CLM7N�)OF73�CL@�2BKH1�CBKH1-3-3
In questo numero
19 La grafica di Rplot e lines
Il comando postscript20 I numeri binomiali21 La formula di Stirling
Coordinate polari nel pianoCoordinate cilindriche nello spazioCoordinate polari nello spazio
Rotazioni nel piano22 Numeri complessi in R
Funzioni in R
pointssymbols e rectEsercizi 23-27
Il comando postscript
Per far apparire questa figura sullo schermousiamo quindi
F�GH.7I-JH@�2LK-M7N�)OF�CBM7N�)OFH3"QoF�G7.7P7JH@�2BKH1�C=1-3)+A9\�2�]+A7F9JH@�2U��CB��CU��CU�O3-3)+A9\�2B*/�757J-��:;��C�DH�-JES4PH6-*-*-,/��S/3)+*7,/.�2LF�GH.7I�CLF�GH.7P�C;.7P9)+69JESLG�SOCUI7*-A/DHJES-SOCBP7*-ATDHJ"S-SOCA7V�)HJ+1�CBA9I767V9J9W7X-Y7Z9[�C;<-\HA/]+6�:^)+*7,/.7J9_-`-a7[O3I-J+V969��2BK7M7N�)OF�CLM7N�)OF�CL*-6TGH�9.-�HJ+1T�-�7�+3*7FTG+67V�2UI�CL@9,7V�2BI+3-3*7FTG+67V�2L@�2BK-M7N�)EF�CBM7N�)EF73"CL@�241"C=1-3-3*7FTG+67V�2L@�2BK-M7N�)EF�CBM7N�)EF73"CL@�2LKH1"CBKH173-3*-,H@9A/.H,/\�2=1-357698�:;,/<-<�2=3Se vogliamo invece conservare l’immagine in
un file in formato PostScript, possiamo usareil comando )+,7V/.+V-@T\+FT)7. come nella seguente se-
quenza di istruzioni, dove abbiamo anche toltol’istruzione interattiva *-,H@9A/.H,/\�2=1-3 :)+,HVT.+V-@T\OF�)7.�2�S�:-:;�T)OV-�H1/�-K7@-,7V96TG+,�:^)OV+SOC�+F/59.9�+J7M�:���C;�+67F/�/�H.7J-��:;��C�+,/\+F/�H,TG7.HA-*-J9W7X-Y7Z9[�CB,TG+69<+F9*-69J-W7X-Y7Z/[�C)+AT)+6/\HJESTV�)+6H@-F9A-*OS93"QF�GH.7I-JH@�2LK-M7N�)OF�CBM7N�)OFH3"QoF�G7.7P7JH@�2BKH1�C=1-3)+A9\�2�]+A7F9JH@�2U��CB��CU��CU�O3-3)+A9\�2B*/�757J-��:;��C�DH�-JES4PH6-*-*-,/��S/3)+*7,/.�2LF�GH.7I�CLF�GH.7P�C;.7P9)+69JESLG�SOCUI7*-A/DHJES-SOCBP7*-ATDHJ"S-SOCA7V�)HJ+1�CBA9I767V9J9W7X-Y7Z9[�C;<-\HA/]+6�:^)+*7,/.7J9_-`-a7[O3I-J+V969��2BK7M7N�)OF�CLM7N�)OF�CL*-6TGH�9.-�HJ+1T�-�7�+3*7FTG+67V�2UI�CL@9,7V�2BI+3-3*7FTG+67V�2L@�2BK-M7N�)EF�CBM7N�)EF73"CL@�241"C=1-3-3*7FTG+67V�2L@�2BK-M7N�)EF�CBM7N�)EF73"CL@�2LKH1"CBKH173-357698�:;,/<-<�2=3
Abbiamo aggiunto, nei due comandi )+A/\ ,le specifiche di alcuni parametri grafici:]+A7F/J+@�2U��CU��CU��CU�+3 per azzerare i margini della
figura (la F viene da inches, pollici, l’unita dimisura utilizzata da R), DH�7JES4P76-*7*-,/�"S per usare
uno sfondo (background) giallo, e */�H5-J-��:;� perdimezzare lo spessore delle linee (linewidth).
Anche in questo caso non bisogna dimenticare576/8�:U,/<-<�2=3 alla fine.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 5 20
I numeri binomiali
Situazione 20.1. ����� , � un insieme fini-to con � elementi.
Definizione 20.2. Denotiamo con � ��� il nu-
mero degli elementi di � .In particolare � ��� � .
Nota 20.3. Se � e � sono sottoinsiemi di� tali che �������� (cioe �������� e������ � ), allora� ������ ������� � � .Definizione 20.4. Per !"�"� denotiamo con#%$ �"&'!)( l’insieme di quei sottoinsiemi di �che possiedono esattamente ! elementi:#%$ �"&*!)(+�,��.-/�0�1� ����2!43Esempio 20.5. Sia �56,878&:94&*;4&=<>&:?)3 .Quindi � ���@A? . Quanti sottoinsiemi conesattamente 9 elementi possiede � ?
Questi sottoinsiemi sono ,87)&:9)3 , ,878&*;83 ,,878&=<B3 , ,�7)&:?)3 , ,�94&:;83 , ,�9B&*<)3 , ,�9B&*?83 , ,C;4&=<B3 ,,�;B&:?)3 , ,C<4&:?)3 . � possiede percio 7D� sot-toinsiemi con 9 elementi, in altre parole� #%$ �"&*9�(D���7D� .Definizione 20.6. Per ! ��� sia
E � !F il nu-
mero dei sottoinsiemi di � che possiedonoesattamente ! elementi. QuindiE � ! F �� #%$ �"&'!)(D�I numeri della forma
E � !>F si chiamano co-
efficienti binomiali o numeri binomiali. La
definizione naturalmente non dipende da� , ma solo da � .Osservazione 20.7.E � � F �7 perche � e l’unico sottoinsieme di� con � elementi.E �� F �7 perche � e l’unico sottoinsieme
con � elementi.E � 7)F G� perche i sottoinsiemi con un ele-
mento corrispondono univocamente ag-
li elementi di � , e di questi ce ne sonoproprio � .
Proposizione 20.8.
E ���H�! F E � ! Fper �%IJ!�IJ� .
Dimostrazione. Ogni sottoinsieme ��-J�determina univocamente il suo complemen-to �LKM� e viceversa. Se � ha ! elementi,��KN� ne ha ��H�! . Abbiamo quindi una bi-iezione tra
#%$ �"&*!B( e#%$ �"&:��H�!B( .
Corollario 20.9.
E ���HO7 F G� .Osservazione 20.10.
E � !>F � per ! PJ� .Dimostrazione. � non puo possedere sot-
toinsiemi con piu di � elementi, perche si hasempre � ���4I.� ��� per ��-J� .
Nota 20.11. Q sia un elemento esterno chenon appartiene ad � . Allora ���R,�QC3 possie-
de �S��7 elementi. Sia !"��� con 7@I�! IJ� .Siccome ogni sottoinsieme di � e anche
un sottoinsieme di ���T,�QC3 , i sottoinsiemi di�U�V,�QC3 con ! elementi sono o sottoinsiemicon ! elementi di � , oppure consistono di Qe di altri !THV7 elementi appartenenti ad � .
Vediamo cosı che#%$ ���W,�QC3B&'!)( e uguale a#X$ �"&*!)(Y�W,C�J��,�QC3 ���.� #X$ �"&*!�HO7C(:3
per cui E �%� 7! F E � ! F � E �!MH�7 Fper 7OIZ!�IZ� . Questa formula vale peroanche per !�PJ� :
Infatti per !V��"�G7 abbiamo a sinistra[]\>^`_\>^`_ba .7 e anche a destra[�\\^Y_ba � []\\Ba �S�27�L7 ; per !/cU���G9 abbiamo � sia a
destra che a sinistra.
Teorema 20.12.E �%� 7!dF E � !>F � E �!MH�7DFper ogni ��c�� ed ogni !"c 7 .
Dimostrazione. Nota 20.11.
Il teorema 20.12 e equivalente al triango-lo di Pascal: ee ee f ee g g ee h i h eekj e'l e'l j eemi e'j f�l e'j i eTeorema 20.13. Teorema binomiale:$on �/p*( \ \qrCsut E � ! F n \wv r p rper ogni
n &*pV��x . Questa formula e piu in
generale valida in ogni anello commutativocon unita.
Dimostrazione. Non richiesta, ma facile.Corsi di Geometria o Analisi.
Definizione 20.14. Poniamo�uyz �7|{C9N{D{C{ $ �WH�7D(=�per ��c 7�)yz �7�uy si pronuncia n fattoriali; si parla anche
del fattoriale di � .Dalla definizione segue direttamente
l’equazione funzionale$ �%�J7C(:yB �uy $ �X�J7D(Teorema 20.15.
E � ! F �uy!4y $ �VH�!)(:yper �XI�! IJ� .
Dimostrazione. Facile per induzione su � ,fissato ! . Non richiesta.
Nota 20.16. La formula del teorema 20.15e molto importante nella teoria, ma, un po’
simile a come accade per il determinante,puo essere utilizzata solo per numeri molto
piccoli.
Infatti per calcolare
E 9����< F con il teore-
ma 20.15 dovremmo calcolare 9����)y e 7C}�~8y ,due numeri giganteschi, e formare
9����)y<By 7D}�~)y .In pratica si usa invece la regolaE � !F � $ �WHO7C(w{D{C{ $ ��HO!R�J7C(7�{C9N{D{D{*!dove sopra stanno tanti numeri quanti sot-
to, cioe ! .
Ad esempioE 7D9; F 7C9R{�7�7�{�7��7R{D9T{C;E 9C�?�F 9��T{�7C}T{�7D�T{�7D�S{�7C~7|{C9T{C;T{D<T{C?E 9����< F 9����S{�7C}�}T{�7D}��S{�7D}��7|{C9T{C;R{D<Non e difficile giustificare questa regola(esercizio 23).
Definizione 20.17. I numeriE � !F ^ z � $ �X�J7C(�{C{D{ $ �%�J!@HO7C(7|{C9�{D{C{*!si chiamano binomiali superiori. Anche quisia sopra che sotto stanno ! numeri. InfattiE � ! F ^ E �%�J!@HO7! FBasta leggere il numeratore all’indietro nel-la definizione. Nonostante cio, i binomiali
superiori hanno interessanti interpretazionicombinatoriche.
Nota 20.18. Per calcolare fattoriali e bino-miali molto grandi al calcolatore conviene
utilizzare il logaritmo. Siccome�)y4�7 e �Yy) $ ��H�7D(*y � per ��c 7abbiamo� ��� �ByB � e� ��� �uy4 � ��� $ ��H�7D(*yC� � ��� � per ��cG7
da cui si deduce facilmente un algoritmo.
Quando si usa il logaritmo, si puo ancheusare il teorema 20.15 per calcolare i numeri
binomiali:� ��� E � ! F � ��� �uyBH � ��� !4y4H � ��� $ ��HO!)(:yQuando questi numeri, ad esempio �uy per��IA��I�7D����� , servono spesso, conviene
creare una tabella.
In R comunque tutte queste funzioni sonogia comprese:���C�*���������D�>���)� �uy�'���C�*���'�����D����)� � ��� �uy�:���D�C�D�>�������)� [o\ r a�C�:���D�����>�������8� � ��� [ \ r aSorprendentemente con
���C�*���'�8���D�>� g���j �non
otteniamo, come magari ci aspetteremmo, lo
stesso risultato come con
���C�*���'�8���D�>� g �, cioe
i(perche si potrebbe pensare che sempli-
cemente l’argomento venga arrotondato, es-sendo il fattoriale definito per argomenti chesono numeri naturali); viene invece restitui-
to il misterioso valore
eCe>��iDg�e��Dg.
La ragione e molto profonda; infatti la fun-
zione fattoriale � \ �uy4z)�NH4 O� e la restrizione
ad � della funzione gamma¡ z)¢�K $ H£�¤('H4 �¢una delle piu importanti funzioni della ma-tematica e della statistica.
¡¤$�¥ ( e quindi de-
finito per ogni numero complesso¥
che nonsia il negativo di un numero naturale, cioe
per ogni¥ � ¢ con
¥�¦�.,C�>&DH�7)&DH�94&D§D§C§'3 . Ilfattoriale e legato alla funzione gamma dalla
relazione �uy4 ¡¤$ �%�J7C(Provare ¨ �'©D©�� e
� ¨ �'©D©�� in R.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 5 21
La formula di Stirling
Teorema 21.1. Il valore di � � e sempre compreso tra
���������� ���� � ���� � � ������ � �e ��������� � ���� � ���� � � ������ � �
Dimostrazione. Non richiesta. Richiede i potenti
strumenti dell’analisi complessa.
Coordinate polari nel piano
Sia ����������� � un punto del piano reale.
!"
# $% &('�)
*+
,-.
Si vede che, se �0/���213��1�� , allora
�4�6587:9�;=<�>�658;�? @A< (*)
dove 5B�DC � �FE � � , mentre l’angolo < e univoca-mente determinato se chiediamo 1HG6<BIJ�� .
Nel caso �H���21K��1L� la rappresentazione (*) rimanevalida con 5M�N1 e qualsiasi < , la biiettivita della (*)viene quindi meno nel punto �H�O�213��1�� .
Scriviamo adesso � '�)QP �R�27:9�;S<T��;�? @A<� come ab-biamo gia fatto nel disegno; allora la relazione (*)
puo anche essere scritta nella forma�H�U5L� 'V)Questo prodotto di 5 con � '�) puo essere interpreta-
to come prodotto dello scalare reale 5 con il vettore� '�) di W � ed e allo stesso tempo il prodotto dei nu-
meri complessi 5 ed � '�) come vedremo nel prossimonumero.
Coordinate cilindriche nello spazio
Dalla figura si vede che un punto �X�Y�V�����=��Z�� dello
spazio puo essere rappresentato nella forma
�4�6587:9�;=<�>�658;�? @A<ZM�6Z
[\
]$
^*
% ,+ $_&('V).
La rappresentazione e univoca per quei punti percui �������K�`/���21K��1L� , quindi per tutti i punti che non si
trovano sull’asse Z .
Coordinate polari (o sferiche) nello spazio
Un punto aDbdc�egf�h�f�i3j dello spaziotridimensionale puo anche essere rap-presentato come nella figura seguente:
kl
m
n ^$%
no&('V)
*
+ ,.qp
Avendo rXbOsut_vxw�y , si vede cheezb{sut_vxw�|}t_vxw�yh}b{suw�~��M|Ht_vxw�yi4b{suw�~��`ycon s��U����{|6������ � � �{y6� � �Questa rappresentazione e quella che
si usa nelle coordinate geografiche diun punto della terra o della sfera cele-
ste:|�b longitudine, y�b latitudine.
Anche in questo caso la corrisponden-za non e biiettiva, perche non solo peraBb�cV��f���f(� j la rappresentazione e va-
lida per s�b�� e valori arbitrari di
| e y , ma anche per ogni altro pun-to �b�cV��f(��f�� j dell’asse i bisogna porrey�bY�x�K� e quindi t_vxw�y�bO� e w�~��>yBb��se iO��� oppure y�b � �x� � e quinditovxwy�bD� e w�~��>y�b � � se i���� , eallora ogni | va bene. Quindi su tutta
l’asse i le coordinate polari non sonounivocamente determinate.
Spesso al posto di y si usa�X� bO�x� � � yquindi t_vxwyBb�w�~�� � f�w�~��4yBb�t_vxw � .Molte funzioni della matematica e del-
la fisica presentano simmetrie. A unafunzione ��b��8cVegf�h�f�iKj definita su �M�(per semplicita, ma spesso bisognerastudiare bene il piu adatto dominio didefinizione) possiamo associare la fun-
zione �XbO�=cVs�f�|�f(yFj definita da�=c�s�f(|�f�yuj � b�8c�sFt_vxw�|Ht_vxw8y�f�sTw�~��`|Ht_vxw�yAf�sTw�~��>yujche in caso di simmetrie puo avereuna forma analitica molto piu sempli-
ce della � .�8c�egf�h�f�i3j}b�e �> h �4 i � ad esem-pio diventa cosı �=cVs�f�|�f(yujBbRs � , unafunzione di una sola variabile notevol-mente piu semplice. Altre volte unafunzione dipende solo dalla direzionee quindi non da s ; in questo caso � euna funzione di sole due variabili e an-che questa e una importante semplifi-cazione. Nello stesso modo si usano lecoordinate cilindriche e le coordinatepolari piane.
Rotazioni nel piano
Consideriamo l’applicazione ¡ ) da W � inW � che consiste nel ruotare un punto¢ �£� ¢ � � ¢ � � per l’angolo fissato < in
senso antiorario. E chiaro che ¡ ) �V¤ ¢ �A�¤S¡ ) � ¢ � per ogni ¤{¥6W e dal disegno sivede che anche¡ ) � ¢ E�¦ �g��¡ ) � ¢ � E ¡ ) � ¦ �per ¢ � ¦ ¥�W � . Una rotazione e quindi
un’applicazione lineare.
§ ¨© ª«¬
% ®®�¯±°
° .Sia � � ��� � la base canonica di W � . Allora¢ � ¢ � � � E ¢ � � �percio¡ ) � ¢ �T� ¢ � ¡ ) �V� � � E ¢ � ¡ ) �V� � �Ma
¡ ) �V� � ���² 7:9�;S<;�? @A<´³¡ ) �V� � ���²�µ ;�? @¶<7:9�;S< ³¡ ) �·� � � e il vettore magico di ¡ ) �V� � � !Cfr. esercizio 24.
Quindi
¡ ) � ¢ �g� ¢ � ² 7:9L;�<;�? @¶< ³ E ¢ � ²�µ ;�? @A<7:9L;�< ³�¸² ¢ � 7:9L;�< µ ¢ � ;�? @A<¢ � ;�? @¶< E ¢ � 7:9L;�< ³Se per una matrice¹ � ²�º¼»½¼¾ ³ ¥�W ��definiamo¹ ¢ ��² º ¢ � E » ¢ �½(¢ � E ¾�¢ � ³vediamo che possiamo prendere¹ ��² 7:9L;�< µ ;�? @¶<;�? @¶< 7:9�;S< ³ .
Notiamo anche che le colonne di¹
sonoproprio ¡ ) �V� � � e ¡ ) �V� � � .
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 5 22
Numeri complessi in R
Un numero complesso e un punto ��� �������del piano reale. Secondo questa definizione,i numeri complessi non sono nuovi come og-
getti. Definiremo pero nel prossimo numerole due operazioni, addizione e moltiplicazio-
ne, per i numeri complessi, di cui abbiamogia parlato a pagina 6.
Per stavolta usiamo i numeri complessi so-lo come la forma piu comoda per rappresen-
tare punti del piano in R. In matematica ilnumero complesso ��� � ������ viene anchescritto nella forma ��� ������� , ad esem-
pio�������� � ������� . In modo quasi identico
vengono rappresentati i numeri complessi in
R, mentre pero in matematica per � ����� siscrive � � � , in R bisogna scrivere !�"�#%$ . An-
che $ da solo non e ammesso, dobbiamo scri-vere #%$ ; R stesso nell’output utilizza &�"�#%$ .Si puo usare & per il numero complesso '(nell’output &�"�&�$ ). La parte reale si ottiene
con (�)+*-,�. , la parte immaginaria con /�01*-,�. .Molte funzioni grafiche in R sono definite
per successioni di punti. Siccome in statisti-ca accade spesso che si hanno due serie dimisurazioni, ad esempio
� � ���12��43�3�3���657e� � ��� 2 ��3�3�34�� 5 , molte di queste funzioni
possono essere usate nella forma 89*�:6;-<6;�=�=�=>. .Una coppia di misurazioni (cioe di vetto-ri)� ���?��A@CB 5ED B 5
e pero equivalen-
te a una successione� � 2 �� 2 ���343�3���� � 5 �� 5
di punti del piano, cioe a un elemento di�FBHG 5. Questa dualita e onnipresente nella
statistica multivariata. In R dovremmo al-
lora scrivere 89*>I�*�:J#�;�<�#�.�;�=�=�=�;KI�*�:�01;-<�0L.�;�=4=�=-.che ci costringe a una rappresentazione un
po’ difficoltosa.Le stesse funzioni grafiche operano cor-
rettamente se diamo i punti come unasuccessione di numeri complessi, possia-mo cioe usarle ad esempio nella forma89*>I�*>M%"4N4$�;>O�P�#%$�;>M4$�;K#?&4"4Q4$4.�. . Non dimenticarel’operatore I .
Funzioni in R
R )%S�ITJ$VUW8%X�YJI?ZJ$%[?Y�*�:9; S�\%]�]�$�;I�[�^�[�S�)�U�#�;>I%[4^�[�S�)�SJ$�U%_4`�.a 8�[�S *cbd$Ye:�.�f�<�0�g�[4^4f�*cb1;KI�$?S�I%^4)4f�U%S�\�]�]�$�;\�h�h�U%i9;K$YJIT�)�f�U%j9; 8�]�U�I%[�^4[�S�)+;cg�]�U�I%[�^4[�S�)�S�$�.�kl S�\�8�$�I%\WUm8%X�YJI�Z�$%[?Y�*-:6;�<6;>I�[�S%YJ$�I�)%U%j4`�n�o�p9;S�:�<�U�#�;>\4f�f�$�U�j4`�n4o�p1;c0�\�S4]4U%S�)?b1*-&6;�!�.�.a bJ\�S9*c0�\�$�U�0�\�S�]�.�qrb�\�S1*-^�s4h�U4&1= O�.�qb�^4[�Z9*�:6;-<6; Z4<�bJ)%ULt>Y�tL;�:4^�\?g�ULt�tJ;�<�^�\?g�ULt4tJ;\�fb�U%S4:4<6;-\%:4)�f�U4\4f�f4$�; 8�S�\�0�)9=Fb�^4[�Z4U�I%[%S%YJ$�I%)�.�ku [�f?Z�f�I?SJ$b4ZWUW8�X�YJI?Z�$�[?Y�* 8�$�^�)+;-^�\%S4]6;-\�^%ZJ.a bJ[4f?Z�f�I�S�$b4Z9*�8�$%^�)+;�s�$�h%Z%T�U4^�\�S4]9;cT�)4$�]%T4Z4U4\�^%Z9;TJ[�S�$�,4[�Y4Z�\�^%U�j4`�n4o�p1;-[?Y�)�8J$%^�)%U%j�`�n4o�p9;bJ\?b�)�S4U�t?fb�)4I4$%\�^Jt�.%ku X4Y4Z�$VU�8%X�YJI?ZJ$%[?Y *�:6;Kf�$0�g1;�Z�$b�[%U�t>b�tJ;I�[�^�[�S�)�U�#�;>I%[4^�[�S�)�SJ$�U%_4`6;Kf�I%\�^�\�U�#�.a bJ[4$Y4Z�f+* (�)+*�:J.�;K/�01*-:�.�;cbJI?T�U�f�$04g1; Z4<�bJ)%U%Z�$bJ[+;I�[�^%U�I%[4^�[�S�)+; g�]�U�I%[4^�[�S�)�SJ$�;>I%)%:4U�f�I%\�^4\�.�k(�)%Z�Z�\?Y�]�[�^4$vUW8�X�YJI?Z�$�[?Y�*�:6;>^�\�S4]6;>\�^�Z9;I�[�^�[�S�)�U�#�;>I%[4^�[�S�)�SJ$�U%_4`�.a S�)4I?Z9* (�)+*�:�.�;�/�01*�:�.�; (�)+*�:J.?"4^�\�S�]6;K/�01*-:�.?"4\�^%Z9;I�[�^%U�I%[4^�[�S�)�SJ$�;cg�[�S�h4)�S4U�I�[�^�[�S�)�.�k
Da questi esempi si dovrebbero poter dedur-
re le regole piu importanti per la definizionedi funzioni in R. Parametri predefiniti sono
assegnati con U . Le funzioni bJ[4$Y4Z�f , f�<�0�gJ[�^4fe S�)4I?Z verranno discusse adesso.
points
Per disegnare punti e simboli in R si pos-
sono usare le funzioni bJ[4$Y4Z�f e f�<%0�g�[�^4f . Ilprimo comando ha il formato
b�[�$Y4Z�f�* b�X�Y4Z�$+;rbJIT�U�f4$0�g�[�^4[+;Z�<�b�)%U%ZJ$b�[%ULtKb�tJ;wI%[�^�U�I%[�^�[%S�)+;g�]�U�I%[�^4[�S�)�S�$+;7I%)%:�U�f�I%\�^�\�U�#�.Usiamo qui la seguente convenzione: In pri-
mo luogo gli argomenti possibili nelle fun-zioni di R sono in genere talmente tan-ti, che i prototipi che indichiamo corris-
pondono soltanto a un formato scelto persemplicita e funzionalita. R permette inol-
tre argomenti riconoscibili per nome, chequindi non devono necessariamente seguir-
si nell’ordine indicato. Quando nel nostroprototipo appaiono due segni di uguaglian-
za, cio significa che l’ultimo valore e il valo-re predefinito in R. Analizziamo in dettaglio
i parametri.
b�X�Y�Z�$ sono le coordinate dei punti, chepossono essere dati sia come elementi :6;�<diB 5xD B 5
oppure mediante un vettore dinumeri complessi.f�$04g�[�^�[ e il simbolo con cui il punto vie-ne rappresentato. Questo simbolo puo es-
sere una lettera oppure un numero tra 1e 25. Le forme che corrispondono a questi
numeri sono elencate nella prima figura apagina 19.Z�$bJ[ puo omesso oppure scelto tra t^Jt et>g�t . Se viene omesso, assume il valore pre-definito t>b�t , che sta per point e indica che
nel punto indicato viene disegnata la figuradesiderata. t^Jt fa in modo che i punti ven-
gano uniti con linee (in questo caso bJI?T e su-perfluo), mentre l’interessante opzione t>g+t(per both) implica che vengano disegnati siai simboli che le linee congiungenti.I%[�^4[�S�) e il colore in cui il simbolo (o il suobordo quando e riempibile) viene disegnato.
Se manca, viene usato il colore di disegnoattualmente impostato.I%[�^4[�S�)�S�$ e il colore di riempimento peri simboli con i numeri da 21 a 25. I coloripossono essere indicati per nome (ad esem-
pio t�S�)%hLt , t�]�S�)�)?Y�tL;e=�=�=�; un elenco dei nomidisponibili lo si ottiene, almeno sotto Linux,
con il comando I%[4^�[�S�f�*�. ) oppure in formatoRGB, ad esempio ty%8�84&�&4&�&Lt per il rosso.f�I%\4^�\ e la scala. E normalmente imposta-ta ad 1, per avere un formato piu grande
si puo aumentare la scala, ad esempio conf�I%\�^4\%U4N9= z .La figura a pagina 19 che rappresenta i
simboli e i numeri a cui corrispondono e sta-
ta ottenuta con questi comandi:
u [�f?Z�f�I?SJ$b4Z9*t�=�= {?bJf�{�#�|�P4f4$0�g�[�^�$6=FbJf�tL;-N+;-N�.^�\%Z�[%U�I�*-&6;-N�.�qrbJ\�S9*cg�]4ULt�y4z�\�I%|�z�\Jt%.l S�\�8�$�I%\6*-^�\�Z�[6;-^�\�Z�[6;>I%[�S%YL$�I%)%U%i4(%}4pJ.8�[%S *>$�$?Y~#+�-#���. a�� U�$%P�#�q�:4U�&1= N�O���*K#?" ����� z�.�q<4U�#+= Q�P�&1= O4��* �%� { � z�.�qrb�[4$Y�Z�f�*�:6;-<6;cbJIT�U�$4.�qZ�)%:%Z9*�:9;�<�"�&1=�N+;>$�;>I�)%:�U�&1=�O�.�k8�[%S *>$�$?Y~#�|9� N4O�. a�� U�$%P�#�|+q:4U�&1= N�O���*K#?" ����� z�.�q�<4U�&1=-#�qbJ[4$Y4Z�f+*�:6;�<6; bJIT�U�$+;cg�]�ULt�S�)%hLt�.�qZ�)%:%Z9*�:9;�<�"�&1=�N+;>$�;>I�)%:�U�&1=�O�.�kh4)%��= [�8�81*K.Per ottenere l’output su una finestra grafi-ca e sufficiente inserire ^�[4I%\�Z�[�S9*K#�. prima dih4)���=�[�8�89*K. .\9�Fg e lo stesso come f%)%�9*-\+;cgL. .
symbols e rect
Nella funzioneR )�S�ITL$ dell’ultimo paragrafo
abbiamo usato la funzione f%<�0�g�[�^�f che per-mette di disegnare simboli piu complessi di
quelli che si ottengono con b�[�$Y4Z�f . E unafunzione che si usa poco pero e anche noi la
utilizziamo solo per disegnare cerchi il cuiraggio (in pollici, come tutte le misure di R)
possono essere assegnati. Cerchi si possonoanche ottenere con b�[�$Y4Z�f , dove pero invece
del raggio si puo indicare solo la scala re-lativa impostando il parametro I%)�: (o f4I%\�^�\inu X�Y4ZJ$ ).Anche rettangoli si possono disegnare sia
con f�<�0�gJ[�^4f che con b�[4$?Y4Z�f ; siccome esiste
pero una funzione apposita S�)4I�Z in R, pos-siamo adattarla definendo una nostra fun-
zione (�)�Z�Z�\�Y�]4[�^4$ . Usiamo anche qui il plu-rale perche tutte queste figure permettono
di disegnare serie di figure.
L’immagine e stata ottenuta con
u [4f?Z�f�I�S�$b4Z9*?t�=�= {?bLf%{�N�N�P�h�$�f�ITL$6=FbJf�tL;K#+= |+;�#+= N�.l S�\�8�$�I�\+*>I�*�&9;K#+= |�.�;>I�*�&6;�#+= N�.�.(�)�Z�Z�\?Y�]4[�^4$�*-&6;K#+= |6;K#+= N+;KI%[�^�[�S�)�S�$�ULty4|�|4I�I4I�I�t�.b4X�Y4Z�$�U�I�*�&1=-#�"�&1=-#%$+;�&1= Q%"4&1= M4$�;�#+=-#?"�&�= O4$4.^4\�Z�[%U�&�= Q�O+qw^4\�Z�$�U%S�)?b1*-^�\%Z�[+;-M�.8�[�S *cbd$Y�b�X4Y4Z�$4.a (�)�Z�Z�\�Y�]4[�^4$+*cb1;-^�\%Z�$�;-^�\%Z�$�;>I%[4^�[�S�)�SJ$�ULt�y�g�h�g�z�Q?g+t�.I�)?Y4Z�S�[�U�b�"6*-^4\�Z�[%"4^4\�Z�[4��*-&�"�#%$4.4.�{�N+qR )�S�ITJ$+*>I%)?Y4Z4S�[+;-^�\%Z�[4��&1= !6;>I%[�^4[�S�)�S�$%ULt>g4S�[%s%Y�t�.R )�S�ITJ$+*>I%)?Y4Z4S�[+;-^�\%Z�[4��&1=�N�O+;I%[�^�[%S�)�S�$�U�t�y�&�&4|�g�O�8�t�.%kh�)���= [�8489*K.
Il semplice ma potente 8�[�S di R viene usato
nella forma
8�[�S *�:�$Y�fXJI4I%)4f�f�$�[?Y�)�.m$4f?Z�S%X�,�$%[?Y�)S�)?b�*�:6;cYL. e la successione I�*�:9;�=�=�=�;-:�. con Yripetizioni di : .
Esercizi per gli scritti
23. Giustificare la regola della nota 20.16.
24. Per un vettore � � ���9�?�? del piano il
vettore ��� �K���4���L che si ottiene da �per rotazione di 90 gradi in senso an-
tiorario si chiama il vettore magico di� . Usare le matrici di rotazione per ot-
tenere � da � .25. Usando le matrici di rotazione dimo-
strare che �������%�V��� �6� �V���%���H�4� .26. Se � e il vettore magico di � , allora� � � � e il vettore magico di � � � � .
Usare l’esercizio 25! Riflettere sul caso����� 2 .27. Scrivere una funzione per disegnare
rettangoli in cui il primo argomentocorrisponde al vettore dei centri.
Corso di laurea in matematica � Corso di Algoritmi e strutture di dati � �C� Docente: Josef Eschgfaller
� � � � � ��� � � �� � � � � � � � � � �
Corso di laurea in matematica Anno accademico 2004/05 Numero 6
I numeri complessi
Abbiamo gia detto che un numero
complesso e un punto �������������del piano reale e che secondo que-
sta definizione i numeri complessi
non sono nuovi come oggetti. De-
finiamo pero adesso per i numeri
complessi due operazioni, addizio-
ne e moltiplicazione.
Siano ������������� e ������ !��"#� .Allora
�%$&�(' ���� )$&���*"+$,����-�(' ���� .�0/1"2�3�4 .�5$&"-�!�
L’addizione e l’addizione vettoriale
nel piano, la moltiplicazione e in-
vece motivata nel modo seguente.
L’equazione �76(�8/)9 non ha so-
luzioni reali (perche �;:;< implica
� 6(=?> e 9�$@� 6A= 9CB > ). Ci chie-
diamo allora se e possibile aggiun-
gere ai numeri reali altri numeri,
numeri immaginari, tra cui un nu-
mero D ( D appunto perche immagi-
nario) che soddisfa l’equazione
D 6 �E/)9Naturalmente vorremmo che le
usuali leggi aritmetiche siano con-
servate anche con i nuovi numeri.
Con la nostra definizione tutto fun-
ziona bene:
Chiamiamo il punto � > �#9#� del
piano D , poniamo cioe
D+' �F� > �#9G�e identifichiamo il numero reale con il numero complesso �� 3� > � - cio
significa geometricamente che con-
sideriamo la retta reale come sotto-
insieme del piano nel solito modo,
identificandola con l’asse delle � .Siano 3�4"H�4���*�A:A< . Allora:
(1) �� 3� > �JI������4�����K�� .���� L��� , dove a
sinistra il prodotto e il nuovo pro-
dotto per i numeri complessi. Infat-
ti, secondo la nostra definizione,
�� 3� > �MIN����������F�� .�0/ > I-�!� > I#�O$, .����F�� .���� .���
Cio significa che �� 3� > �-��������� e ugua-
le ad PI2���Q����� , cioe al prodotto dello
scalare reale con il vettore ���Q�4���del piano.
(2) D 6 �E/)9Infatti
D 6 �F� > �#9G�RIN� > �#9G��F� > I > /,9�IS9T�#9PI > $ > IN9G��F��/)9T� > �+�E/)9
(3) Piu in generale abbiamo
�� 3�4"#�U���� 3� > ��$V� > �4"W��X )$Y"T� > �#9G�U�X )$&"-D
e quindi anche �����*���U�X�Z$Y�LD , e
�� )$Y"-D[�-���Z$&�LD[��V .�O$& .�LD\$Y"-�\D\$,"2�LD 6�V .�0/]"-�5$V�� .�5$&"2�!�*D
Osserviamo bene quest’ultima for-
mula. Il risultato e in accordo con
la nostra definizione per la mol-
tiplicazione di numeri complessi,
ma e stato raggiunto eseguendo il
calcolo secondo le regole algebriche
usuali, a cui abbiamo aggiunto la
nuova legge D*6���/)9 .
(4) E infatti per le operazioni $ e
/ definite all’inizio valgono le stes-
se leggi algebriche come per i nu-
meri reali (cfr. pagina 6), perche,
come si verifica adesso facilmen-
te, l’insieme dei numeri complessi
con queste operazioni e un anello
commutativo in cui il numero reale
9^�F��9T� > � e l’elemento neutro per la
moltiplicazione. Quest’ultima af-
fermazione segue dal punto (1).
Vedremo a pagina 24 che i nume-
ri complessi formano in verita un
campo, cioe che ogni numero comp-
lesso diverso da zero possiede un
inverso per la moltiplicazione.
Il campo dei numeri complessi
viene denotato con _ . In pratica
_,�@<J6 , pero con le nuove operazio-
ni. Abbiamo gia visto che �� 3��"W�`� �$�"2D , e siccome "-D+�aDb" , si puo an-
che scrivere �� 3�*"#�+�V c$&Dd" .
In questo numero
23 I numeri complessiLa formula di Euler
24 Il campo dei numeri complessiLa formula di de MoivreParte reale e parte immaginaria
Disuguaglianze fondamentaliIl segno del prodotto scalarePoligoni con R
25 Radici di un polinomioRadici e -esime dell’unitaRadici di un numero complesso
Esercizi 28-43
La formula di Euler
Abbiamo introdotto gia a pagina 21 la notazione
f4gihOj k1lnm4o-pSq!r[pbs tMqLuper q]v`w . Adesso la possiamo riscrivere nellaforma
f4gih)kxm4o-pNq^y`zWpbs tMq(formula di Euler). Questa notazione, per il mo-mento puramente simbolica (perche solo nei cor-si di Analisi si potra dimostrare che si tratta
veramente di una potenza), non e solo molto co-moda, come vedremo adesso, ma anche estrema-
mente importante nella teoria.Dal teorema di addizione per le funzioni tri-
gonometriche si deduce immediatamente che
f4g|{}hS~.�H�3k;f�g�h��2f4g}�per q3rd�(v^w (esercizio 33). Si vede che nel cam-
po complesso il teorema di addizione assumeuna forma molto piu semplice.
Per � k���y�z�� possiamo anche piu in generaledefinire
f��Jj k�f��Sf4gn�Allora
f���~��`k;f��+�2f4�per ogni � r*�Ev;� . La funzione esponenziale e
quindi un omomorfismoln��rWyUuQ�S��ln��rT� uLeonhard Euler (1707-1783), matematico
svizzero-tedesco, passo gran parte della suavita a Pietroburgo e a Berlino. E stato uno
dei piu prolifici matematici di tutti i tempi;la sua opera riempie 88 volumi. Non era solo
un geniale analista, ma ha inventato anche lateoria dei grafi, anticipando un campo della
matematica discreta oggi molto studiato per lenumerose applicazioni (ad esempio in ricerca
operativa e in informatica). Ha lavorato suquasi tutti i campi della matematica pura eapplicata del suo tempo.
C. Boyer. Storia della matematica. Mondadori.
U. Bottazzini. Il flauto di Hilbert. Utet 1990.
C. Berge. The theory of graphs. Dover 2001.
R. Diestel. Graph theory. Springer 1997.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 6 24
Il campo dei numeri complessi
Abbiamo visto a pagina 21 che ogni punto����������� di �� puo essere scritto nella for-ma����������������������� � �!�
dove �#"%$ e univocamente determinato ed�'& . Abbiamo anche visto che�(��) ��)*��+ � �-, �
Se �/.�0$ , anche � e univocamente determi-
nato se chiediamo $213�'465*7 oppure, comeil matematico preferisce dire, univocamente
determinato modulo 5*7 .
Possiamo quindi scrivere ogni numerocomplesso � nella forma���0�*8�9;:
anch’essa gia anticipata a pagina 21, con �ed � come sopra.
Sia adesso anche < & . Allora8�9>=����0�?8�9;@>:BA!=�C
come segue dal teorema di addizione vistoa pagina 24. Il prodotto 8D9E=F� ha quindi la
stessa lunghezza di � ed un angolo aumen-tato di < rispetto a � . Cio significa che la
moltiplicazione con 8D9E= e la stessa cosa co-me una rotazione per l’angolo < in senso an-
tiorario.Prendiamo adesso un numero comples-
so G arbitrario. Lo possiamo rappresenta-re nella forma G �IHJ8�9>= con HK"L$ . Per ilprodotto G � otteniamo evidentemente G �M�H��?8�9;@>:BA!=�C e quindi vediamo che la moltipli-cazione con un numero complesso consiste
sempre di una rotazione combinata con unallungamento (o accorciamento se ) G )�43N ).Definizione 24.1. Sia �/�O� ,QP R&'S con����& . Allora �3T �U�WV P si chiama il
numero complesso coniugato a � .Geometricamente � si ottiene mediante
riflessione di � rispetto all’asse reale. Echiaro che ���0� .Lemma 24.2. Sia ���0� ,RP . Allora
� ���0� � , � ��) ��) � .Dimostrazione. Immediata. Perche e an-
che un caso speciale dell’esercizio 30?
Nota 24.3. Ogni numero complesso �0.�X$possiede un inverso rispetto alla moltiplica-
zione, infatti
��Y �� � �� �� � �ZN
per cui possiamo porreN� �
�� �
o, equivalentemente,N� ,RP
� �[V P � � , ��>SF� , �DY � e quindi un campo. Come in ogni
campo anche in S l’inverso e univocamentedeterminato.
La formula di de Moivre
Sia ���0�?8�9�:\&/S . Per ] "QN allora, secondole formule viste precedentemente, abbiamo
�*^/�0�*^�8�9�^B:Abraham de Moivre (1667-1754) era un ma-tematico francese emigrato giovane in In-
ghilterra. Ha scritto un famoso trattato sulcalcolo delle probabilita (Doctrines of chan-
ces, 1718).
Parte reale e parte immaginaria
Definizione 24.4. �_�%� ,`P (con �!�� rea-
li come sempre) sia un numero complesso.Definiamo allora
Re ��T �6�Im ��T �Q
Re � si chiama la parte reale di � , Im � laparte immaginaria.
Osservazione 24.5. Sia �[&#S . Allora
a-b ��� � , �5ced ��� ��V �
5 POsservazione 24.6. Sia �[&#S . Allora
)Re ��)B1f) ��) e ) Im ��)g1f) ��) .Dimostrazione. Infatti, con ���0� ,RP ,h
Re i hkjlh mnh*j�o m!p2qsr m!p t3uvpwjxh i h .Nello stesso modo per Im � .
Osservazione 24.7. Per un numero comp-lesso � la parte reale e la parte immaginaria
di � non sono altro che le coordinate di � co-me punto di � . E quindi chiaro che, se y e
un altro numero complesso, si ha ��� y se esolo se � e y coincidono sia nelle parti reali
che nelle parti immaginarie.Usare questa osservazione nella dimo-
strazione degli esercizi 41 e 42.
Disuguaglianze fondamentali
Teorema 24.8. Siano ���z�;�F{*�D|J|D|D��� ^ � ew����g{*�J|D|D|D�� ^ � due punti di ^ . Allora
)~}��!��}?)g1�) ��)~) �)Questa e una delle disuguaglianze piu im-portanti di tutta la matematica e prende
il nome di disuguaglianza di Cauchy-Schwarz.
Dimostrazione. Possiamo ricondurre que-sta fondamentale disuguaglianza al caso] ��5 . Infatti i due vettori stanno su unpiano e il prodotto scalare si esprime medi-
ante l’angolo � che essi formano in questopiano (pagina 15):}��!��}���) ��)~) �);���*���
e siccome )����*�F��)�13N abbiamo
)~}��!��}?)���) ��)~) �)~)e���*�v�-)B1Z) ��)~) �)Proposizione 24.9. Siano ancora���z���F{*�D|J|D|D��� ^ � e %����g{*�D|D|J|D�� ^ � duepunti di ^ . Allora
) � , �)B1Z) ��) , ) �)Questa seconda disuguaglianza fondamen-tale e detta disuguaglianza triangolare.
Dimostrazione. Cio e una facile conse-guenza della formula) � , �) � ��) ��) � , ) !) � , 5v}�����!}
per il prodotto scalare vista a pagina 15 edella disuguaglianza di Cauchy-Schwarz:
) � , !) � � ) ��) � , ) �) � , 5v}������} 11 ) ��) � , ) �) � , 5v) ��)~) �)J�� ��) ��) , ) !) � �per cui anche) � , �)B1Z) ��) , ) �)
Il segno del prodotto scalare
Nota 24.10. Nella disuguaglianza di
Cauchy-Schwarz anche a sinistra dobbiamomettere il segno di valore assoluto, perche il
prodotto scalare puo essere negativo.Infatti il segno del prodotto scalare ha una
importantissima interpretazione geometri-ca: Siano come finora �l�����F{?�D|D|D|J��� ^ � eM���� { �J|D|J|D�� ^ � due punti di ^ , entrambidiversi da $ . Come nella dimostrazione del-
la disuguaglianza di Cauchy-Schwarz sia �l’angolo che i due vettori formano in un pia-
no comune (un tale piano esiste sempre ede univocamente determinato se i due vettorinon sono paralleli). Sappiamo che
}��!���}-��) ��)~) !)e�������Per ipotesi ) ��)(�U$ e ) �)��I$ . Cio implicache }��!���} e ���*�v� hanno lo stesso segno; in
particolare
}��!���}�"`$f�w�����*�v�'"6$e
}��!���}-�3$f�w�����������3$Fissiamo adesso � . Allora i vettori %& ^per i quali ���������0$ sono esattamente i vet-
tori ortogonali ad � . Essi formano l’iperpianoortogonale ad � (una retta ortogonale ad � in
� , un piano ortogonale ad � in �� ). Come sivede dalle figure a pagina 13 per Q��� il
coseno di � e uguale ad N , e se, partendo daw�Z� , avviciniamo all’iperpiano ortogona-
le di � , il coseno diventa sempre piu piccolo,rimanendo pero positivo fino a quando non
tocchiamo l’iperpiano ortogonale. Se passainvece dall’altra parte dell’iperpiano, il cose-
no di � diventa negativo.Avendo }��!���} e ���*�v� pero lo stesso segno,
otteniamo il seguente enunciato geometrico,importante anche in molte applicazioni, adesempio nella teoria dell’ottimizzazione:
Teorema 24.11. Siano �%����� { �J|D|D|D��� ^ � eM�x��g{?�D|J|D|J�� ^ � due punti di ^ , entrambi
diversi da zero. Allora }�����!}'�L$ se e solose si trova dalla stessa parte dell’iperpiano
ortogonale ad � come � stesso.
Poligoni con R
La semplicita delle seguenti costruzioni e
impressionante - ma richiede la nostra ma-tematica! Esaminare bene ogni singola riga
del programma e variarlo.
���J���*�J���*���J�F�����D�D���*�� J��¡D¢J�� ?�v£E�?�*�?¤�¥v£�¦B¤�¥B£;��§¨ ��¡�©*�J��¡B��������¥B£e¥g¤���£�ª�§g¤����e��¥B£�¥g¤�¥B£e¥J§D§«����D��¡� �¢J�D¬J�B�e��¥B£e¥���¥B£e¥��B¤eª�£>v¤���£��B¤���D¬J�������*��®k�¯J�D¬J¬D��°g��§�*¡����e¬�°J±D®J��§M²�³�¡��?����¡´���?�J�D��¡�£¡� �¢J�D¬���®��?��µDD¶�����·��;¸v¤e�J¹��?��¤e�J¹��?��µD��§�*�D¬J��¢��� *�� *������®��������e¡� �¢��D¬J�J§�¶?¥��D¹D�D�� F�e¡� �¢��D¬J�J§¬J�� *�J�B�>�*�D¬J��¢J�� *�� ?������§º J��®��D�J���>�?�Dµ�*§�¶*¥D�D¹D�D�� ��>�?��µ�?§�*�D¬J��¢��� *�������D����® º J�J¹��*�J¬J��¢J�� ?�� *������*¡������D�D¬�®k���*��±k��§¬J�� *�J�B�>�*�D¬J��¢J�� *���*�J�D����§�*�D¬J��¢��� *��»����J±J��®D¸�£��J¹��*�J¬J��¢J�� ?�����J�D�D��¶D¸F£���*¡������D�D¬�®k�¢D���D�� ���§¬J�� *�J�B�>�*�D¬J��¢J�� *��»*���J±J��§�*¡����e¬�°J±D®J��§���� J�D�?��®*¥B£�¼D¶*¥��D¹D�D��·v�e��¸�£��D�B¤;¸�£��D�B¤;¸�£��D��§½ ���*��¾k�������� ��D�*��¤;¸�£�ªB¤���D¬J�������*��®k��©����*�J����¢����J�� ��?¤��D�D¬D�����D®k������±g��§±J��»�£���©D©���§
Si ottiene la figura a pagina 25.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 6 25
Radici di un polinomio
Teorema 25.1. Siano����������� ����� � ��������� �un polinomio con coefficienti complessi,����� ��� e
��������. Allora esistono numeri
complessi � ! �" " " � � , univocamente deter-
minati, tali che
���$#%�'& � ( � �)� #%�'& � �*(Questa uguaglianza e intesa come uguag-
lianza di polinomi, cioe sviluppando il pro-dotto a destra si ottiene un polinomio con glistessi coefficienti di
�e quindi proprio
�.
E chiaro anche che�+# �-, ( ��� per ogni . e
si puo dimostrare che ogni radice di�, cioe
ogni � per cui�+# � ( ��� , e uno degli �/, .
Dimostrazione. Non richiesta. Esistono
molte dimostrazioni, le piu semplici utiliz-zano ancora l’analisi complessa.
Il teorema 25.1 si chiama il teorema fon-
damentale dell’algebra.In R le radici di un polinomio possono es-
sere ottenute con la funzione 021 3 465)1 187 cheprende come argomento il vettore dei coef-
ficienti di�
elencati iniziando con il coeffi-ciente costante. Per arrotondare i risultati
usiamo la funzione 5)1:9 ;)< , il cui secondo ar-gomento e il numero di cifre decimali a cui
si vuole arrotondare. Esempio:
5)= <)> ? >8@6021 3646521 187BAC?�AED�FEG HIFEJ�FEG HIFLK M M0�5!>N;�7BA%521:9 ;)<IAO5)=6<)> ?�>PFEQ)M Mcon output R S2K >TR�G)K6>UQ6S R)>�V6S R)> . Infatti
W &YX2�Z�\[2�I]^&_X)�I`��\��a�$#%�b&Yc ( #%�d&_e ( #%�'&_f ( #%�Z�f (.
Radici g -esime dell’unita
Sia �h��� �i� fissato. Consideriamo il nu-mero
j ��k ]:lnm�(che naturalmente dipende da � ). Dalla for-mula di de Moivre segue che j elevato al-la � -esima potenza, e uguale a
�. E anche
chiaro che
# j , ( � �$# j � ( , ��� , ���per ogni . ��o . Consideriamo adesso i nu-
meri� j j ] " " " j ��p- .
Dalla formula di Euler vediamo che gli j ,si trovano tutti sul cerchio unitario, con j ,ruotato di
c)q� (cioe di
e W �� gradi) rispetto ad
j , p- . Essi formano in altre parole (almeno
per �Yr e ) i vertici del poligono regolare con� vertici iscritto al cerchio unitario con pri-
mo vertice uguale ad�. Cio implica che glij , per . ��� � " " " � &U� sono tutti distinti
tra di loro e costituiscono un insieme di �radici del polinomio
� � &�, mentre per al-
tri . i valori si ripetono. Dal teorema fonda-mentale dell’algebra segue che ogni radicedi� � &��
e uno degli j , e che
� � &���$#%�^&T� ( #%�s& j ( #%�s& j ] ( � � � #O�s& j �*p- (I numeri
� j j ] " " "� j ��p- si chiamano le� -esime radici dell’unita.
Radici di un numero complesso
Siano t r � un numero reale non negativo
ed �_�T� ��� . Nei corsi di Analisi si imparache esiste un unico numero u r � tale che
u� � t . Denotiamo questo numero con
�v t .Sia adesso w ��x�
un numero complesso
diverso da�. Allora w � t k mzy con t{ �
e| �~} . Cerchiamo le radici � -esime di w , cioe
le radici del polinomio� � � w . Una radice
la troviamo subito; infatti la formula di de
Moivre implica che
� ^� � �v t k m y�soddisfa l’equazione �
� � w . Se � adessoe un numero complesso tale che �
� ���,
allora anche
# � � (� � �
� �� � �
� � tPero noi conosciamo i � per cui �
� ���; so-
no le � -esime radici dell’unita. Quindi cia-
scuno dei numeri
� � � � v t k m y�� ] � � j � � ` � � j ] � " "�"� �U� � j
�*p-�
e una radice di� � & w . D’altra parte la mol-
tiplicazione di un numero complesso � conj , corrisponde alla rotazione di � per un
angolo di .e W �� gradi e, siccome w ����
e
quindi anche � ����, tutti gli � , sono di-
stinti tra di loro. Dal teorema fondamentaledell’algebra segue che
� � & w �$#%�b& � 6( � � � #O�d& � �*(e che ogni numero complesso � che soddisfal’equazione �
� � w e uno degli �-, .Troviamo con R le quarte radici di
���\e2f:
52=6<)> ? >6@8021 364 5)1 187BAL?PAEG)K8G�V�>PFORIFERIFORIFLK�M M0)52>N;�7BAO5)1:9 ;)<BA%5)=6<)>�? >PFEQ)M�ML’output e
K��%Q J6S�R��z�2K6>TG R��z�2K:S!K��%Q J�>G2K��%Q J G R��z�2K6>�R��z�2K8G2K��%Q J�>Fare un disegno con riga e compasso e veri-ficare il risultato. Cfr. esercizio 43.
Esercizi per gli scritti
Per vettori � �" " " �2� ��} � si denotatalvolta con
# � ! " " "� � � ( non solo la � -pla, ma anche la matrice le cui colonne so-
no i vettori � ! �" " " � � nell’ordine indicato.In particolare possiamo formare la matrice# w � ( per due numeri complessi w e � , con-siderati come punti di } ] .
Siano w �i�����Pf e � �i��� � f ��� numericomplessi con
� � � � �~} .
28. Il vettore magico di w ef w .
29. Calcolare �:w �d� e �P�8� # w � ( in termini
di� � � � .
30. w � � �:w �d� & �P�8� # w � ( f .Quindi
�:w �d� ��� �+w ��P�8� # w � ( �$&T�O� w �
31. Usiamo il simbolo � per indicare l’orto-
gonalita tra due vettori.
w������d� � ��w � ��� �d��w � ��} f .L’insieme } f si chiama l’asse immagi-
nario, gli elementi di } f , cioe i numericomplessi con parte reale uguale a zero,si chiamano puramente immaginari.
w e � sono quindi ortogonali se e solo sew � e puramente immaginario.
32. w!� � w �� w!� � � � w � � � � .Nella seconda parte non ripetere i conti!
33.k6mE¡£¢I¤*¥P¦���k6m%¢��)k6m£¥per ogni � ¨§ �~} .
34.k ©�¤+ª���k ©Z�)k ª
.
35. Calcolare
�f .
36. Calcolare
�c«�[2f .
37. Calcolare
e«�f¬ &Yc2f .
38. CalcolarefE
.
39. Calcolaree���X)f)� W fO]/��®2f%`�& ¬ fza-�U�6�!fO
.
40. Calcolare
e¯&YfB� W f%]«� ¬ fO°X^& W f �fO± .
41. ²6³2´ e2�b� ¬ ²6³2´ `/�'&_e ²6³2´ � .Dimostrare questa formula per
� ��}(seno e coseno possono essere definiti
anche su � e l’equazione rimane valida,ma cio non puo essere dimostrato qui)
usando la formula di de Moivre e con-frontando le parti reali e immaginarie.
42. ²6³2´ X2�b��� W ²6³)´ /�b&Yc)� ²6³)´ `/���\X ²6³)´ � .Questo era l’esercizio 16. Dimostrarlo
adesso con il metodo dell’esercizio 41.E solo un piccolo esempio di quanto il
passaggio per i numeri complessi possasemplificare anche questioni che appa-rentemente riguardano soltanto i nume-
ri reali.
43. Siano w un numero complesso diverso da�e � a¯� w . Allora le altre radici di
�IaB& wsono
f � & � &µf � .
Corso di laurea in matematica ¶ Corso di Algoritmi e strutture di dati ·�¸�¹ Docente: Josef Eschgfaller
ALGORITMI E STRUTTURE DI DATI
Corso di laurea in matematica Anno accademico 2004/05 Numero 7
Grafici di funzioni
Il grafico di una funzione f (di R
o definita da noi) si ottiene, come a
pagina 19 il grafico del coseno, con
la riga
lines(x,f(x))
adattando i parametri di am-
biente (dimensioni degli interval-
li per l’ascissa e per l’ordinata,
colori, linee ausiliarie) secondo
le necessita. Ricordiamo che il
parametro x deve essere un vet-
tore di valori reali che mate-
maticamente siano ad esempio
(x1, . . . , xk); lines congiunge i
punti (x1, f(x1)), . . . , (xk, f(xk))con segmenti di rette. Se i punti
di x sono sufficientemente vicini,
avremo l’impressione di una curva
continua. In genere, se la funzio-
ne non oscilla troppo, e sufficiente
una risoluzione di 0.01, definendo
x=seq(a,b,by=0.01).
Mentre la notazione per vettori
e matrici in R non e particolar-
mente felice, per figure piane pos-
siamo usare con grande vantag-
gio la rappresentazione complessa.
Per un grafico di funzioni possiamo
scrivere
lines(x+f(x)*1i)
La comodita della forma comples-
sa sta soprattutto nel fatto che pos-
siamo cosı facilmente eseguire ope-
razioni geometriche, le quali nel
piano, come vedremo in questo nu-
mero, sono tutte esprimibili medi-
ante operazioni algebriche con nu-
meri complessi. Per spostare il gra-
fico di 1 verso l’alto e sufficiente
lines(1i+x+f(x)*1i)
per girarlo di 90◦ e sufficiente
lines(1i*(x+f(x)*1i))
e cosı via.
Curve parametrizzate nel piano
Una curva parametrizzata in Rn e un’ap-
plicazione ϕ : I−→Rn, dove I e un inter-
vallo (aperto o chiuso, finito o infinito, ma
piu spesso finito e chiuso) di R. Normal-mente si chiede che la ϕ sia almeno conti-nua o anche che sia due volte differenzia-
bile con derivate continue. Lo studio del-le curve continue rientra nel campo della
topologia e riguarda in primo luogo pro-prieta di deformabilita di oggetti geome-
trici (ci sono applicazioni in robotica, adesempio la questione, se i bracci di un ro-
bot possano o no passare in modo continuoda una posizione a un’altra, puo essere for-
mulata e trattata con gli strumenti dellatopologia), lo studio delle curve e superfi-
cie differenziabili fa parte della geometriadifferenziale.
Quando n e uguale a 2, si parla di cur-ve piane. In questo caso, per ogni t ∈ I
abbiamo un punto ϕ(t) del piano, le cui
coordinate x(t) ed y(t) dipendono da t esono, appunto, legate alla ϕ dalla relazio-
ne ϕ(t) = (x(t), y(t)). In questo modosono definite due funzioni x : I−→R
2 e
y : I−→R2 che a loro volta determinano
la ϕ. Spesso si scrive allora
x = x(t)
y = y(t)
Notiamo subito che il grafico di una fun-
zione reale f : I−→R2 definita su un in-
tervallo e un caso speciale di curva para-
metrizzata che puo essere rappresentatonella forma
x = t
y = f(t)
R si presta particolarmente bene per
la rappresentazione di curve piane pa-rametrizzate, perche, una volta definito
l’intervallo che si vuole usare e che deveessere rappresentato come successione fi-
nita t di punti, e sufficiente l’istruzione
lines(x(t),y(t))
nel programma per ottenere la curva. Ab-biamo osservato a pagina 17 che il nome
t in R e riservato (viene utilizzata per for-mare la trasposta di una matrice), ma lo
possiamo utilizzare per le variabili localiall’interno di una funzione (naturalmente
solo se non abbiamo contemporaneamentebisogno della trasposta).
Anche per le curve parametrizzate use-remo la notazione complessa, quindi ma-
tematicamente
ϕ(t) = x(t) + y(t)i
e nel disegno della curva in R useremol’istruzione
lines(x(t)+y(t)*1i)
ma anche, se la ϕ e rappresentata diret-tamente in R come funzione phi a valori
complessi, istruzioni della forma
lines(phi(t))
In questo numero
26 Grafici di funzioni
Curve parametrizzate nel pianoOctobrina elegans
27 Octobrinidae I
Octobrinidae II28 abline
Funzioni iperboliche
ParabrinidaeRotazioni
29 expression ed eval
Testi matematiciEllissi
Iperboli
30 Rette e segmentiEquazione di una rettaProiezione su una retta
Il sito CRAN di FerraraEsercizi 44-53
Octobrina elegans
Rappresentiamo il grafico della funzione
©x
2 sin 4x
1 + x2
a cui in R diamo il nome Oct:
Oct = function (x)
{2*sin(4*x)/(1+x*x)}
nell’intervallo [−6, 6]
Octobrina elegans
mediante le istruzioni
Postscript("26-octobrina.ps",2,1)
latox=c(-6,6); latoy=c(-3,3);par(bg="yellow",cex=0.4)
Grafica(latox,latoy,cornice=T)t=seq(-6,6,by=0.01)lines(t+Oct(t)*1i)
text(-6-2.5i,"Octobrina elegans",pos=4)dev.off();
Per vedere la figura sullo schermo bisogna eli-minare la prima riga e inserire locator(1) pri-
ma di dev.off().Il programma contiene una sola nuova istru-
zione, text, che viene usata per aggiungere testia una figura. Il primo parametro indica il pun-
to a cui si riferisce la posizione del testo; se ilparametro pos e uguale a 4, il testo viene inseri-to alla destra del punto di riferimento. Quando
questo parametro manca, il testo viene centratonel punto. Vedere ?text per le altre possibilita.
Per ottenere una scritta piccola abbiamo mo-dificato il parametro grafico cex (nella terza ri-
ga); cex e un’abbreviazione per character expan-sion; l’abbiamo gia incontrata a pagina 22.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 7 27
Octobrinidae I
Octobrina geminata
Octobrina montuosa
Octobrina voraginosa
Octobrina irregularis
Octobrina divisa
Octobrina pulcherrima
Octobrina sellulata
Octobrina munita
Octobrina modulata
Octobrinidae II
Octobrina turrita
Octobrina tortuosa
Octobrina repentina
Octobrina solitaria
Octobrina sinuosa
Octobrina assurgens
Octobrina simplex
Octobrina laboriosa
Octobrina tranquilla
Il grafico dell’octobrina e cosı elegante
perche presenta una simmetria non perfetta.Se a prima vista la curva puo sembrare sim-
metrica, guardando piu attentamente vedia-mo invece che le due meta si distinguono nel
segno; infatti la funzione e una funzione dis-pari - una funzione f si chiama dispari, se
f(−x) = −f(x)
perche il seno e una funzione dispari e ilquadrato una funzione pari; d’altra parte il
fattore smorzante1
1 + x2riduce l’ampiezza
della curva quando |x| diventa piu grande eattenua cosı la differenza tra le due parti.
Combinando la funzione ad altre funzio-
ni elementari abbiamo ottenuto i grafici suquesta pagina che corrispondono alle se-
guenti funzioni di t, con f = ©t
2 sin 4t
1 + t2:
O. geminata f2(t)
O. montuosa f(t) + cos t
O. voraginosa f(t) + log(1 + t2)
O. irregularis f(t) + f(t2)
O. divisa f(t) − f(t2)
O. pulcherrima f(t)f(t2)
O. sellulata f(cos t)
O. munita2f(t)
1 + f2(t)
O. modulata f(sin t + cos t)
O. turrita f(t2) + cos t
O. tortuosa f(t2) + sin t
O. repentina f(t2) + tanh t
O. solitaria 0.7(f(t) + f(t2) + f(t3))
O. sinuosa f(t) + f(t + 1) + f(t + 2)
O. assurgens f(t) + tanh t
O. simplex f(tanh t)
O. laboriosa f(t) + (tanh t)(cos t)
O. tranquilla f(t) + (tanh t)(sin t)
Il quadro delle figure nella seconda colonnae stato ottenuto con il seguente programma
in R:
# 272-octobrinidae
Postscript("272-octobrinidae.ps",2,9)latox=c(-6,6); latoy=c(0,54)
par(cex=0.4,bg="yellow")Grafica(latox,latoy,cornice=T)t=seq(-6,6,by=0.01)
for (k in 1:8) abline(h=6*k)Rettangoli(-7-1i,14,0.2,coloreri="red")
lines(51i+OctobrinaTurrita(t))text(-6+48.5i,"Octobrina turrita",pos=4)
lines(45i+OctobrinaTortuosa(t))text(-6+42.5i,"Octobrina tortuosa",pos=4)lines(39i+OctobrinaRepentina(t))
text(-6+36.5i,"Octobrina repentina",pos=4)lines(32i+OctobrinaSolitaria(t))
text(-6+30.5i,"Octobrina solitaria",pos=4)lines(27.5i+OctobrinaSinuosa(t))text(-6+24.5i,"Octobrina sinuosa",pos=4)
lines(21i+OctobrinaAssurgens(t))text(-6+18.5i,"Octobrina assurgens",pos=4)
lines(15i+OctobrinaSimplex(t))text(-6+12.5i,"Octobrina simplex",pos=4)
lines(9i+OctobrinaLaboriosa(t))text(-6+6.5i,"Octobrina laboriosa",pos=4)lines(3i+OctobrinaTranquilla(t))
text(-6+0.5i,"Octobrina tranquilla",pos=4)dev.off()
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 7 28
abline
Nel programma a pagina 27 per la suddivi-sione del quadro abbiamo usato la funzione
abline di R. Essa puo essere utilizzata invari modi; con
abline(h=y)
si ottiene una retta orizzontale all’altezza y,con
abline(v=x)
una retta verticale con ascissa x. Si possonoanche disegnare altre rette, ma tranne per
questi casi semplici e forse preferibile usarelines. Comoda e la possibilita di disegnare
piu linee con un’unico comando abline:
abline(h=0,v=c(0,1,3))
Funzioni iperboliche
Le funzioni iperboliche cosh, sinh e tanh so-
no definite da
cosh x :=ex + e−x
2
sinh x :=ex − e−x
2
tanh x :=sinh x
cosh x=
e2x − 1
e2x + 1
Tutte e tre hanno importanti applicazionitecniche; la tangente iperbolica tanh e an-
che nota sotto il nome di funzione sigmoi-dea e viene spesso utilizzata per modellare
la crescita di popolazioni (crescita logistica)o la formazione di impulsi, ad esempio nellereti neuronali.
cosh
tanh
sinh
La figura e stata ottenuta con
# 28-iperboliche
Postscript("28-iperboliche.ps",2,2)latox=c(-4,4); latoy=c(-4,4)
par(cex=0.4,bg="yellow")Grafica(latox,latoy,cornice=T)
x=seq(-4,4,by=0.01)par(lwd=1)lines(x,cosh(x))
text(-1.5+3i,"cosh",pos=4)lines(x,tanh(x))
text(1.3+0.4i,"tanh",pos=4)par(col="red", lwd=0.5)lines(x,sinh(x))
par(col=1)text(-1.7-3i,"sinh",pos=4)
dev.off()
Parabrinidae
Parabrina rotans
Parabrina trichoptera
Parabrina muscellaria
Parabrina composita
Parabrina nuclearis
Parabrina rediens
Parabrina faceta
Parabrina octonaria
Parabrina fungina
Le curve della famiglia delle Parabrinidae si
ottengono utilizzando la funzione
f = ©t
2 sin 4t
1 + t2
dell’octobrina in entrambe le coordinate del-
la parametrizzazione:
P. rotans x = (cos t)f(t)
y = (sin t2)f(t)
P. trichoptera x = f(t)
y = tf(t)
P. muscellaria x = (cos t)f(t)
y = (sin t)f(t)
P. composita x = f(t)
y = f(t2)
P. nuclearis x = f(t)
y = f(t − 1)
P. rediens x = f(t)
y = f(2t)
P. faceta x = f(t)
y = f(cos t)
P. octonaria x = f(cos t)
y = f(sin t)
P. fungina x = f(cos t)
y = f(1 + sin t)
Di queste funzioni solo le ultime due sono pe-riodiche, percio, nonostante le apparenze, le
prime sette curve non sono chiuse e ogni al-largamento dell’intervallo di definizione necambierebbe l’aspetto, anche se i cambia-
menti diventano impercettibili per l’influsso
smorzante del fattore1
1 + x2contenuto in f .
Rotazioni
Abbiamo visto a pagina 24 che una rotazio-ne per un angolo α attorno all’origine nel
piano corrisponde alla moltiplicazione coneiα nell’ambito dei numeri complessi. Se vo-
gliamo esprimere l’angolo in gradi, dobbia-
mo moltiplicare l’argomento conπ
180come
visto a pagina 13.
Vogliamo inoltre anche rappresentare ro-tazioni di un punto z attorno a un centro c. A
questo scopo dobbiamo prima ruotare il vet-tore z − c attorno all’origine e poi riattaccar-
lo in c. Otteniamo cosı la seguente funzionein R:
# Rotazione di z per alfa (in gradi)# attorno al centro.Rot = function (z,alfa,centro=0i)
{centro+exp(1i*alfa*CMPid180)*(z-centro)}
Come sempre nelle funzioni di R, anche que-
sta puo essere applicata usando un vettoreinvece di un singolo punto come primo argo-
mento z. A pagina 29 definiremo una funzio-ne Ellisse che crea un vettore consistente
dei punti di un’ellisse. Con
Rot(Ellisse(t,3,2),alfa,centro)
otteniamo l’ellisse ruotata dell’angolo alfa
attorno al centro.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 7 29
expression ed eval
R permette di creare espressioni formali conla funzione expression. Mentre quindi dopo
formula=expression(x+3)
formula e un’espressione formale il cui va-lore non viene pero calcolato (infatti questa
espressione e lecita anche quando x non eancora stato definito), con
valore=eval(formula)
ne possiamo calcolare il valore. Esempio:
formula=expression(x+3)
x=10u=eval(formula)
print(formula)print(u)
con output
expression(x + 3)
[1] 13
Testi matematici
Nelle istruzioni text, legend, mtext e axis,
che permettono l’aggiunta di testi alle fi-gure, le espressioni matematiche (nel sen-so dell’articolo precendente) vengono ela-
borate secondo regole simili a quelle delLatex per ottenere le formule matemati-
che corrispondenti. I dettagli sono forniti da?plotmath e demo(plotmath). Esempio:
y =2sin(x) 1 + cos(x)
1 + x2
La figura e stata ottenuta con
# 29-plotmath
Postscript("29-plotmath.ps",2,2)latox=c(0,4); latoy=c(-1,3)par(cex=0.6,bg="#f0e68c")
Grafica(latox,latoy,cornice=T)x=seq(0,4,by=0.01)
par(col="sienna")abline(h=0,v=0)par(lwd=1,col=1)
lines(x,2*sin(3*x)*sqrt(1+cos(x))/(1+x*x))
text(2.5+1.3i,expression(y ==frac(2*sin(x)~~sqrt(1+cos(x)),1+x^2)))
dev.off()
Per ragioni tipografiche abbiamo suddiviso
alcune istruzioni su due righe. Si possonoanche rappresentare integrali, simboli logi-ci e insiemistici, indici ecc.
Ellissi
Siano a, b, t ∈ R con a, b > 0 ed x = a cos t,y = b sin t. Allora
x2
a2+
y2
b2= 1
quindi il punto (x, y) si trova su un’ellisse
con gli assi a e b. Non e difficile dimostrare(con le conoscenze sulle funzioni trigonome-
triche e le loro inverse che si imparano neicorsi di Analisi) che viceversa ogni punto
dell’ellisse puo essere rappresentato in que-sta forma. In altre parole,
x = a cos t
y = b sin t
con 0 ≤ t ≤ 2π e una parametrizzazio-
ne dell’ellisse in forma normale. Per a = b
otteniamo un cerchio di raggio a. Possiamoquindi usare la seguente funzione in R:
Ellisse = function (t,a,b){a*cos(t)+1i*b*sin(t)}
Questa funzione restituisce un vettore dipunti che, se il vettore dei parametri t ha
una risoluzione sufficientemente fine, quan-do lo disegniamo con lines apparira come
una curva liscia continua.Piu concretamente useremo i punti defi-
niti da
t=seq(0,2*pi,by=0.01)
per disegnare un’ellisse intera, ma possia-
mo anche limitarci a una parte del interval-lo con
t=seq(t1,t2,by=0.01)
per ottenere un arco oppure suddividerel’intervallo in n parti, per ottenere un po-
ligono (regolare per a = b) ad n vertici:
t=seq(0,2*pi,length=7)
per un esagono (perche l’ultimo punto lo ag-
giungiamo per chiudere la curva).
Per spostare il centro e sufficiente usarel’addizione in R
2 (usando i numeri comples-
si di R), per ruotare la figura possiamo uti-lizzare la funzione Rot che abbiamo intro-
dotto a pagina 28. Naturalmente traslazio-ni e rotazioni possono essere applicate an-
che alle altre figure che abbiamo definito.
Nel programma ad ogni figura corrispondo-
no pochissime istruzioni:
# 29-ellissi
Postscript("29-ellissi.ps",2,2)lato=c(-4,4); par(bg="#ccff99")
Grafica(lato,lato,cornice=T)par(col="peru"); abline(h=0,v=0)
par(lwd=1,col=1); t=seq(-6,6,by=0.01);lines(-3+1.5i
+Rot(0.3*ParabrinaMuscellaria(t),45))
t=seq(0,2*pi,by=0.01)lines(Ellisse(t,2.5,1.5))
par(col="red")lines(0.5+2.8i+Ellisse(t,3,0.8))
lines(Ellisse(t,1.2,1.2))par(col="blue")t=seq(pi/2,2*pi,b=0.01)
lines(-2.5-2.8i+Rot(Ellisse(t,1.5,1),45))
par(col=1)t=seq(0,2*pi,length=8)lines(2.3-2.8i+Ellisse(t,1.6,1))
dev.off()
Iperboli
Siano a, b, t ∈ R con a, b > 0 ed x = a cosh t,
y = sinh t. Allora
x2
a2−
y2
b2= 1
quindi il punto (x, y) si trova su un’iperboledi asse reale a e asse immaginaria b. Si puo
dimostrare che viceversa ogni punto del ra-mo destro dell’iperbole puo essere rappre-
sentato in questa forma. In altre parole,
x = a cosh t
y = b sinh t
con −∞ < t < ∞ e una parametrizzazionedel ramo destro dell’iperbole in forma nor-
male. Per ottenere il ramo sinistro si puo adesempio sostituire a con −a. Per a = b otte-
niamo un’iperbole equilatera con equazione
x2 − y2 = a2
Possiamo quindi usare la seguente funzione
in R:
# Ramo destro di un’iperbole.
# Ramo sinistro con -a.Iperbole = function (t,a,b){a*cosh(t)+1i*b*sinh(t)}
A parte i soliti comandi di impostazione ilprogramma contiene le righe
par(lwd=1,col=1); t=seq(-9,9,by=0.01);lines(Iperbole(t,0.5,1))
par(col="blue")lines(Iperbole(t,-0.5,1))par(col="red",lwd=0.7)
lines(2+1.5i+Rot(Iperbole(t,0.4,0.7),20))
lines(2+1.5i+Rot(Iperbole(t,-0.4,0.7),20))
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 7 30
Rette e segmenti
Una retta R in Rn puo essere rappresentata
nella forma
R = {p0 + tw | t ∈ R} = p0 + Rw
con p0, w ∈ Rn e w 6= 0, equivalente alla
rappresentazione parametrica
x1 = p01 + tw1
. . .
xn = p0n + twn
se w = (w1, . . . , wn) e p0 = (p01, . . . , p0n).In R
2 possiamo scrivere
R = z0 + Rw
e
x = x0 + tu
y = y0 + tv
se w = (u, v) e z0 = (x0, y0), oppure, in
forma complessa,
z = z0 + tw
La retta che congiunge due punti p0 e p1 di-
stinti in Rn e l’insieme p0 + R(p1 − p0); la
retta che congiunge due punti distinti z0 ez1 del piano e quindi z0 + R(z1 − z0). Se
i due punti non sono distinti, questo insie-me non e una retta, ma contiene soltanto
l’unico punto dato.Se come parametri usiamo solo i valori
t ∈ [0, 1] invece della retta otteniamo il seg-mento di retta che congiunge i due punti.
Equazione di una retta
Siano z0 = (x0, y0) ∈ R2 e w = (u, v) ∈ R
2
con w 6= 0. Allora il vettore iw = (−v, u)
e ortogonale alla retta R := z0 + Rw e unpunto z appartiene alla retta se e solo se
z − z0 e ortogonale ad iw. Sia iw = (a, b)(cioe a = −v e b = u). Allora z appar-
tiene ad R se e solo se x ed y soddisfanol’equazione
a(x − x0) + b(y − y0) = 0
che puo essere scritta anche nella forma
ax + by = ax0 + by0
Siccome w = (b,−a) 6= 0, anche (a, b) 6= 0.
Sia viceversa data un’equazione della for-ma
ax + by = c
con a, b ∈ R non entrambi uguali a 0. Allo-ra possiamo facilmente trovare x0, y0 ∈ tali
che ax0+by0 = c e vediamo che l’equazionedescrive la retta z0 + Rw con z0 := (x0, y0)
e w := (b,−a).Per rappresentare rette in R usiamo una
funzione che genera i punti della retta tra
z1 e z2 corrispondenti ai parametri t:
Retta = function (t,z1,z2)
{z1+t*(z2-z1)}
Anche in questo caso i punti generati posso-
no essere soggetti a traslazioni o rotazioniusando l’addizione tra numeri complessi e
la funzione Rot.
Esempio:
# Segmento.t=seq(0,1,by=0.01)
z1=1i; z2=3-1ilines(Retta(t,z1,z2))
# Retta rotata attorno# all’origine.
z3=2-1i; z4=4+1it=seq(-10,10,by=0.01)lines(Rot(Retta(t,z3,z4),60))
Proiezione su una retta
Siano dati una retta R = p0 + Rw in Rn
(con w 6= 0) e un punto p ∈ Rn. Vogliamo
calcolare la proiezione ortogonale m di p su
R. Il punto m deve essere in primo luogo unpunto della retta e quindi della forma
m = p0 + tw
inoltre il vettore p − m deve essere ortogo-nale a w, cioe ‖p − m, w‖ = 0, ossia
‖p, w‖ = ‖m, w‖ = ‖p0 + tw, w‖
= ‖p0, w‖ + t‖w, w‖
Siccome w 6= 0, cio e equivalente a
t =‖p, w‖ − ‖p0, w‖
‖w, w‖
e quindi abbiamo la formula fondamentale
t =‖p − p0, w‖
‖w, w‖
Da essa otteniamo la proiezione con
m = p0 +‖p − p0, w‖
‖w, w‖w
Quando |w| = 1 (cio si puo sempre ottenere
sostituendo w conw
|w|), abbiamo la rappre-
sentazione
m = p0 + ‖p − p0, w‖w
Dalla derivazione si vede anche che t e con
esso m sono univocamente determinati. Ladistanza di p dalla retta e uguale a |p− m|.
Tutto cio e valido in Rn per ogni n.
E geometricamente chiaro e facile da dimo-strare che m = p se p e un punto della retta
(esercizio 48).
Definiamo in R una funzione per il calcolodel prodotto scalare di due punti del piano,
# Prodotto scalare di due# punti del piano.Scalare = function (z,w)
{Re(z*Conj(w))}
in cui abbiamo usato la relazione
‖z, w‖ = Re zw
dell’esercizio 30 e la funzione Conj che in Rcorrisponde alla formazione del complesso
coniugato, ottenendo cosı la funzione per ilcalcolo della proiezione di un punto su una
retta nel piano:
# Proiezione di z sulla retta z0+tw.
Proi = function (z,z0,w){t=Scalare(z-z0,w)/Scalare(w,w)
z0+t*w}
Il sito CRAN di Ferrara
A Ferrara opera un gruppo di biologi che la-vora con R (soprattutto nel campo dei mi-croarrays) e gestisce anche il deposito italia-
no del CRAN. Gli indirizzi sono
microarrays.unife.it/CRANbiotecnologie.unife.it/
Esercizi per gli scritti
Quando e indicato solo una figura, il compi-
to consiste nell’ottenere quella figura con unprogramma in R.
44. Octobrina montuosa e Octobrina voragi-
nosa si distinguono apparentemente so-prattutto nella parte centrale. E vero
che per |x| grande hanno un andamentosimile?
45. Trovare l’equazione della retta che con-giunge i punti (−2,−1) e (3, 2).
46. Trovare, con il metodo indicato su que-
sta pagina, l’equazione della retta checongiunge i punti (4,−1) e (4, 10).
47. Rappresentare la retta con equazione
3x + 10y = 7 in forma parametrica.
48. R sia una retta in Rn e p un punto
che appartiene a questa retta. Allora laproiezione ortogonale di p su R coincide
con p.
49. Calcolare la proiezione ortogonale di(2, 5) sulla retta (1, 3) + Rw con
w = (4, 1).
50. Calcolare in R3 la proiezione ortogonale
di (1, 0, 3) sulla retta (1, 5, 2) + Rw conw = (4, 2, 1).
51. Calcolare la proiezione ortogonale di
(4, 1) sulla retta che congiunge i punti(1, 6) e (2, 3).
52. Usare due for.
53. La retta e y = −1 + 2x e z e −2 + 1.5i.
z
Corso di laurea in matematica 4 Corso di Algoritmi e strutture di dati � © � Docente: Josef Eschgfaller
� � � � � ��� � � �� � � � � � � � � � �
Corso di laurea in matematica Anno accademico 2004/05 Numero 8
Curve di livello
Curve di livello di una funzione in
due variabili � non sono altro che
gli insiemi della forma ����� , do-
ve � e una costante. In particolare
per � si ottengono gli zeri di � ; spes-
so pero e interessante guardare co-
me variano queste curve con il va-
riare di � e soprattutto in quel ca-
so, cioe quando si disegnano le cur-
ve ��������� (con la notazione della
def. 7.1) contemporaneamente per
piu valori di � , in modo simile co-
me in un atlante si disegnano cur-
ve di punti con la stessa altezza o
con la stessa quantita di precipita-
zioni o con la stessa temperatura
media ecc., si parla di curve di li-
vello.
In R a questo scopo si puo usa-
re la funzione ������� ��!#" che, nella
versione piu semplice, si usa come
nella funzione $&%�'�(#)#)�% che creiamo
per la nostra libreria:*,+.-,/10102+43457618:9.;<+7=>8@?BADCFEDCG5�C-<H101=.I<+737J7K,*1*#CB02+>-,/20102+.31L#CM 9>I<+>;1;</73<NOCP91=101=.I,/13<NOC MRQ / M1M =.I</731L�SUT:VW +.5X?P+.Y2/.82;<+197H20�?G-,H102=.I<+�CGJ1K,*1*<V1V-<H101=.I<+732=>62;,/7I#?FADCFE#CG5:VOZ97=.82;,=>62I�?FADCFEDCF-,H101=.I:+�CB01/.-</10 M 320,+>-,/1010,+�C91=1073,97=201=.I,/�CP0.[2Y13 M>Q / M1M =7I,/�C02H>\:97/7A231L�SG]2^ M 9>I<+>;2;,/�CY1I,H.[,01H.\</10 M 3#? M 9>I<+.;1;,/1_7L:VOCBH7Y1Y237`:V.aIl significato dei parametri �D�#)#��"#(e bOc ( b#b���"�( (della matita) e chiaro.
Il parametro b#��"d%O�#��( riguarda i
parametri e#" f�gd)Df�h (�)�b e )#f�h&��(�idella funzione originale, di cui il
primo, se posto uguale a jDkDl�m ,implica che sulle linee di livello
vengono indicati i valori che cor-
rispondono a quei livelli, mentre)#fOh&��(Di indica la grandezza del-
le scritte, di cui abbiamo bisogno
anche noi perche il valore pre-
impostato per la visualizzazione
sullo schermo risulta troppo gran-
de per le immagini che otteniamo
con n ��b��db#�O"d%Oc�� ; per queste ultime
sceglieremo quindi bD��"d%��#�#(#o#prq.s .Si noti che nella nostra funzio-
ne e#" f�g )#f�h (�)#b e definito attraverso
l’espressione booleana t1b#��" %��#��(�u�p ;per ottenere una figura senza scrit-
te sulle curve di livello useremob#�O"d%��#��(Do#p .Nella funzione �D��������!�" abbia-
mo posto l’argomento f�e#e uguale
a j , perche in questo modo pos-
siamo esguire piu volte il coman-
do �D���#� ��!�" (o $&%O'�(�)#)�% ) sulla stessa
grafica senza cancellare il contenu-
to precedente; )Df�h&��(Di riguarda la
grandezza delle scritte con cui ven-
gono indicati i valori dei livelli.)�%�'�(�)D)�% (nell’originale )�(D'�(�)�b ) e
un singolo numero o un vettore di
numeri che rappresenta l’insieme
dei livelli che vogliamo disegna-
re; con )�%�'�(#)#)�%�o#p (scelta presta-
bilita in $&%�'�(�)D)�% ) viene mostra-
to l’insieme degli zeri di � , con)�%�'�(�)D)�%�o �vt>pxw<yzw7{ | gli insiemi���}��~#� , �������O� e �������D� .La nostra funzione $&%�'�(�)D)�% si
basa sulla funzione �D����� �O!�" di R
di cui dobbiamo ancora spiegare
i primi tre parametri. i e � so-
no vettori di numeri che corris-
pondono matematicamente a due
successioni finite �P�x�:�:�:�<�:�7�z�4� e�P�&�:�:���<�:�7�#�&� . Il terzo argomento (il
nostro ' f#)#��" % ) deve essere una ma-
trice���� �7���:�:� � ����:�����:�:� �:�:�� �d���:�:� � �D�
��
di � righe ed � colonne; il coef-
ficiente �D� � e il valore nel punto�P� � �.� � � della funzione di cui vo-
gliamo disegnare i livelli. Questa
matrice e il risultato di un co-
mando ��!���(D"xt>irw>�rwR��| . La funzione$&%�'�(�)D)�% e stata predisposta per es-
sere utilizzata in due modi: possia-
mo o indicare la funzione � (e allo-
ra ��!#��(D" viene chiamato all’interno
di $&%�'#(�)#)�% ), oppure usare come pa-
rametro ' f#)D��"d% una matrice gene-
rata con un ��!���(�" precedente; la se-
conda variante verra usata quando
vogliamo utilizzare la stessa ma-
trice per piu esecuzioni di $&%�'#(�)#)�% ,ad esempio se ogni volta vogliamo
colorare le curve di livello in modo
diverso.
In questo numero
31 Curve di livello�d� ��¡D�£¢¥¤32 outer
ifelseUna collanaNA
33 if ... elseidenticalOperazioni insiemistiche
dimnames¡ � ¢¥� ¦¨§©� �¡ � ¢¥� ¦¡ � ¢¥� ¦ª��� �34 ¡ � ¢¥� ¦¨§©�¡ � ¢¥� ¦ª���
Il foglio di Cartesio
La chiocciola di PascalLa lemniscata
Una curva trascendente
Esercizi 54-58
«¨¬®�¯x¬±°³²Come sappiamo per ogni ´¶µX· questa equazio-
ne rappresenta un’iperbole equilatera con asseuguale all’asse delle ¸ . Per ´®¹º· invece abbia-
mo un’equazione dello stesso tipo con ¸ ed » in-vertite, che quindi corrisponde a un’iperbole con
asse uguale all’asse delle » .Per ´½¼X· infine l’equazione diventa¸D¾r¿À»O¾¨¼¥ÁG¸Â¿Ã»OÄ7ÁG¸�Å�»�Äz¼X·
e corrisponde alle due rette »ª¼@¸ ed »½¼¥¿Æ¸ .Otteniamo la figura su questa pagina che mo-
stra le curve di livello della funzione definita daÇ ÁG¸ È>»OÄz¼X¸�¾�¿Ã»O¾ con questo programma in R:ÉÃÊ,N.Ë2+ Q /.I7\<=10,+Ì,= M ; M 9>I:+ Q ;#?RÍ>Ê,N.Ë2+ Q /.I7\<=10,+DS Q:M Í�CÎN�SG]�C�N�SG],V01H7;,=73,9�?PË1Ï�CBÏ,V�Z Q H.I#?U\<Ð13�Í�É,929>515,Ñ1Ñ�Í.VÒ I<H.5<+197HD?B01H.;,=DCB01H.;,=DCP97=.I78�+197/737`�V;23 M /7ÓD?BË2Ï�CBÏ�CU\<E131L�SUL:N1V5Ã3¶57618�9>;<+7=>8Ô?FADCFE<VÕA,^.A2Ë7E<^.E-,H201=.I<+.3,=>62;,/.I�?G;#CG;#CF5:V*,+.-,/10102+�?G;#CG;#CF-,H101=.I:+.37-,H102=.I<+�C M 9>I<+>;1;</731L�SGÖDC02+>-,/10202+.3 M /7;2Y,+>515�? M /7ÓD?PË1Ï�CBÏ�CG\,E131L�SFÖ,VOCFL<V2V*,+.-,/10102+�?G;#CG;#CF-,H101=.I:+.37-,H102=.I<+�C M>Q / M1M =7I,/732Ï�C97=101=.I</73�ÍÎI,/1Y�Í:C M 9.I<+>;1;,/131L<VY2/7- SG=.515�?ÎVL’insieme dei punti su cui avviene l’analisi dei
livelli e dato dal quadrato × ¿ÆØ�È�Ø1Ù�Ú±× ¿ÆØ�ÈRØ2Ù sud-diviso in ogni coordinata con una risoluzione di·�Û ·OÜ , come espresso dall’istruzione;23 M /7ÓD?BË2Ï�CBÏ�CU\<E131L�SUL:N1VUsiamo la funzione
*<+>-,/1010,+due volte. Infatti la
prima volta disegniamo in nero e con le scritte
tutti i livelli diversi da · , la seconda volta solole due rette »ª¼ÔÝ�¸ , in rosso e senza scritte.
Nella prima istruzione i livelli scelti corri-spondono a´ßÞ®àO¿ÆØ�È1¿rÜ�Û á�È1¿rÜ�È1¿v·�Û á�È�·�Û á�È.Ü�È.Ü�Û áOÈRØ�âNel programma questo insieme e definito comedifferenza insiemistica (pagina 33)M /7;2Y,+>515�? M /7ÓD?PË1Ï�CBÏ�CG\,E131L�SFÖ,VOCFL<V
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 8 32
outer
Questa funzione crea da due successioni
finite ����������������� � e ��������������������� e unafunzione � la matrice�� ����������������������������������������� ����� �������������������������� ������!�����"�
#$
In R a cio corrisponde l’espressione%&�'�(�)+*-,�.-/+.�0�1 .%&�'�(�) puo essere usata in molti modi,
non solo per impostare la matrice dei va-lori per un comando 2 %3�'�%&�) o 4�56 (�7�7 5 , ma
ad esempio anche per creare la tabella dimoltiplicazione per un’operazione binaria.
Consideriamo l’insieme8:9�;=< >@?�A ��BC��DE��FE�HGE�I�Jcon l’addizione modulo
;; cio significa che
introduciamo per gli elementi di questoinsieme un’operazione K definita daL KNM < > � LPO M��@Q RCS ;dove T@Q RCS ; e il resto di T modulo 6.
Per vedere tutti i risultati che ottenia-
mo in questo modo definiamo la tabelladi moltiplicazione (in questo caso la tabel-
la delle somme modulo;) con le seguenti
istruzioni in R:
U�V�%�W�XZY[0�&�3 2 ' 5 %3\*-,�.]/�1^*-,�_�/�1`�`�X,�Y�U�(�a�*-b+.]c�1'�d�e�(�7�7�d�Y�%&�'�(�)+*-,�.-,+.fU�V�%�W�X�1W 5 V�3�dV�(�UE*�'�de�(�7�7�d�1�Y�7 5 U'�*-b�g�c�.]b�g�c�1h�) 5 3�'+*�'�de�(�7�7�d�1con output
bjiZkmlZnmcbobjiZkmlZnmcioiok[l[n[cobkokmlonpcZbqilol[nmc[bpiZknonpcobjirk[lcoc[bqiokolonNello stesso modo possiamo definire unprodotto modulo 6, ponendoLts M < > � L M�@Q RCS ;In R allora usiamo la funzioneh�V�%�W�XZYo0�&�3 2 ' 5 %3u*-,�.]/�1v*-,�w�/�1`�`�Xal posto di U�V�%�W . Otteniamo per questaoperazione la tabella di moltiplicazione
bjiZkmlZnmcbobmb[bmbob[bi�bjiZkmlZnmckZbpkonmb[konlZbplobplZbmlnobmnmk[bonmkcZbpconplokpiNel corso di Algebra si dimostra che� 8x9�; �-Ky� e un gruppo abeliano, � 8:9�; � s �e un semigruppo commutativo con unita
e che le due operazioni sono legate dallalegge distributiva
� L KNM� s^z > � LtsNz ��K\�]M sNz �La tripla � 8:9�; ��K{� s � e quindi un anellocommutativo con unita. Se guardiamo be-
ne la seconda tabella, vediamo pero che
D s F >\Abenche D e F siano diversi da
A. Questo
anello possiede percio divisori di zero.
ifelse, sia un vettore di valori booleani o di oggetti
convertibili a valori booleani, d e e due vetto-ri qualsiasi, non necessariamente della stes-
sa lunghezza di , . Allora
5 0�(�7�U�(�*-,�.fd�.|eC1e il vettore che si ottiene sostituendo in , ogni
valore vero con un valore di d e ogni valo-re falso con un valore di e , percorrendo (in
maniera ciclica, quando necessario) i vettorid e e .5 0�(�7�U�( e effettivamente una funzione chepuo generare delle configurazioni piuttosto
complicate e matematicamente interessanti.Assumiamo che vogliamo generare una suc-cessione della forma
� L �C�M}C� L�~ �M��E� LC� �M��� LE� �M�E� LC� ��M��H�E� L ����M��H}��Allora possiamo procedere come in questo es-
empio:
,�Y�i�g]i�kd�Y 2 *�ib�b�.-����.]k�b�b�.�����.fl�b�b�.�����1��e�Y 2 *�����.�iE.�����.]k�1&�Y 5 0�(�7�U�(�*-,�`�`�k�.]d�.|eC12 d�'�*|&�.��]��3���1con outputib�bjiZk�b�bmk[l�b�bqi[ib�bpkok�b�bjiZl�b�b[kInfatti, siccome i vettori d e e vengono ripetuticiclicamente, abbiamo questa situazione:
x a b
1 100 NA2 NA 1
3 200 NA4 NA 2
5 300 NA6 NA 1
7 100 NA8 NA 29 200 NA
10 NA 111 300 NA
12 NA 2
Secondo il programma, per un valore dispa-
ri nella colonna , viene scelto il valore da d ,per un valore pari un valore da e . Traducendo
questa idea in una realizzazione geometrica,otteniamo la collana nella figura.d e e possono anche consistere di valori sin-goli, come in
,�Y 2 *]k�.]c�.fl�.�i�.]k�.]l�.-n�.f��1&�Y 5 0�(�7�U�(�*-,�`�`�k�.��HW 5 Uh�d�) 5 �C.��fh�d�) 5 ��10�%�)u* 6q5 3[&C1 2 d�'+* 6 .��f�3���1con output
h�d�) 5W 5 Uh�d�) 5W 5 Uh�d�) 5W 5 Uh�d�) 5h�d�) 5W 5 Uh�d�) 5h�d�) 5W 5 Uh�d�) 55 0�(�7�U�( (nella sua forma non vettoriale) e una
funzione molto importante anche in informa-tica teorica e nella teoria dei circuiti digitali,
dove appare nella descrizione di funzioni boo-leane (cioe funzioni
?�A ��B�J ����� ?�A ��B�J ) medi-
ante diagrammi binari di decisione. Invece di5 0�(�7�U�(�*-,�.]d�.|eC1 si scrive allora spesso � ��� L �MH� .Questo operatore ternario esiste anche in Cdove viene scritto nella forma ,q�od\gye .
Una collana
Abbiamo osservato che 5 0�(�7�U�( e una funzio-
ne da cui si possono far derivare configura-zioni molto interessanti. Con la stessa idea
vista prima otteniamo questa collana:
Nel seguente programma in R appare il ter-
mine &������ con cui si denota il � -esimo ele-mento del vettore & . A differenza dal C in Rsi inizia a contare da 1.
� l�k�� 2 %3�0 5�� &�)�d�� 5 %3�(� %�U'�U 2 ) 5 h�'�*���l�k�� 2 %3�0 5�� &�)�d�� 5 %3�(+��h�U���.�i���X�.�i��-X�17�d�'�%�Y 2 *]��i��-k�.�i���k�1��th�d�)+*�e � YC�H/�(�7�7�%��E��1� )�d�0 5�2 d�*]7�d�'�%�.]7�d�'�%�. 2 %�)�3 5�2 (�Y� �1'�Y�U�(�a+*-b�.]k�wh 5 .|e�/�Y�b��|b�i�12 (�) 2�¡C5 %�Y 2 %�UE*�'�1_�i 5 w�U 5 3�*�'�1h�d�)+*]7���W�Y�i�. 2 %�7�Y�i�17 5 3�(�U�* 2 (�) 2¡�5 %�1d�Y 2 *�� � e�k�k�k�k�k���.�����.�� � 2�2 d�¢�d�lC��.�����.� � X���X�ce�kC��.�����1e�Y 2 *�����.�� � b�b�e�l�b�b���.�����.� � c�c�X�e�k�0���16 Y�i�g]i�k��y&�Y 5 0�(�7�U�(�* 6 `�`�k�.]d�.|eC10�%�)u*-� 5 3 6 1Z£�d�7�0�d�Y���wh 5�¤ X��h�% 5 3�'�UE*](�,�h"*]d�7�0�d�w�i 5 1�.�h 2�¡ Y�k�i�.e � Y�&�������. 2 (�,�Y�k�1�¥W�( 6 ��%�0�0+*�1La funzione h�% 5 3�'�U e stata discussa a pagina
22; per disegnare cerchi pieni colorati si puousare anche il comando h�%�7�/ � %�3 , come vedre-mo fra poco.
NA
In statistica accade molto spesso che serie
di misurazioni contengano dati non validi onon disponibili. A questo corrisponde il va-
lore ��� (un’abbreviazione per not available);l’abbiamo gia incontrato a pagina 22. La fun-
zione U�a�)�' che calcola la radice quadrata rea-le di un numero reale � non e definita per�§¦ A , anche se nel campo complesso �possiede le due radici ¨ � ��© e � ¨ � ��© (adesempio le radici quadrate di
� F sono ¨ F�© e� ¨ F�© ); cio e un caso speciale di quanto vistoa pagina 25. Se e dato un vettore , di nume-
ri reali, non necessariamente tutti positivi,di cui, se sono positivi, vogliamo calcolare le
radici quadrate, possiamo usare 5 0�(�7�U�( perconvertire tutti i valori negativi in ��� :,�Y 2 *]��i�.]k�.-b+.]��l�.]��n�.]c�1,�Y 5 0�(�7�U�(�*-,�ª�Y�b�.-,+.�����1&�Y�U�a�)�'+*-,�10�%�)u* 6p5 3[&�1 2 d�'�* 6 .��]��3���1
con output
���i��|n�in�k�inb i�����l�k�b�c�i���k+��k�l�X�b�X�«
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 8 33
if ... else
All’interno di una funzione o di un bloccotra parentesi graffe l’ ��� di R viene usato
nelle forme
�������������� �������������������� �������oppure
�������������� �������������������� ��������������������������� ���������
Quando il comando complessivamente occu-
pa piu righe e non si trova all’interno di unblocco o di una funzione, bisogna racchiu-
derlo tra parentesi graffe.Abbiamo usato la prima forma (un ���
senza ������� ) nella definizione della funzione� �� �������� a pagina 31.
identical
In R il test per uguaglianza di oggettidovrebbe avvenire mediante la funzione
������������!�� . Gli operatori "�" e #$" sono definitiin modo un po’ diverso da come uno se lo as-
petterebbe, infatti vengono usati soprattut-to per il confronto elemento per elemento di
vettori come in
!�"��%�&�(')�*')+,'.-*'�/,')0��1 "��%�&�('.23')4,'.-*'�+,')0����"3�)!�"�" 1 �5 ���6��3�$�(�
con output
7�8�9�:�;�<���=�:>;�<���=�:?7�8�9�:>;�<���=�:?7�8�9�:e
!�"��%�&�(')�*')+,'.-*'�/,')0��1 "��%�&�('.23')4,'.-*'�+,')0����"3�)!@#A" 1 �5 ���6��3�$�(�
con output
;�<���=�:?7�8�9�:B7�8�9�:>;�<���=�:?7�8�9�:>;�<���=�:Infatti nello stesso modo vettoriale funzio-
nano anche gli operatori per il confronto nu-merico:
!�"��%�&�(')�*')+,'.-*'�/,')0��1 "��%�&�('.23')4,'.-*'�+,')0����"3�)!�C 1 �5 ���6��3�$�(�
con output
;�<���=�:?7�8�9�:�;�<���=�:>;�<���=�:B7�8�9�:>;�<���=�:
Operazioni insiemistiche
R contiene alcune semplici, ma potenti fun-zioni insiemistiche:
���*D.������E�����3�.F*' < � . . . GIH�J�KML�������@� < '.N�� . . . KPO�Q�6��������������3� < 'INR� . . . KPS�Q������������3� < 'IN�� . . . KPTUQ��������V���!��*� < 'IN�� . . . GIKXW�QYL
Insiemi vengono rappresentati da vettori,
astraendo dall’ordine degli elementi e daapparizioni molteplici dello stesso valore.
Abbiamo usato la funzione ������������ a pa-gina 31 per togliere il valore Z dall’insieme
dei livelli da disegnare nella prima esecu-zione di
� �� �������� .
dimnames
Nelle tabelle di moltiplicazione a pagina 32abbiamo usato la funzione ��6E��!�E���� . Essa e
utile per la visualizzazione di tabelle; altri-menti nella riga dei titoli e nella colonna dei
nomi delle righe apparirebbero solo gli indi-ci. Infatti con
!�"�E�!�������F*���%������-�4,'���2�2�2�23'&��/�4�[*')��/�4�23'-����('�4�\�2�2��%'$�����]�"�+��5 ���6��X��!��
otteniamo l’output
^ '&��_ ^ ')��_^ �('._B����-�4���/�4�2^ �,'._���2�2�2�2?-����^ +,'._`��/�4�[�4�\�2�2che diventa piu leggibile se aggiungiamo i
significati dei numeri:
!�"�E�!�������F*���%������-�4,'���2�2�2�23'&��/�4�[*')��/�4�23'-����('�4�\�2�2��%'$�����]�"�+��
��6E��!�E����%�)!���"��������@���%�6a < ��! 1 ��!���!���@D&a�'a&b����c�������!Ra�'6a = ��� ���!�a��('�%�6a���� 5�d�e E�VRa�'6a6! 1 d ��2�2�2Ra����5 ���6��X��!��
con output
�6� 5�d�e E�V�! 1 d ��2�2�2< ��! 1 ��!f��!���@D ����-�4 ��/�4�2b����c�������! ��2�2�2�2 -����= ��� ���! ��/�4�[ 4�\�2�2
Si noti che nella lista vengono prima indica-ti i nomi delle righe, poi quelli delle colonne.
gihkj?lnm�oplqhCon lo stesso programma che a pagina 31abbiamo usato per disegnare le iperboli, so-stituendo solo la riga riguardante la funzio-
ne con
�f">����R����������.F*'.r���r�s�r�t�F�s�F�s�F�t�F�s�Fpossiamo disegnare la famiglia di curve le
cui equazioni hanno la forma
u%v W�H,wUxPH v xzyIn questo caso la curva singolare, in rosso, ela curva
u(v W�H*w{xPH v
I livelli indicati sono i livelli della funzione|�} W�~�$�R� ��� u%v�� H,w � H v . Si vede che la|
as-
sume valori positivi alla destra della curva
singolare e valori negativi alla sua sinistra.Provare da soli, eventualmente ingran-
dendo la figura, a scoprire il segno di| GIH�� u L
all’interno del nodo.
gihkj�lnmQuesta curva e la cuspide o parabola diNeill:
gihkj�lnmf��lnhPurtroppo talvolta il software per la rap-
presentazione di curve puo ingannare, e cionon vale solo per R, ma anche per Maple,
Mathematica ecc. In questo caso per esem-pio e chiaro che l’origine e una soluzione
dell’equazione
u(v W�H*w � H veppure non appare nella figura (dovrebbe es-
sere un punto rosso nell’origine). Quindi nonci si puo fidare ciecamente dei disegni che si
ottengono con questi programmi.
Non siamo riusciti ad ottenere l’origine co-me punto della curva mediante il program-
ma; dobbiamo quindi, appellandoci ai risul-tati della matematica, aggiungerlo a mano:
D�D�D�f">���������������.F*')r���r�s�r�t�F�s�F�s�F���F�s�FD�D�D5 ���6����%�.2*'.23' 5 �6��"���2*'�����F�"�2@DI4*'�������"(a&����Ra����� �DI�����3�&�
ottenendo cosı
In questo caso potrebbe anche trattarsi di undifetto della funzione ������������ (o di ���6���� , se
������������ usa ���6���� ) che non sembra in gradodi disegnare un punto isolato.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 8 34
�����������Anche la curva �� ���������� la possiamo otte-nere cambiando semplicemente la funzione
nel nostro programma.
� � ��� ��� �Vediamo ancora che una semplice modifi-
cazione dell’equazione implica un cambia-mento sostanziale nella forma della curva.
Alcune differenze scompaiono comunque sesi considerano queste curve come curve de-
finite sul campo dei numeri complessi. Co-me una retta complessa corrisponde a un
piano reale, cosı una curva complessa cor-risponde a una superficie reale. Completatenel senso della geometria proiettiva le cubi-
che finora viste diventano superficie di Rie-mann, la cui teoria e ancora oggi un campo
attivo della ricerca.
Nelle applicazioni, ad esempio in statisti-
ca, ancora piu importanti sono pero propriole forme reali, la cui classificazione e molto
difficile.
Il foglio di Cartesio
Questa curva ha l’equazione
������������������
La chiocciola di Pascal
La chiocciola di Pascal ha l’equazione
! �� "���� #�%$&��'( ��)�� ��*��
Il programma e stato leggermente modifica-
to:
+�,.-0/21430576.3789�:052;�576=<�>?10;A@2B?,.-0/21430576.378DCE145�B4FHG�CJI�F(G�CJI&K803=;&:.L7M�6�@N/.ODCQP�FN,ACJ,�K�RS873=;&:7T7M&6�@N/0U�FNU&K�R143=<A@WV&X0MYBH+&676=Z7Z&[7[4B.K\ <&3=Z�>7673�@N873=;�:.L�FN873.;&:.T�F]67:=<.^4>767_.M.`4KL0M&5._.a�@]/.ODCJP�F],ACJ,�FWV�T7M7ODCWO4G7KT0M&5._.a�@]/7U�FNU�FJV&T7M7ODCJO�G7KZ�MZ.b7^Y62;�>.:2^c@QL�FQT�Kd b&M7LYe?U7f7TYe?U7/0U0g=L�R�b�e2U7/.LYe?U0/.TYe?U7hi 3787:=<�>.M0:2b0;&_.<A@QL�FQTAFJZ4Kj�> i _7878&>�@QL�FQTAF i 3787:.<�>=M i 3087:=<�>�F(5762<�>2;0;&_.M7ODCQk�F80> i _08780>=M&57_=;0l&>2Z0ZA@]5._.aA@N/7U�FNU�FWV&T7M7OmCJk&K�FQO4K7Kj�> i _7878&>�@QL�FQTAF i 3787:.<�>=M i 3087:=<�>�F(5?1�_05757:=<&_.M0U�F6.:787:.<&_.MYB(<�_.lYB4F]5062<�>2;7;�_.M7O�Kl&_ i CJ:=Z0ZA@(K
La lemniscata
La lemniscata di Bernoulli e una curva adotto con equazione
! �� "���� 0'H ��)�� �����
Una curva trascendente
Consideriamo la funzione
n ! �poH��'q��r(s tu�� #��v.w&r��� "�*x�y{z
Il termine x4y{z converge velocemente a zero
quando � diventa piu grande; la figura espri-me quindi fortemente la periodicita di seno e
coseno.Se togliamo pero questo termine, la curva
diventa piu regolare, ma forse meno bella:
Esercizi per gli scritti
54. Tabella di addizione e di moltiplicazio-
ne modulo |7$ . Ci sono divisori di zero in!W}�~ |7$�oJ��o=��' ?55. Tabella di addizione e di moltiplicazio-
ne modulo � . Ci sono divisori di zero in!W}�~ ��oJ��o2��' ?56. Usare
>2Z&_78057_per ottenere l’output
GU�,�3�k�I�P�V%[�G2O�G7G657.
Sono indicate le prime 4 lettere di ogniriga del programma:
873.;&:\ <�3=Z;0M�5._1�:080>80>2^�_;0M�5._�@]g&K1�:080>1�:&>?^87:&6.3l0_ i C
La riga (*) serve per non ridisegnare ilprimo dei cerchi piccoli. Come si fa?
58.
Corso di laurea in matematica � Corso di Algoritmi e strutture di dati ����� Docente: Josef Eschgfaller
� � � � � ��� � � �� � � � � � � � � � �
Corso di laurea in matematica Anno accademico 2004/05 Numero 9
La funzione polygon
La funzione ������������� e molto simile a ��������� ; anch’essa unisce una suc-
cessione di punti, chiudendola pero, mentre per ottenere un poligono chi-
uso con ��������� dobbiamo aggiungere il punto di partenza alla successio-
ne. ������������� permette inoltre di colorare l’interno del poligono (oppure di
tratteggiarlo in vari modi). Useremo soprattutto questa possibilita per di-
segnare poligoni colorati, e quindi anche rettangoli, cerchi ed ellissi (che
otteniamo scegliendo successioni di punti molto ravvicinati). Come ���������anche ������������� permette l’uso di linee interrotte impostando il parametro
��� � ; vedere !���"�# .I parametri per definire i colori sono $���#�%�� # per il bordo e & ��� per il
colore di riempimento.
Il file Figure
Abbiamo visto, quando abbiamo definito lefunzioni ')(*(,+,-*-/. , 0213.54/687*(*. e 9).5:,:); (pagi-
ne 29-30), che in un approccio matematicoalla grafica una strategia molto efficiente
e versatile e quella di creare le figure dibase come insiemi di punti e di separare
da esse le operazioni di disegno. Useremoda ora in avanti questo modo di procede-
re, eliminando quindi le funzioni <,.543=?>8+ e9).5:*:3;?@)A,7*()+ definite a pagina 22 dalla no-
stra libreria; inseriremo le figure di basein un file Figure della libreria.
Definiamo adesso due funzioni per lacreazione di rettangoli e di poligoni, fun-zioni che riassumono semplicemente alcu-
ne costruzioni gia viste.
B =�CD68-*+E@�FD6)G,.,-�FH;/G,.,-�FH;,-*+E@�IJG3+BLK @M4).5:,:);?@)A,7,(*7NG)+N(,;54,A5>3.*O*O,;NG*PB .M;*(5:).*O*O,;NG*Q�R9)./:*:);?@)A)7*(*7LSUT K @8=?:3+*7?@VCWG*P�FWG*Q F;*G,.,-5S/X*Y)Z*Z F[;)-*+E@)S/X*Y)Z*Z F63G,.,-5S/X*Y)Z*Z F\6�-*+E@)S/X*Y)Z*Z F]=*.?@,:*4)7*S*^3I_ +5T`C3ab+*-�Rc@ K (*( CH;,-*+E@�I*I _ ;/G,.)-5S,;,-*+?@)d*G*P e68-,+E@)S,;,-,+E@3f)g/+,h5G*Q ei6)G,.)-5S568-*+?@)d*G*P,jk.*(,-/.+?TVC3ab+*- Rl@ K (*(�Cm;/G,.,-,I,I _ ;,-*+E@3S,;/G,.,-*f/G*P e68-,+E@)S,;,-,+E@3f)g/+,h5G*Q ei6)G,.)-5S568-*+?@)d*G*P,jk.*(,-/.+?TVC3ab+*- Rl@ K (*(�Cb68-*+E@�I,I _ ;,-*+E@3S568-*+E@3d3g/+*h5G,Q e;/G).,-5S,;,-,+E@)d*G*P�en6)G,.,-5S/68-*+E@)d,G*P,jN.*(,-*.+?TVC3ab+*- Rl@ K (*(�Cb6)G,.,-,I,I _ 68-*+E@3S56)G,.,-*f/G*P e;,-,+E@)S568-,+E@)d3g/+,h5G*Q eo;/G,.)-5S,;,-*+?@)d*G*P,jk.*(,-/._ ;)-*+E@)S/93.�Cm=/.?@):*4)7)I5fG,P,p*q/d3g*+*h�Cr02s�Cm=/.?@,:,4)7)I?d*G,Q,p*q)I�e;/G).,-5S,;,-,+E@)d*G*P�e68-,+E@)S,;,-,+E@3f)g/+,h5G*Q ei6)G,.)-5S568-*+?@)d*G*P,j=�Cb68-*+E@�Fb6)G,.,-�Fm;/G,.,-�Fm;,-*+E@�I/jIn questa funzione i parametri G*P e G*Q in-
dicano la larghezza e l’altezza del rettan-golo; si puo inoltre impostare, a scelta, il
centro, il punto in alto a destra o a sini-stra, il punto in basso a destra o a sinistra.Il risultato della funzione e il vettore che
consiste dei quattro vertici del rettangolo
nell’ordine dato dall’ultima riga del lista-to. Fare un disegno e verificare l’algoritmo.
Abbiamo usato la condizione +*- Rc@ K (*(�CWP8Ial posto di +5G,.?@):3+*=/;*( CWP FbX/Y3Z*Z3I utilizzato a
pagina 31.Piu semplice e la funzione per i poligoni:
BUt ./4*:3+*=*+NG)+ K @M@3f/A,7?@87L4)./A,7,(*;54).B G)+L4);/A*A)+*7L4�Ru 7*(,+/A,7?@37NSUT K @8=?:8+/7?@VCD@�Fb48I_ :,S)-*./v CW^ Fmq,hE18+�Fm(*.?@)A/:*>)S5@)d3g,I<,.543=?>8+/7�Cb:�Fb48I5jdove abbiamo introdotto la funzione
<,.543=?>8+/7NSkT K @8=?:8+/7?@`Cb:�FW48I_ ')(*()+*-*-/.�CW:�Fb4�Fb4�I5jOtteniamo la figura in alto con
u 7,-?:8-*=?43+E1):�CEwEx*y,f?137*(,+/A,7?@8+ Rl18-3w8Frg5^ FWz3I(*;5:)7*P*S)=�CW^�Frg?^3I�e{(,;5:)7/Q*S3=�CW^ FWz8I�e13;54�Cb6)A*S�w B G*G/T*T)x,x8w5I| 4);5T8+*=/;�CH(,;5:)7/P Fm(*;5:)7/Q�Fm=/754/@�+*=/./S/}�I=/.?@,:,4)7/S,q�RWy/d,q,+�e4,S/9)./:*:);?@)A)7*(*7�CH;*G,.,-5S)=*.?@,:*4)7 FHq�Frg�RWy)I137*(/Q,A,7?@�Cb4�Fm=/7*(/S�w?=/754);,(8w5I4,S/9)./:*:);?@)A)7*(*7�CD63G,.,-5S)=*.?@,:*4)7 FHq�Frg�RWy)I137*(/Q,A,7?@�Cb4�Fm=/7*(/S�wE754);?@3A,.8w5I4,S/9)./:*:);?@)A)7*(*7�CH;)-*+E@)S)=*.?@,:*4)7 FHq�Frg�RWy)I137*(/Q,A,7?@�Cb4�Fm=/7*(/S�wr: K 4,v K 7,+*-/.�w5I4,S/9)./:*:);?@)A)7*(*7�CD6�-*+E@)S)=*.?@,:*4)7 FHq�Frg�RWy)I137*(/Q,A,7?@�Cb4�Fm=/7*(/S�w B 63;*y,y/G,x8w5I4,S/9)./:*:);?@)A)7*(*7�Cm=*.?@,:*4)7*S)=/.?@,:,4)7�FHq�F2g�Rby)I137*(/Q,A,7?@�Cb4�Fm=/7*(/S�w B =5G,y)=/y,=3w5I=/.?@,:,4)7/S,~�RWy/d,q,+�e{�*S3g�eo4,S8g�Rby�e[;,(5T);/S*^�e=/7*(*7/43+5S)=�C?w?=5Q,;?@�w8FEw2Q,.,(*(*75��w�FEw2A/4).,.?@�w8Fw?-,+/.?@*@3;�w8FEwr4).*G�w5IT)754`Cb@�+E@����by)I _ 1)S u 7*()+5A,7?@37 CD@�Fb48I�e137*(/Q,A,7?@�Cb9375:�CD1�Fm;*(5T);)I5d)=/.?@,:,4)7�F(5�)G*S,q�Fm=*7*(/S)=/7,(*7543+ �W�/�3I4,S/4)f*^�Rbx�e[�*S,�/d3g�e];*(5T);/S);*(5T);/d)y/^,jG,.5��RW75T*T�CrI
In questo numero
35 La funzione polygonIl file Figure
Tratteggi36 Riflessione in un punto
Riflessione in una retta
Perturbazione dei coefficientiUna modifica in Postscript
37 I cammini delle radici
Il teorema di RoucheContinuita delle radici
38 Creazione di matrici
ParalleleCome nasce una formaEsercizi 59-66
Tratteggi
Per tratteggiare l’interno di un poligono dobbia-mo usare i parametri G,.?@8-,+?:,Q e ;?@)A,(*. di 137*(/Q*A)7?@ .Una densita maggiore corrisponde a un numeromaggiore di linee; ;?@)A,(,. imposta l’angolo di in-clinazione ed e inizialmente uguale a �8��� . Nel
poligono tratteggiato il parametro =/7,( diven-ta il colore delle linee di tratteggio. Per trat-
teggi multipli o per colorare allo stesso tempol’interno del poligono si possono impiegare piu
istruzioni 187*(/Q*A,75@ sullo stesso insieme di punti.
Otteniamo la figura con
u 7)-?:3-*=?48+E1,:�CEw?x*y*f5:*43;5:*:)./A,A)+ Rc18-8w8FHy�FHy3I(*;/:)7/S)=�CH^ FHy)I�eo13;54�CD63A*S�wr:);5@�w5I�e| 43;5T3+*=/; CH(*;5:)7 FH(*;5:)7 Fm=/754/@�+*=/./S/}�I;?68(,+E@3.�Cb>)S,q�Rby3I4,S*9).5:*:);5@)A,7*(*7 CH;,-*+E@3S*^�Rbq/d,z�Rb�,+�Fmq�RHg�FW^�Rb�)I137,(/Q*A,7?@�Cb4�FWG,.5@8-*+?:,Q,S3g?^3I4,S*4,d,q�Rby e\137*(/Q,A,7?@�Cb4�FWG,.?@8-,+?:,Q*S3g/~�FH;?@)A)(*./S*^3I4,S*9).5:*:);5@)A,7*(*7 CD68-*+E@3S*^�Rbq/d)q�Rb�,+�FHz�Rb~�Frg,I137,(/Q*A,7?@�Cb4�Fm=/7,(/S�wr4).*G�w5I137,(/Q*A,7?@�Cb4�FWG,.5@8-*+?:,Q,S3g5q�FH;5@)A,(*./S)x/^3I:,S3-/./v CW^�FHq,hE18+�FD6)Q*S*^�RD^3g*I./S*')(*(,+*-,-/.�Cb:�Fmq�Rbx�FW^�Rb~)I?d,q�Rby/d3g�RW�,+�e137,(/Q*A,7?@�CH.�Fm=/7,(/S�w2A/43.*.?@�w5I137,(/Q*A,7?@�CH.�FWG,.5@8-*+?:,Q,S3g5q�FH;5@)A,(*./S)x/^3I137,(/Q*A,7?@�CH.�FWG,.5@8-*+?:,Q,S3g5q�FH;5@)A,(*./S8g5y/^3I4,S*9).5:*:);5@)A,7*(*7 CD68-*+E@3S*^�Rbq/d,^�Rbq,+�FHz�Rb~�FW^�Rb�)I137,(/Q*A,7?@�Cb4�Fm=/7,(/S�w2Q,.,(*(*75��w/I137,(/Q*A,7?@�Cb4�FWG,.5@8-*+?:,Q,S,q/^ FH;5@)A,(*./S,^ Fm=/7*(*S�wr4)./G�w5I137,(/Q*A,7?@�Cb4�FWG,.5@8-*+?:,Q,S,q/^ FH;5@)A,(*./S)�/^ Fm=/7,(/S�wr4).*G�w5IG,./��Rb75T*T�CrI
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 9 36
Riflessione in un punto
Siano � ed � due punti in ��� . Diciamo che
un punto ��� e la riflessione di � in � , se � eil punto di dimezzamento del segmento tra
� e ��� , cioe se
�� ������ Cio implica che ��� e univocamente determi-nato con
����� �����Possiamo quindi definire una funzione in Rche realizza questa operazione per punti del
piano:
�����������������! �"#��$��&%�"����&'�(�"�)� +*�,�#�-����'�(�"�)� &.��!(�"�/�)#�! -"102%435*�67�8�9 *#:!%�;
Nel piano in verita la riflessione in � coin-cide con la rotazione per 180 grado attorno
ad � , ma la formula � � � �1�<� e piu sem-plice e valida in ogni ��� .
Riflessione in una retta
Siano � un punto ed = una retta in ��� . Di-ciamo che un punto ��� e la riflessione di � in
= , se ��� e la riflessione di � nella proiezione� di � sulla retta (cfr. pagina 30).
Nel piano possiamo facilmente combinarele funzioni >�? �� e
�#���#��'�(�"�)# per realizzare
questa operazione in R:
�����������������! �"#��$��&%�"�������@ ? �-)�)�@A%�B�C!)�D�,�#�-��� ? �-)�)�@&.��!(�"�/�)#�! -"102%432%�B43ED�67 ��������'�(�"�)� �02%F3 >�? ���02%432%�BF3ED�6�6-;
z
z’
m
Possiamo utilizzare questa funzione anche
a un insieme di punti, cioe a una figura, adesempio ai punti di un cerchio o di un poli-
gono:
> ���)#��/ ? �G'�)F0GH�I�J�:�'# ����-K� �"� ? �����������! F,L'��#H�3M43NIF,EM�6��@!)� !O�.�/�02B43NM�6�PQ��@-)� !R�.�/�02B43SIF,EM�6'#@ ? 05T�K�.�HUR������� -D�H-6V ? @-�#��/!@40N��@-)� �O43N��@-)# !R43S/! ? "���/!��.!W�6D�.�I!C#X�,EI���PY%�B�.�BZ,E[!C�B\,2]���P)�.#�!�!^40N: 8 3NI�35T#R�.�B\,5B�X�6? .����-)�)�@40E)F32%�BF32%�B�C!D_6�PY���G"#����0 ? 6)�.#�!�!^402BF3 8�9 '���35T�R�.�BZ,5B#X�6�!.�`�� ? /Ga_�! �0E)F3NB\, 8 M�6-C#X�,E[�M�C#X�,EJ 8 �'# ��!R�K� �"Z0N��3S/! ��!._H ? ��$_H-6� ? .!�#����� ? �-)�)�@40N��32%�BF3ED�6'# ��!R�K� �"Z0N� ? 3S/� ��!._H ? �!$_H-6'�. > ����-K� �"# �0NM432B\,E]�6-C�I!C 8 ,2[��'# ��!R�K� �"Z05'\3S/! ��!._HG ? @�"�K���H!6' ? .!�#����� ? �-)�)�@405'\32%�BF3ED�6'# ��!R�K� �"Z05' ? 3S/� ��!._HG ? @�"�K��_H-6$��!bZ,E -���\0c6
Otteniamo l’immagine in alto nella colonnaaccanto.
Perturbazione dei coefficienti
Abbiamo usato la funzione'� ��!R ? � -) gia a
pagina 25. Il suo unico argomento e il vetto-re dei coefficienti (reali o complessi) di un
polinomio, elencati iniziando con il coeffi-ciente costante. Se i coefficienti delle poten-ze piu alte sono uguali a zero, vengono scar-
tate. Il risultato e un vettore che rappre-senta le radici complesse del polinomio con
le loro molteplicita. Abbiamo anche usatola funzione ? �(�"�$ per arrotondare i nume-
ri che otteniamo.Siccome il risultato di
'# ��!R ? � -) e un vet-
tore di numeri complessi, e facile rappre-sentare le radici di un polinomio con i nostri
strumenti; possiamo ad esempio disegnareun piccolo cerchio in ogni radice.
Vogliamo adesso studiare il comporta-mento delle radici quando i coefficienti del
polinomio vengono modificati.
Consideriamo prima il polinomio
d �1e�fghe4ijlkOtteniamo le sue radici, se sul terminale di
R battiamo
��.�/�0cX�3NB43cX�3cX�6? @!$�.-'# ��!R ? � !)F0E��6? �(�"�$40 ? @!$43 8 6
con output
BZ, 8 I!C�BZ,E]�m��nBZ, 8 I�:!BZ,E]�m���:#X�,5o�]!C�B\,5B�B��Cio significa che la terza radice e reale,
mentre le altre due sono l’una la coniugatacomplessa dell’altra. Nella rappresentazio-
ne grafica otteniamo
Consideriamo adesso il polinomio
p �1e4fjqe4ijqeQlkin cui appare anche e ; infatti
p � d qeSe calcoliamo nello stesso modo le radici dip , otteniamo la risposta
B�C#X!��:#X�C�B��rB�:�X!�Infatti
p �tsEe4ijlk�u-sEeQlk�uv�tsEew��xEu!sEe<qxEu!sEeYyk�uDalla rappresentazione grafica, in cui le ra-
dici di p corrispondono ai cerchietti verdi, ve-diamo che esse non sono troppo lontane da
quelle did:
La figura e stata ottenuta con
> ���)#��/ ? �G'�)\0GHGI�J�:-'# ��!R ? � -) 8 ,L'��#H�3NM43NI�6��@-)� !O�.�/�0N: 8 ,EM�3 8 ,2M�6�PQ��@-)# !R�.�/�0S:�X�,EM�3UX�,EM�6'#@ ? 05T#K�._HUR������� -D�H!6V ? @-�#��/!@�0N��@!)� !O43N��@-)� !R43c/! ? "���/!�!.!W�6@�T#���G"���05a�.�BF3Eb�.�B#6�P)�.��!�!^F02B43 8�9 '���35T�R�.�B\,5B#X�6'# ��!R�K� �"\02`�� ? /Ga��! 40E)F3cX�6�6��.�/�0cX�32B43cX�3UX�6? @!$�.-'� ��!R ? � -)F0E��6�� ? 0N%z�G" ? @!$#6'# ���"�)#��02%F35'�/Ga�. 8 X�35T�K�._H ? �!$�H-6K�.�/�0cX�3cX�3cX�3UX�6? @!$�.-'� ��!R ? � -)F02K#6�� ? 0N%z�G" ? @!$#6'# ���"�)#��02%F35'�/Ga�. 8 X�35T�K�._HUK ? ����"�H-6$��-bZ,E !���F0c6
Consideriamo il polinomio
d �1e�{|�z}�e f q~#e i �z}�eY�}�tsEew� u i sEe���x2u-sEeQqx2u
Esso possiede una radice doppia, che quin-
di nella rappresentazione grafica corrispon-dera a un unico cerchietto rosso nel punto
s ��U� u . Se poi modifichiamo il coefficiente die con ��~ , otteniamo il polinomio
p �1e { ��}#e4fgh~�e4i���~�eQ�}che, come si vede dalla figura, ha due radicimolto vicine alle radici semplici di
de due
radici che in un certo senso provengono dallaradice doppia di
danche se sono visibilmente
distanti da essa.
Una modifica in Postscript
Da questo numero abbiamo modificato la
funzione > ���)#��/ ? �G'�) , dividendo i parametriche indicano larghezza e altezza per 2.54.Cio ci permette di misurare le figure su carta
direttamente in centimetri.
> ���)#��/ ? �G'�)z.��!(�"_/�)#�! �"�0E�#�!���43N��@ ? KF3N@��-)�67 '# ���)���/ ? �G'�)F0E�#�!����3ED#�-$�)!a�.���@ ? K�� 8 ,2M!o43a#���!K-a�)�.�@��-)�� 8 ,2M!o43�a# ? �-%� �"�)#@��!.!�������-�F3 �"#�!�#�!���!.��������-�\3�'#@�'#� ? ._H��G'#��/��!@���H!6-;
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 9 37
I cammini delle radici
Consideriamo il polinomio
����������� ����������������������������� � ����!
�����"��#"$� ����%&���'�("$� ��� �
e per ogni )�*�+ ,�-/.10 il polinomio
�32&�4�5� )76 2con
6 2&�8�� � ! ��� % �9� ����9�;:<���=�;�<� ,�> ? �� )
Stavolta le radici di 6 2 le disegniamo usan-do in @�ACBED=F�G il simbolo @$HEI�JCK/L con un
H/M/N3JCLPORQ :S A=GTF�G3HTU$BE@CF�VEWTX3Y3Z1[3F\O]@$G�W$^7_�^RK�O_�`a3b F=A/N3J=H�VRZ3X�^RX�`�c a3b F=A3d3J=H�VRZ�Q�^RK=`@ b U�Vfe=g3J�W�dCM a3a A1h�W1`i U b [�B3H b V a3b F=A3N;^ a3b F�A/d;^7H/A/U/D$B3H/M3J/j$`[CJ�H�V L;^ L�^ L;^ L;^7k3Z/l=B�^7Z/l3m3l=B�^RZ3K3Z=Q3B�^�Q3`U b3n J1@�A a d/U=A3A1FPV[$`[=A/U�V o BTDpU b/n `@$ACBEDCF�G�V o;^f@$HTI=JCK=Q�^e=g3JqW�U�M n W1`r J�G/M/s;V L�^�Q�^fe=dCJ3LPOfL�QC`[=A/U�VF�BTD r `t [CFCJ/[Cm/F$u3H�VRZ1FP^ LPO_�^7K�^�Q�^�Q3B�^�Q�^RZ�Q/B�^ L�`U b3n J1@�A a d/U=A3A1FPV[3F$`[=A/U�V o BTDpU b/n `@$ACBEDCF�G�V o;^f@$HTI=JCK/L;^�H/M/N3J3LvORQ3`1wn M/xvOA1[3[PV�`Otteniamo
Questi grafici possono anche ingannare; in
questo caso ogni ramo si accresce solo inuna direzione dalla radice di partenza; se
usiamo l’intervallo + .$-1./0 avremo invecedue (mezzi) rami per ogni nuova radice co-
me nel seguente esempio in cui, con le stes-se notazioni,
�y��� :e
6 2&� ,�> ? � � �9� ��� .
In questo esempio si vede particolarmentebene un fenomeno gia osservato nell’ultima
figura a pagina 36: Sembra che le nuove ra-dici non partano direttamente dalla radice
tripla, ma a una certa distanza da essa, con-tinuando poi su un cammino piu continuo.
Infatti tipicamente le radici multiple risen-tono piu fortemente di una perturbazionedei coefficienti del polinomio di quanto ac-
cada per le radici semplici.
Il teorema di Rouche
Teorema 37.1. 6 ed z siano due polinomia coefficienti complessi e { una circonfe-
renza (cioe il bordo di un cerchio) nel pia-no tale che
| 6 �}$� |�~�| z �}$� |per ogni
} *�{ .
La disuguaglianza e quindi richiesta so-lo sul bordo del cerchio, non al suo inter-
no. Allora i polinomi 6 e 6 � z possiedonoall’interno del cerchio lo stesso numero di
radici, se queste vengono contate con le lo-ro molteplicita.
Dimostrazione. Questo e un teorema
molto importante dell’analisi complessa.Non confondere { con � .
Il teorema di Rouche si usa nel modo se-guente. Assumiamo che vogliamo studiare
gli zeri di un polinomio�. Allora decompo-
niamo�
nella forma�y� 6 � z , dove 6 e un
polinomio sui cui zeri, almeno all’internodi un cerchio, abbiamo sufficienti informa-
zioni. Consideriamo in altre parole�
comeperturbazione di 6 mediante z . Se riuscia-mo a dimostrare che sul bordo del cerchio
si ha sempre| 6 �}$� |�~�| z �}$� |
, allora pos-siamo concludere che
�e 6 all’interno del
cerchio possiedono lo stesso numero di ra-dici, tenuto conto della loro molteplicita.
Quindi se 6 nel cerchio possiede una so-la radice tripla, non possiamo dire che an-
che�
possiede una radice tripla, possiamopero dire che
�nel cerchio possiede esat-
tamente tre radici se queste vengono con-tate con le loro molteplicita.
Il teorema di Rouche permette una veloce
dimostrazione del teorema fondamentaledell’algebra (teorema 25.1); naturalmen-
te dovremmo prima, in un corso di ana-lisi complessa, dimostrare il teorema di
Rouche.Sia quindi dato un polinomio
���4�q�v� � ���q�v���1� �P��� ���3�3�C���q�a coefficienti complessi, con
� �4�� , e noncostante, cioe con � ��. .
Per applicare il teorema di Rouche con-sideriamo
�come perturbazione di
6�� �4� � � �
mediante
z�� �4�q�P���3� �v��� ���3�C�C���q�Per ogni
} *�� si ha| 6 � }�� | � | � � |]| } | �
e si vede facilmente che per| } |
sufficien-temente grande questa � -esima potenza
domina largamente le potenze inferiori equindi
| z �}$� |, per quanto grandi siano i
coefficienti di queste potenze inferiori ris-petto al coefficiente
� �di
� �.
Percio esiste certamente un � ~ , taleche per ogni
}che appartiene alla circon-
ferenza di raggio � (cioe tale che| } | � � )
si ha| 6 � }�� |�~�| z �}$� |
.Il teorema di Rouche implica allora che�
, il nostro polinomio dato, all’interno delcerchio
| } |;� � possiede lo stesso numero
di radici come 6 . Ma 6 ��� � � �in que-
sto cerchio possiede la radice}�� , di
molteplicita � . E quindi anche�
possiedeall’interno dello stesso cerchio � radici e
quindi almeno una radice perche per ipo-tesi � ��. .
Continuita delle radici
Definizione 37.2. Per un polinomio z a coeffi-cienti complessi sia
| z | �R�1�R� �il massimo dei va-
lori assoluti dei suoi coefficienti.
Osservazione 37.3. z sia un polinomio a co-efficienti complessi di grado ��� . Allora
| z �}$� | � | z | �R�1�R� � ���C� � | } | �
per ogni} * � .
Osservazione 37.4. Siano} -1¡4*9� e ¢�*9£ .
Allora
| } | � � � | }� ¡ | � | ¡ | � �
Assumiamo di sapere che| ¡ | ��¤ . Allora, se| }� ¡ | ��¥
, si ha
| } | � � �¥�� ¤ � �
Corollario 37.5. Siano} -1¡�*¦� e ¢y*¦£ .
Assumiamo di sapere che| ¡ | ��¤ .
z sia un polinomio a coefficienti complessi digrado ��� . Allora, se
| }� ¡ | ��¥, si ha
| z �}$� | � | z | �R�1�R� � ���C� � � ¥&� ¤ � �
Teorema 37.6. 6 ��� � ��� � �����3�3�C��� � � �con
�q� �� , ed ����. sia un polinomio con co-
efficienti complessi. ¡ � -3>3>3>3-1¡¨§ siano le radi-ci distinte di 6 ; esse possiedano le molteplicita© � -3>C>3>3- © § . Possiamo allora scegliere
¥ ~ ,in modo tale che, per ogni ª � .$-3>C>3>3-T« , ¡¨¬ sial’unica radice di 6 nel disco aperto
| }� ¡ ¬ |�� ¥e inoltre 6 non si annulli sulla circonferenza| }5 ¡ ¬ | ��¥
e quindi nemmeno sull’unione di queste circonferenze. Se vogliamo, possiamoscegliere
¥anche molto piccolo.
Fissato in tal modo¥, per un teorema ele-
mentare e fondamentale sulle funzioni conti-
nue definite su un insieme compatto (nel nostrocaso ), esiste un numero ® ~ , tale che
| 6 �}$� | ��®per ogni
} *� . Sia inoltre
¤4� ��¯±°C²P� | ¡ � | -C>3>3>3- | ¡ § | �il massimo dei valori assoluti delle radici e sia
³ � � ®���=� � �¥<� ¤ � �
Allora per ogni polinomio z di grado ��� con
| z | �R�1�R� � � ³il polinomio
� � � 6 � z possiede per ciascun
ª esattamente © ¬ radici all’interno del cerchio| }´ ¡v¬ |v� ¥, se queste vengono contate con le
loro molteplicita,�
possiede cioe lo stesso nu-
mero di radici in questo cerchio come 6 .
Dimostrazione. Abbiamo preparato quasitutto per poter applicare il teorema di Rouche.
Fissiamo ª . Sia| }� ¡ ¬ | ��¥
. Dobbiamo dimo-strare che
| z � }�� |���| 6 �}$� |.
Ma per il corollario 37.5 abbbiamo
| z �}$� | � | z | �R�1�R� ��µ
�C� � �¥&� ¤ � �
� ®���=� � �¥�� ¤ � �
�µ�=� � �¥�� ¤ � �
� ®(� | 6 �}$� |
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 9 38
Creazione di matrici
Matrici possono essere definite con il co-
mando ��� ������ che abbiamo gia incontratoa pagina 33. I componenti di una matri-ce possono essere numeri reali o complessi,
stringhe oppure avere il valore �� .��� ������ ha come argomento obbligatorio
un vettore di dati; inoltre si possono indi-care con ���� il numero delle righe o con
�� ��� il numero delle righe. La matrice vieneriempita colonna per colonna, se non si in-
dica ��� ��������� . Se � e una matrice, con ������� siottiene il vettore dei suoi elementi, elencati
colonna per colonna. Esempi:
� � ���� ����� ��!"��#$�&%$��'"�)("��*"��+$��,"�-�/.0�-��� �-��!��� � ��� ������� � � � ��� �1 ������� #��2 ��� � ����� 3 2 ��� � �)���������con output (senza le dimensioni)
� % * �/.! ' + ���# ( , �!�4!5#6%7'6(8*5+8,5�/.9���8��!
e invece, con gli stessi dati,
� � ��� ������� � � � ��� �1 ������� #"�1��� �������� �2 ��� � ����� 3 2 ��� � �)���������con output
� ! # %' ( * +,:�/. ���;�!�4'5,8!5(5�/.5#5*5���<%5+7��!
Impareremo nel prossimo numero le funzio-ni di R per l’algebra lineare, in particolare
come risolvere un sistema lineare =?>A@CB ;adesso le useremo per un po’ di grafica.
Parallele
L’istruzione��� �D�E�� 2 � unisce i punti di un
vettore di numeri complessi 2 con segmentidi rette. Se pero incontra un valore �� , inter-
rompe il tracciato e lo riprende con il prossi-mo valore definito. Usiamo questa caratte-ristica per creare schemi di rette parallele.
La funzione F�� � � ��� D � D che adesso defi-niamo ha come argomento la larghezza e
l’altezza dello schema e il numero di righeparallele; l’argomento opzionale � �� � � vie-
ne messo uguale a�
se vogliamo anche di-segnare i bordi superiore e inferiore oppure
uguale ad GE�G o G � G se vogliamo solo visua-lizzare il bordo superiore o inferiore.
Il risultato della funzione e un vettore dinumeri complessi interrotto da valori �� .F�� � � ��� D � D �6H�I �� ����� J� � � ��K ��� �� �1 L�� �� � ����M �N�O � � E�D�P0�&.$� � � ��K � � D K���Q�� R�O ! � O �/S�� ��T � �� 3U �� ��� D 2 �V��$�V R�2 � ���1��� ������ �)�"� O � � O !"�1 ������1 ������ #"�1��� �������� �����E � � .$3W��E � � � ��T � ��� 3� � D�E ��� � ��K 3X� � D�E ��� � ��K S���E � L3�/H � � � D/ ��� ��� � �1� �� � � �YG/E�G����Z��� 2 ����E � L��� � D�E��D � E�D �/H � � � D/ ��� ��� � �1� �� � � �YG � G�����"� 2 �1��E � L�1� � D�E��D � E�D �/H �V� �� � � ��"� 2 ����E � L��� � D�E��V��0�1��E � [�1� � D�E��D � E�D 2�\
Come nasce una forma
La natura e molto efficiente a creare una
straordinaria varieta di forme con elemen-ti semplicissimi. La ricchezza non sta quin-di negli ingredienti, ma nella fantasia delle
combinazioni. Uno degli strumenti piu effi-caci e la ripetizione associata a piccole mo-
difiche negli elementi.La funzione F�� � � ��� D � D genera un insie-
me di punti che possiamo sottoporre a tras-lazioni, rotazioni o altre operazioni geome-
triche e disegnare con��� �D�E , come si vede
nell’esercizio 65 e nelle seguenti figure:
F � E � E�� ��� 2 � �/GY#�+�] 2 � � � ��� �"^ 2 E�GR�&%$�&%��� � ����� �"��]�!"��!�� 3 2 � � �V� K�� G � �/ �G�_ � � H�� ���"� � � ��� � � � ��� �)� �� � ��D ��� �2 � F�� � � ��� D � D$�-�"^V'"��� �-�(��S�.L^V!H��� ��� ��H � � 9E�D�P$�&.0��#�(�.$�V��� � !�.����N ��� �D�E"�V` �� � 2 ��� �H ����� \� Da[^ �H�H �-�Quanto e semplice!
2 � F�� � � ��� D � D$��#0^1%$���"^V!"��#�(��]��"^&*�]�.L^V( �H��� ��� ��H � � 9E�D�P$�&.0��#�(�.$�V��� � #�(����N ��� �D�E"�V` �� � 2 ��� �H ����� \
Lo schema e stato centrato.
2 � F�� � � ��� D � D$��#0^1%$��� ��!�.���]��"^V*�]�.L^V' �H��� ��� ��H � � 9E�D�P$�&.0��#�(�.$�V��� � !�%����N ��� �D�E"�V` �� � 2 ��� �H ����� \
Esercizi per gli scritti
59.
z
z’
m
60. b sia un polinomio a coefficienti reali edcedgf tale che bih ckj @ml . Allora anchebih cij @gl .Non e difficile, e sufficiente scrivere b
esplicitamente con i suoi coefficienti.
Dall’enunciato di questo esercizio de-
riva facilmente (ma non fa parte delcompito) che le radici non reali di un
polinomio a coefficienti reali appaionosempre a coppie coniugate e che un poli-
nomio a coefficienti reali di gradi disparipossiede sempre una radice reale.
61. Le radici del polinomio bn@ehV>porq j hV>poUs jnon sono coniugate tra di loro. Perche
non e una contraddizione all’esercizioprecedente?
62. Spiegazione a pagina 37.
63. t sia un polinomio a coefficienti com-plessi di grado uwv . Allora
x tihVy j x u x t x z�{|�} }�~����k� x y x�
per ogni y d4f .
E quindi richiesta la dimostrazionedell’osservazione 37.2 (molto facile).
64. Spiegare la funzione F�� � � ��� D � D nella
prima colonna su questa pagina.Cio significa che nel compito puo es-
sere dato il listato della funzione e bi-
sogna spiegare, anche e soprattutto conappositi disegni, il significato delle sin-
gole istruzioni.
65. Prendere le misure con la riga.
66. Riflessione del punto h1���/� j nella rettache congiunge i punti h)q��Y� j e h�q����Y� j .
Corso di laurea in matematica � Corso di Algoritmi e strutture di dati �g��� Docente: Josef Eschgfaller
ALGORITMI E STRUTTURE DI DATI
Corso di laurea in matematica Anno accademico 2004/05 Numero 10
Matrici in R
Conosciamo gia il comando matrix
per la creazione di matrici (pagi-
na 38) e vogliamo trattare in que-
sto numero le piu importanti ope-
razioni con matrici fornite da R. E
spesso utile (in statistica, ma an-
che in matematica pura, cfr. eser-
cizio 22) considerare una matrice
A ∈ Rnm (n righe ed m colonne) co-
me un unico lungo vettore di Rnm
(elencando gli elementi colonna per
colonna come fa R e come sarebbe
in effetti piu logico sia in algebra
lineare che in statistica) oppure di
Rnm (elencando gli elementi riga
per riga come talvolta e piu intui-
tivo, ma solo perche siamo abitua-
ti a leggere riga per riga). A que-
sto punto bisogna distinguere tra
le operazioni definite per vettori da
quelle definite per matrici.
Abbiamo anche, in un altro sen-
so, due operazioni di moltiplicazio-
ne per matrici: da un lato il pro-
dotto elemento per elemento (pro-
dotto di Hadamard), dall’altro la
moltiplicazione matriciale. A e B
siano due matrici con le appropria-
te dimensioni (cioe stesso numero
di righe e stesso numero di colonne
per il prodotto di Hadamard, nu-
mero di colonne di A uguale al nu-
mero di righe di B per il prodot-
to matriciale). Allora i coefficien-
ti Pij del prodotto di Hadamard
P := A • B sono definiti da
Pij = AijBij
i coefficienti Cij del prodotto matri-
ciale C := AB da
Cij =P
k
AikBkj .
Possiamo naturalmente anche for-
mare la somma di due matrici
della stessa forma e moltiplicare
una matrice con un numero reale
o complesso:
(A + B)ij = Aij + Bij
(tA)ij = tAij
In R le operazioni matriciali cor-
rispondono ai seguenti comandi:
A+B ... addizione
t*A ... moltiplicazione di una
... matrice con un numero
A*B ... prodotto di Hadamard
A%*%B ... prodotto matriciale
A^2 ... non A2, ma A • A!
t(A) ... trasposta At di A
crossprod(A,B) ... AtB
Sembra che possiamo senza proble-
ma usare t per numeri anche in
uno stesso contesto, non dobbiamo
comunque ridefinire t come funzio-
ne se vogliamo usare anche la tras-
posta.
A*B e anche definito quando A e B
hanno la stessa lunghezza (length)
totale, ma l’operazione non ha mol-
to senso se le due matrici non han-
no la stessa forma.
L’espressione A%*%b denota anche il
prodotto di una matrice A con un
vettore b, in accordo con la nota-
zione matematica; confonde invece
probabilmente che si possa usare
l’operatore %*% anche per il prodot-
to scalare di vettori.
Esempi per le operazioni matriciali
Definiamo prima una nostra funzione per
la creazione di una matrice:
Matrice = function(dati, righe=NULL, col=NULL)
{if (!is.null(righe))
matrix(dati,nrow=righe,byrow=T)else if (!is.null(col))
matrix(dati,ncol=col)else NULL}
Una matrice e direttamente convertibilein un vettore mediante l’operatore c, co-
me abbiamo visto a pagina 38, ma anchein ogni contesto in cui R si aspetta un vet-
tore. Quindi e corretta la sequenza
A=Matrice(1:12,col=3)
print(A)B=Matrice(A,col=4)
print(B)
con output semplificato
1 5 92 6 10
3 7 114 8 12
1 4 7 102 5 8 11
3 6 9 12
In questo numero
39 Matrici in REsempi per le operazioni matricialiPiccoli operatori
40 Indici vettorialiIl crivello di Eratostenefor, while e repeat
v[v%%p0]41 Assegnazione vettoriale
Indici matriciali
L’opzione droprbind e cbind
42 Sistemi lineari con R
length e dimdet (determinante) e tracciaMatrici diagonali
abs (valore assoluto) e signAutovalori
43 Matrici simmetriche
eigen (autovalori e autovettori)Matrici realiI cerchi di Gershgorin
Esercizi 67-76
Piccoli operatori
prod(v) e il prodotto degli elementi del vettore
v; anche questa funzione puo essere applicata amatrici, infatti prod(A) e uguale a prod(c(A)).
Esempi:
print(prod(1:6))
# output: 720
print(prod(2,6,1,3,4,3))
# output: 432
sum(v) e mean(v) sono la somma e la media delvettore v. Esempi:
print(sum(1:6))# output: 21
print(mean(1:6))# output: 3.5
Queste funzioni vengono naturalmente usatemolto spesso in statistica.
cumsum(v) e diff(v) sono i vettori delle sommecumulative e delle differenze del vettore v.
a=c(3,2,5,8,7,6,10,9)
print(a)# output: 3 2 5 8 7 6 10 9
s=cumsum(a)
print(s)# output: 3 5 10 18 25 31 41 50
b=diff(s)print(b)
# output: 2 5 8 7 6 10 9
print(diff(c(0,s)))
# output: 3 2 5 8 7 6 10 9
L’operatore che forma le differenze e inverso
all’operatore di sommazione!
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 10 40
Indici vettoriali
R possiede dei meccanismi molto generali esofisticati per l’uso degli indici in vettori e
matrici. Consideriamo il vettore
v=11:18
Indicando un singolo indice o un vettore di
indici ne possiamo estrarre singoli elementio parti:
w=v[2]print(w)
w=v[c(2,3,8)]print(w)
w=v[5:9]print(w)
con output
12
12 13 1815 16 17 18 NA
Mediante l’uso di indici negativi possiamoescludere alcuni elementi:
w=v[-2]print(w)
w=v[-c(2,3,8)]print(w)
ottenendo
11 13 14 15 16 17 18
11 14 15 16 17
Una caratteristica avanzata di R e che co-me indici si possono anche usare vettori di
valori booleani, cioe vettori i cui componen-ti sono o T o F. Se in questo caso il vettorebooleano ha una lunghezza minore di quel-
la del vettore da cui vogliamo estrarre, i va-lori booleani vengono ciclicamente ripetuti.
Esempi:
v=c(1:8)
filtro=c(F,F,T,T,F,T,F,F)u=v[filtro]
print(u)
con output 3 4 6. Infatti vengono riprodottiin u gli elementi di v che corrispondono a po-
sizioni in cui il valore del vettore booleano euguale a T.
Con filtro=c(T,F) otteniamo ogni secon-do elemento di v, con filtro=c(F,T) ogni se-
condo elemento di v, saltando il primo:
v=c(1:8)
filtro=c(T,F)u=v[filtro]print(u)
filtro=c(F,T)u=v[filtro]
print(u)
con output
1 3 5 72 4 6 8
Possiamo adesso riscrivere in R un famosoalgoritmo che permette di trovare i numeriprimi ≤ n per un dato numero naturale n.
Il crivello di Eratostene
Definizione 40.1. Siano a, b ∈ Z.Diciamo che a divide b e scriviamo a|b,
se esiste k ∈ Z tale che b = ka.Quindi a|b se e solo se b e un multiplo
di a, cioe se e solo se b ∈ Za. E chiaro che
allora anche Zb ⊂ Za e viceversa, quindia|b se e solo se Zb ⊂ Za.
Questa riduzione della relazione di divi-sibilita a una relazione insiemistica e mol-
to importante e conduce alla teoria degliideali, un ramo centrale dell’algebra com-
mutativa.
Definizione 40.2. Un numero naturale p
si chiama primo, se p ≥ 2 e se, per d ∈ N
con d|p si ha d ∈ {1, p}.
Osservazione 40.3. n ∈ N + 2 sia un nu-mero naturale ≥ 2 fissato. m sia un al-
tro numero naturale con 2 ≤ m ≤ n chenon sia primo. Allora esiste a ∈ N con
2 ≤ a ≤ √n tale che a|m.
In altre parole, se sappiamo che m ≤ n,
per verificare che m sia primo, dobbiamosolo dimostrare che m non possiede divi-
sori tra 2 e√
n.
Nota 40.4. Sia n ∈ N + 2 un numero na-turale ≥ 2 fissato. Possiamo creare una
lista di tutti i primi con il seguente pro-cedimento che prende il nome di crivello
di Eratostene; lo modifichiamo leggermen-te ai fini del programma in R con cui verra
realizzato.
(1) Definiamo due vettori variabili u e v
e poniamo inizialmente
u = ()
v = (2, 3, . . . , n)
(2) Calcoliamo la radice r =√
n.
(3) Poniamo p = v1.
(4) Se p > r, andiamo alla fine (F).
(5) Aggiungiamo p a u, ridefinendou = (u, p)
intendendo con cio che p viene ag-giunto come ultimo elemento ad u.
(6) Eliminiamo da v tutti gli elementi di-visibili per p (compreso p stesso).
(7) Torniamo al punto (3).
(F) A questo punto la concatenazione(u, v) di u e v rappresenta la succes-
sione ordinata dei primi ≤ n.
Dimostrazione. Infatti il numero p al
punto (3) e il piu piccolo numero che none stato eliminato da v nel passaggio pre-cedente; esso non e quindi divisibile da
nessun numero tra 2 e p − 1 ed e per-cio primo, cosicche lo aggiungiamo ad u.
Poi eliminiamo da v tutti i multipli di p.Dall’osservazione 40.3 segue che ci possia-
mo fermare quando p >√
n.
Possiamo trascrivere questo algoritmo di-
rettamente in una funzione in R che con-serviamo nel file Primi della nostra libre-
ria:
Eratostene = function (n)
{v=2:n; u=(); r=sqrt(n)repeat
{p=v[1]; if(p>r) break;u=c(u,p)v=v[v%%p>0]}
c(u,v)}
Per provare la funzione usiamo
u=Eratostene(200)u=c(u,0,0)
A=Matrice(u,righe=6)print(A)
ottenendo l’output
2 3 5 7 11 13 17 1923 29 31 37 41 43 47 53
59 61 67 71 73 79 83 8997 101 103 107 109 113 127 131
137 139 149 151 157 163 167 173179 181 191 193 197 199 0 0
Abbiamo creato una matrice per una migliorevisualizzazione; per poter riempire la matrice
abbiamo anche aggiunto due zeri che natural-mente non derivano dall’algoritmo.
for, while e repeat
R possiede tre istruzioni per l’esecuzione dicicli: for (che abbiamo gia usato alle pagine
22, 32, 35-37), while e repeat (che abbiamousato in Eratostene); esse vengono utilizzate
con questa sintassi:
for (x in v) istruzioni
while (condizione) istruzioni
repeat istruzioni
dove istruzioni e un’istruzione singola oppu-
re una successione di istruzioni che allora de-ve essere racchiusa tra parentesi graffe.
Per uscire da un ciclo si usa break, mentrenext interrompe il passaggio corrente di un
ciclo e porta all’immediata esecuzione del pas-saggio successivo, cosicche
for (x in 1:20)
{if (x%%2>0) nextprint(x)}
stampa sullo schermo i numeri pari compresitra 1 e 20.
v[v%%p0]
Dobbiamo ancora analizzare questa misterio-
sa espressione che abbiamo usato nella funzio-ne Eratostene. Intuitivamente e chiaro che do-
vrebbe rappresentare quegli elementi del vet-tore v il cui resto modulo p e maggiore di zero.
Ma come si inquadra nella sintassi che abbia-mo visto finora?
La spiegazione e che in v[v%%p>0] viene pri-ma calcolato il vettore interno che funge dafiltro, cioe il vettore booleano v%%p>0 che, se-
condo il modo vettoriale delle operazioni di R,contiene il valore T in ogni posizione dove in v
si trova un numero non divisibile per p, e nellealtre posizioni contiene il valore F.
All’inizio dell’algoritmo, quando v=2:n ep=2, v%%>0 e uguale a c(F,T,F,T,F,T,...),
nel passaggio successivo, in cuiv=c(3,5,7,9,11,13,15,17,...), v%%3>0 e
uguale a c(F,T,T,F,T,T,F,T,...), e cosı via.
In modo simile (anche questo esempio e im-
portante nella teoria dei numeri), se v=0:n, al-lora v[v%%4==1] consistera di tutti i numerinaturali tra 0 e n con resto 1 modulo 4.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 10 41
Assegnazione vettoriale
Le espressioni della forma v[a] posso-no essere anche usate per assegnare va-
lori alla parte del vettore v descrittadall’espressione. Esempi:
v=1:8
v[c(3,5,2)]=0
print(v)# output: 1 0 0 4 0 6 7 8
v[1:4]=c(2,3)print(v)
# output: 2 3 2 3 0 6 7 8# Quindi ripetizione di 2,3!
v[-c(7,8)]=c(4,5,1)
print(v)# output: 4 5 1 4 5 1 7 8
v[-c(6,7,8)]=c(2,0,9)print(v)
# output: 2 0 9 2 0 1 7 8# Ma avvertenza!
v[c(T,F)]=c(5,3)print(v)
# output: 5 0 3 2 5 1 3 8
Nel penultimo esempio R ci avverte che la
lunghezza della parte dove vogliamo modi-ficare i valori (in questo caso 5) non e un
multiplo del vettore che contiene i nuovi va-lori (in questo caso 3).
Sono operazioni piuttosto potenti.
Indici matriciali
Il coefficiente nella i-esima riga e j-esima
colonna di una matrice A viene denotato conA[i,j].
Anche qui possiamo pero usare espres-sioni piu complesse, cosicche ad esempio
con A[c(1,3),c(2,4,6)] otteniamo la mtrice2x3 che consiste dei coefficienti nella prima
e terza riga e nella seconda, quarta e sestacolonna di A.
Se u e v sono vettori di indici, allora A[u,]
e la matrice che consiste delle righe di A conindici da u, mentre A[,v] consiste delle co-
lonne con indici da v. A[-u,] e invece la ma-trice da cui abbiamo tolto le righe con indici
da u. Anche vettori booleani di indici posso-no essere usati per matrici. Esempi:
dati=c(11:16,21:26,31:36,41:46)
A=Matrice(dati,righe=4)print(A)
con output
11 12 13 14 15 1621 22 23 24 25 26
31 32 33 34 35 3641 42 43 44 45 46
e, continuando con la stessa matrice A,
B=A[c(1,2),]
print(B)
con output
11 12 13 14 15 1621 22 23 24 25 26
B=A[,c(3,5)]
print(B)
con output
13 1523 25
33 3543 45
B=A[c(T,F),]
print(B)
con output
11 12 13 14 15 1631 32 33 34 35 36
B=A[c(T,F),c(T,F)]print(B)
con output
11 13 15
31 33 35
B=A[,-c(5,6)]print(B)
con output
11 12 13 14
21 22 23 2431 32 33 3441 42 43 44
Se usiamo un filtro, otteniamo il vettore dei
coefficienti della matrice che soddisfano ilcriterio espresso dal filtro, elencati colonna
per colonna:
filtro=A%%4==1
print(filtro)
B=A[filtro]
print(B)
con output
FALSE FALSE TRUE FALSE FALSE FALSETRUE FALSE FALSE FALSE TRUE FALSE
FALSE FALSE TRUE FALSE FALSE FALSETRUE FALSE FALSE FALSE TRUE FALSE
21 41 13 33 25 45
Anche indici matriciali possono essere usatiper assegnare valori a parti di una matrice:
A[1,]=c(91:96)print(A)A[,2]=c(81:84)
print(A)
con output
91 92 93 94 95 9621 22 23 24 25 26
31 32 33 34 35 3641 42 43 44 45 46
91 81 93 94 95 9621 82 23 24 25 26
31 83 33 34 35 3641 84 43 44 45 46
L’opzione drop
Quando scegliamo solo una riga o una colon-na di una matrice, queste vengono automa-
ticamente convertite in un vettore. Talvoltapero si vorrebbe poter considerare quella ri-
ga o colonna come matrice; per fare cio bi-sogna aggiungere l’opzione drop=F all’indice.Esempio:
dati=c(11:14,21:24,31:34)
A=Matrice(dati,righe=3)print(A)
cat(’------------------------\n’)
v=A[1,]
print(v)cat(’------------------------\n’)
v=A[1,,drop=F]
print(v)
con output, stavolta completo, cosı come ap-pare sullo schermo,
[,1] [,2] [,3] [,4][1,] 11 12 13 14
[2,] 21 22 23 24[3,] 31 32 33 34
------------------------[1] 11 12 13 14------------------------
[,1] [,2] [,3] [,4][1,] 11 12 13 14
rbind e cbind
Possiamo unire piu righe con rbind e piu co-lonne con cbind; le righe o colonne possono
essere date singolarmente o anche come ma-trici. Esempi:
dati=c(11:13,21:23,31:33)
altridati=c(14:15,24:25,34:35)
A=Matrice(dati,righe=3)print(A)
B=Matrice(altridati,righe=3)print(B)C=cbind(A,B)
print(C)
con output
11 12 1321 22 23
31 32 33
14 15
24 2534 35
11 12 13 14 1521 22 23 24 25
31 32 33 34 35
e, continuando con la stessa matrice C,
D=rbind(C,81:85,91:95)
print(D)
con output
11 12 13 14 1521 22 23 24 2531 32 33 34 35
81 82 83 84 8591 92 93 94 95
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 10 42
Sistemi lineari con R
R permette, per matrici che devono esse-re quadratiche e invertibili, la risoluzio-
ne di un sistema lineare
Ax = b
mediante l’istruzione
x=solve(A,b)
Proviamo prima con il sistema che ab-biamo risolto a pagina 8:
dati=c(3,-2,1,6)A=Matrice(dati,righe=2)v=c(8,5)
x=solve(A,v)print(x)
L’output e 2.90 0.35, in accordo con lasoluzione gia trovata, infatti
58
20= 2.9,
7
20= 3.5
Proviamo con il sistema dell’esempio
9.1:
dati=c(3,2,-1,4,-9,2,1,1,-14)
A=Matrice(dati,righe=3)v=c(10,6,2)
x=solve(A,v)print(round(x,4))
La risposta e
2.9305 0.6611 0.1137
in accordo con quanto gia trovato.
Se vogliamo le soluzioni come numerirazionali, nell’ultima riga del program-ma possiamo usare
print(fractions(x))
La funzione fractions richiede pero lalibreria MASS, che dobbiamo caricare
con
library(MASS)
Otteniamo allora l’output
1392/475 314/475 54/475
L’inversa di una matrice non singolare A
e data da
solve(A)
Per verificare se la matrice e invertibi-
le si puo calcolare il determinante condet(A).
La libreria MASS contiene la funzio-ne ginv che calcola l’inversa generaliz-
zata nel senso di Penrose di matrici nonnecessariamente quadratiche.
length e dim
length(v) e la lunghezza di un vettore odi una matrice.
Nel caso di una matrice questa vieneconsiderata come vettore, la lunghezza e
quindi uguale ad nm, se la matrice pos-siede n righe ed m colonne.
dim(A) e allora il vettore (n, m).
det (determinante) e traccia
det(A) e il determinante della matrice A.Per la traccia sembra che non ci sia una
apposita funzione che pero possiamo facil-mente definire:
Traccia = function (A){if (length(A)>1) sum(diag(A))else c(A)}
Matrici diagonali
La funzione diag puo essere usata in piumodi:
diag(6)
genera una matrice identica 6 × 6,
diag(v)
genera, per un vettore v, una matrica dia-
gonali che contiene i coefficienti di v nelladiagonale principale, mentre infine
diag(A)
e il vettore che consiste degli elementi del-la diagonale principale di A. Esempi:
A=diag(4)
print(A)
con output
1 0 0 00 1 0 0
0 0 1 00 0 0 1
A=diag(c(2,3,5))
print(A)
con output
2 0 0
0 3 00 0 5
dati=c(11:13,21:23,31:33)
A=Matrice(dati,righe=3)print(A)
print(diag(A))
con output
11 12 13
21 22 2331 32 33
11 22 33
abs (valore assoluto) e sign
abs(x) e il valore assoluto del numero rea-
le o complesso x.Secondo la filosofia di R, se v e un vetto-
re, con abs(v) si ottiene il vettore dei va-lori assoluti degli elementi del vettore; lo
stesso vale per una matrice dalla quale ot-teniamo quindi la matrice dei valori asso-
luti dei suoi coefficienti.
sign(x) e il segno di un numero reale
(uguale a zero se x e uguale a zero).
Autovalori
Situazione 42.1. K sia un campo e A ∈ Kn
nuna
matrice quadratica.
Denotiamo con δ la matrice identica.
Teorema 42.2. Consideriamo l’applicazione
ϕ = ©x
Ax : Kn−→Kn
Allora i seguenti enunciati sono equivalenti:
(1) ϕ non e biiettiva.
(2) ϕ non e suriettiva.
(3) ϕ non e iniettiva.
(4) detA = 0.
E chiaro che la condizione (3) si verifica se e solo
se esiste un vettore x 6= 0 in Kn tale che Ax = 0.
Dimostrazione. Corsi di Geometria.
Definizione 42.3. Un vettore x ∈ Kn si chiama
un autovettore di A, se x 6= 0 e se esiste un ele-mento λ ∈ K tale che Ax = λx.
Cio accade se e solo se (A − λδ)x = 0.
Definizione 42.4. Un elemento λ ∈ K si chiamaun autovalore di A, se esiste un vettore x ∈ Kn
con x 6= 0 e Ax = λx.In tal caso diciamo anche che x e un autovettore
di A per l’autovalore λ e che λ e un autovalore diA per l’autovettore x.
Osservazione 42.5. Sia λ ∈ K. Allora λ e unautovalore di A se e solo se
det(A − λδ) = 0.
Dimostrazione. Teorema 42.2.
Nota 42.6. Sviluppando il determinante, non edifficile dimostrare che
det(λδ − A) = (−1)n det(A − λδ)
e un polinomio di grado n in λ (qui si usa spessola stessa lettera λ sia per un elemento concreto
di K che per un’indeterminata) che si chiama ilpolinomio caratteristico di A.
Consideriamo il caso n = 2. Allora
A =
„
a b
c d
«
e
λδ − A =
„
λ − a −b
−c λ − d
«
quindi
det(λδ − A) =
˛
˛
˛
˛
λ − a −b
−c λ − d
˛
˛
˛
˛
= (λ − a)(λ − d) − bc
= λ2− λ(a + d) + ad − bc
= λ2− λ · tr A + det A
Per una matrice triangolare
A =
„
a b
0 d
«
il polinomio caratteristico diventa˛
˛
˛
˛
λ − a −b
0 λ − d
˛
˛
˛
˛
= (λ − a)(λ − b)
e quindi i due autovalori in questo caso sono glielementi a e d nella diagonale principale.
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 10 43
Matrici simmetriche
Consideriamo una matrice reale simmetri-ca
A =
„
a b
b d
«
Per la formula vista a pagina 42
det(A − λδ) = λ2 − λ(a + d) + ad − b2
Gli autovalori di A (nel campo complesso)sono quindi dati da
λ =a + d ±
√D
2
con
D = (a + d)2 − 4(ad − b2)
= a2 + 2ad + d
2 − 4ad + 4b2
= a2 − 2ad + d
2 + 4b2
= (a − d)2 + 4b2
Percio D ≥ 0 e vediamo che gli autovalori
di una matrice reale simmetrica 2 × 2 sonoreali.
Cio vale anche per le dimensioni superio-ri e puo essere dimostrato, in modo moltopiu semplice, utilizzando il prodotto scalare
e l’ortogonalita.
eigen (autovalori e autovettori)
In R gli autovalori di una matrice reale ocomplessa si trovano con la funzione eigen.
Essa calcola, se non si pone l’opzione
only.values=T
anche un sistema di autovettori; cio puo ral-
lentare il calcolo per matrici molto grandi.Il risultato e una lista in R, un concetto che
non riusciamo piu a trattare, e le compo-nenti si ottengono con la sintassi $values e$vectors. Creiamo due funzioni che inseria-
mo nel file Matrici della nostra libreria:
Autovalori = function (A)
{eigen(A,only.values=T)$values}
Autovettori = function (A){eigen(A)$vectors}
Calcoliamo gli autovalori della matrice
„
6 −22 6
«
con
A=Matrice(c(6,2,-2,6),col=2)
lambda=Autovalori(A)print(round(lambda,2))
trovando 6+2i 6-2i e nello stesso modoquelli di
„
6 22 6
«
che, secondo quanto visto prima, dovrebbe-ro essere reali. Infatti troviamo la risposta
8 4.
Matrici reali
Una matrice reale A ∈ Rn
nnon possiede ne-
cessariamente autovalori reali; d’altra par-
te A puo essere anche considerata come unamatrice in C
n
ne il polinomio caratteristico,
assumendo naturalmente n ≥ 1, in C pos-siede sempre radici. Quindi A possiede inogni caso autovalori e autovettori comples-
si e vediamo di nuovo che lo studio di unproblema formulato in ambito reale ci por-
ta in modo naturale nel regno dell’analisicomplessa.
I cerchi di Gershgorin
Per una matrice reale o complessa 2 × 2
A =
„
a b
c d
«
definiamo i cerchi
C1 := {z ∈ C | |z − a| ≤ |b|}C2 := {z ∈ C | |z − d| ≤ |c|}
similmente per una matrice 3 × 3
A =
0
@
a11 a12 a13
a21 a22 a23
a31 a32 a33
1
A
poniamo
C1 := {z ∈ C | |z − a11| ≤ |a12| + |a13|}C2 := {z ∈ C | |z − a22| ≤ |a21| + |a23|}C3 := {z ∈ C | |z − a33| ≤ |a31| + |a32|}
Questi cerchi, che si definiscono in mo-do analogo per le dimensioni superriori, si
chiamano i cerchi di Gershgorin di A.I centri dei cerchi di Gershgorin sono gli
elementi nella diagonale principale dellamatrice; se la matrice e reale o se almeno
gli elementi nella diagonale sono tutti reali,i centri dei cerchi di Gershgorin si troveran-
no quindi sull’asse reale.
Teorema 1 di Gershgorin. Gli autovaloridi A sono tutti contenuti nell’unione dei suoi
cerchi di Gershgorin.
Dimostrazione. Corsi di Analisi numeri-
ca. Abbastanza facile.
Definiamo una funzione (che fara parte delfile Matrici nella libreria) che restituisceil centro e il raggio dell’i-esimo cerchio di
Gershgorin della matrice A:
Gershgorin = function (A,i)
{centro=A[i,i]raggio=sum(abs(A[i,]))-abs(centro)
c(centro,raggio)}
Calcoliamo i cerchi di Gershgorin della ma-
trice dell’esercizio 75:
dati=c(1,4,1,3,2,-1,4,0,3,2,5,-2,4,-3,1,8)
A=Matrice(dati,righe=4)
for (i in 1:4)print(Gershgorin(A,i))
Esercizi per gli scritti
67. Una matrice di rotazione„
cos α − sin α
sin α cos α
«
possiede autovalori reali se e solo secos α ∈ {1,−1}. Come e fatta allora la
matrice e come opera?
68. Gli autovalori di„
6 −22 6
«
sono 6 + 2i e 6 − 2i. Calcolare in questiesercizi gli autovalori a mano.
69. Gli autovalori di„
6 2
2 6
«
sono 8 e 4.
70. Gli autovalori di una matrice reale ocomplessa della forma
„
a b
b a
«
sono a + b e a − b.
71. Gli autovalori di„
15 44 0
«
sono −1 e 16. Verificare con R.
72. Gli autovalori di„
21 44 6
«
sono 22 e 5. Come si trovano queste bellematrici? Guardare a pagina 12.
73. Sia λ un autovalore di„
0 −2i
3 + 4i 0
«
Allora |λ| ≤ 5.
74. Sia λ un autovalore di0
@
0 2 1
3 0 2 − i
1 − i 2 + i 0
1
A
Allora |λ| ≤ 3 +√
5.
75. Disegnare su sfondo giallo i cerchi diGershgorin (in rosso) della matrice
0
B
B
@
1 4 1 3
2 −1 4 03 2 5 −2
4 −3 1 8
1
C
C
A
Usare points con pch=20 per i centri.
La funzione Gershgorin viene chiamatadall’interno del programma.
76. Definire con dati=... e A=... come allafine della colonna precedente la matri-
ce dell’esercizio 75. Creare, con un unicocomando B=ifelse (...) la matrice che
si ottiene da A sostituendo tutti i valorinegativi con 0. Verificare con print(B).
Corso di laurea in matematica 4 Corso di Algoritmi e strutture di dati � © � Docente: Josef Eschgfaller
� � � � � ��� � � �� � � � � � � � � � �Corso di laurea in matematica Anno accademico 2004/05 Numero 11
Derivazione simbolica
Come vediamo nell’articolo su que-
sta pagina, la formazione della de-
rivata ha molti aspetti puramen-
te formali e algebrici. Per questa
ragione anche R e in grado di ef-
fettuare la differenziazione di es-
pressioni formali e fornisce a que-
sto scopo la funzione � che si usa
come in questo esempio:�������������������������� � �!��#"%$&�('*)�+��-,.�����!�/���0�����1%$2�������������43#5*�(5�,����!6"�07$8.����-!#/���0���,con risultato9;:�<>=-?A@CB
La derivataDFEHGJILKNMsia una funzione a valori reali
definita su un apertoG
diM
(quasi sempreGsara un intervallo aperto, anche infini-
to, diM
oppure un’unione di un numero fi-nito di intervalli aperti). Sia O7PRQ G . Se il
limiteDLSUT O4P�V E WYX Z [\^]�_ P D`T OLPbadcLV IeD`T O4P�Vcesiste, allora si dice che la funzione
De dif-
ferenziabile in OLP edDLSUT O4P�V si chiama la
derivata diD
in OLP .Segue abbastanza direttamente dalla
definizione che, se anche f e una funzio-ne definita in
Ge se esistono le derivateDLSgT OLP�V e f SUT O4P�V , allora anche
T8D adf-V S*T OLP�Vesiste e si haT8D aef(V S*T O P V WhDLSgT O P V`aef SUT O P VSi dimostra inoltre che esiste ancheT8D f(V SgT O P V e cheT8D f(V S T O P V WhD S T O P Vgf T O P V`a D`T O P Vgf S T O P VQui
D f e la funzione i j D`T OLVgf T OLV , da non
confondere con la composizione delle duefunzioni. Se k e l’insieme dei punti in cuiD
e f sono entrambe differenziabili, pos-siamo considerare
D7Se f S come funzioni
definite su k e scrivere piu brevementeT8D aef(V S WlD S amf ST8D f(V S WlD S fna D f SPer una funzione costante
D`T O P aocLV eD`T O4P�V coincidono, e vediamo che la deri-vata di una funzione costante e uguale a
zero.
Consideriamo la funzione identica. Inquesto caso il limite da studiare eX Z [\^]�_ P T O P apc4V I O Pc WYX Z [\q]�_ P cc Wsrpercio la funzione identica
Z tha derivata
1 in ogni punto.
Assumiamo adesso che laD
sia differen-
ziabile in OLP e consideriamo le funzioniD7u
,DLveD^w
. Per la regola del prodotto abbiamoT8D u V S WhD S D a D7D S Wlx�D7D ST8D v V S WhD S D u a DyT&D u V SWhD S D u a DRz�x-D7D S W|{�D S D uT8D w V S WhD S D v a DyT&D v V SWhD S D v a DRz�{-D S D u W|}(D S D v
Intravvediamo la formula generaleT8DL~ V SyWl�`DLS&DL~ ]��che infatti si dimostra facilmente per ogni� Q�� con induzione. Se poniamo
Dugua-
le all’identita otteniamo la derivata di un
monomioT�Z t4~ V S`Wl��Z t4~ ]��che, in modo meno preciso ma piu intuiti-
vo, talvolta e scritta nella formaT O ~ V SyWl� O ~ ]��Per un numero reale � abbiamoT � D V S`W � DLSperche la derivata della funzione costantei j � e uguale a zero, come abbiamo visto.
Cio mostra, insieme alla regola per lasomma, che la formazione della derivata
e un operatore lineare e ci permette di cal-colare la derivata di una funzione polino-
miale. Sia infattiD�W i j � P a�� � OJa�� u O u a z�z�z a�� ~ O ~Usando la formula per la derivata di un
monomio e la linearita otteniamoD4SHW i j � � a x � u O�a z�z�z a � � ~ O ~ ]��Consideriamo adesso il quoziente � E W Dfdi due funzioni differenziabili, dove re-
stringiamoG
in modo tale che non conten-ga zeri di f . Siccome �Hf W�D , dalla regoladel prodotto abbiamo � S f�a��Hf S�W�DLS
e
quindi� Df�� S W DLS`I �Hf Sf W DLSyI Df f SfW DLS f I�D f Sf uNei corsi di Analisi si dimostra (e la dimo-strazione richiede un po’ di attenzione!) la
regola della catena, molto importante, perla composizione di due funzioni differen-
ziabili:T f�� D V SgT OLP�V WhDLSgT O4P�V z f SUT8D`T OLP�V*Vche in modo astratto puo essere scritta an-che cosı (nel dominio dove tutto e definito):T f�� D V SyWhDLSyz(T f S � D V
In questo numero
44 Derivazione simbolicaLa derivata
La funzione esponenziale45 Abbreviazioni
Esempi per l’uso di D
La serie di TaylorOptions e print(x,n)
46 any e all
OrdinamentoLa libreria
La funzione esponenziale
Esiste una funzione che e la derivata di se stes-
sa? Nei corsi di Analisi si impara che una talefunzione, cioe una funzione � con � S�W � esi-
ste veramente e che e unica se chiediamo che� T�� V W�r . Questa funzione si chiama la funzio-
ne esponenziale e viene denotata con ���q� . Essapuo essere definita per ogni numero reale - in
verita puo essere estesa su tutto � , e quindi unafunzione���q� E-MJI�KNMoppure, rivelando allora la sua vera natura e laprofonda parentela con le funzioni trigonometri-che, una funzione���q� E � I>K ����q� e quindi una soluzione dell’equazione diffe-renziale� SyW �e se con k denotiamo l’operatore (di cui sappia-
mo che e lineare) di differenziazione (che e defi-nito su un qualche spazio vettoriale di funzionidi cui la funzione esponenziale fa parte), vedia-
mo che ���q� e soluzione dell’equazione linearek�� W �e quindi un autovettore per l’autovalore 1 (cioe
un punto fisso) dell’operatore lineare k e nonci sorprende che, come si verifica facilmente,
l’insieme delle soluzioni forma un sottospaziovettoriale in quello spazio di funzioni. Si dimo-
stra anzi che le soluzioni formano una retta eche quindi le funzioni che coincidono con la pro-
pria derivata sono esattamente i multipli scala-ri �b���q� della funzione esponenziale. Per � W��otteniamo la funzione costante zero che effetti-vamente anch’essa e la derivata di se stessa.
Sia � W �����q� . Allora � T�� V W � e vediamo cheogni soluzione della nostra equazione differen-ziale puo essere scritta nella forma� W � T2� V z ���q�Si dimostra nei corsi di Analisi che ���q� T O4V coin-
cide con � j , dove il numero � (detto anche basedel logaritmo naturale) e definito da� W�X Z [~ ]�_��
� r a r� � ~ Wlx^ ¡-r�¢�x�¢(r�¢�x�¢�}-£�¤^ ¥ ¥ In R la funzione esponenziale corrisponde allafunzione
�����; il numero � non e predefinito ma
puo essere ottenuto calcolando�����%$U¦�,
. Cio costatempo pero in esecuzioni ripetute, quindi inse-
riamo il valore nel file Costanti:§�¨�© �Nª7«8¬�¦��ª��¦��ª�
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 11 45
Abbreviazioni
Per evitare di dover battere la parola com-plicata ��������������� � mettiamo la seguente ri-
ga nel file Abbreviazioni della nostra libre-ria:
� ������������������������������Nello stesso modo possiamo rinominarealtre funzioni:
� ����������������������� �������������������� �������������������� � �
Esempi per l’uso di D
Verifichiamo le formule
!#"%$'&)(*$'+,(.-/!'01"%$2&3(*4�$25!#"%$'&)( $2687:9
$2;87=<�$>7=? (.-@! 0 "%$'&A(( <�$$';B7C<�$>7=?ED
"%$'6B7:9�&�"%F�$'6B7C<�&"G$2;H7=<�$I7=?�& 6
J�K�L 0#( D LNM O.P1L1M O 0#( J�K�L�P�Q�RTS 0.( Q�RTS!#"%$'&)(VU�W 6 (.-X!'0N"%$2&)(*<�$YU�W 6!#"%$'&)( J�K�L "G$2& L1M O "%$'&)(.-!'0N"%$2&)( J�K�L 63$ D LNM O 6A$!#"%$'&)([Z $\(.-/!201"%$'&3( 9
< Z $]1^ O 0.( 9
J�K�L 6 P1J�K�LN_ 0 ( LNM O2_
con
` ����a����b����� �dc �fe\` c �hg�i � i�e� � � ������b���2cG�fj k e���b����Yc ` �'c �be�el ����������#mIk�n��fj o� � � ������b���2c�cG�Tj�p�q�r e�s cG�fj�t�q�p�n���q�o e�e���b����Yc ` �'c �be�el ����������#mIp�n�� s cG�fj�t�q�p�n���q�o elEu cG�fj�p�qbr e nvcwt�n��fj�p�q�p e�s cG�Tj�t�q�p�n���q�o e j p� � � ������b���2cx����vcG� e�e���b����Yc ` �'c �be�el ����������#m u ����.cG� e� � � ������b���2cx�� �hcG� e�e���b����Yc ` �'c �be�el ����������#m>����vcw� e� � � ������b���2cw�����hcG� e�e���b����Yc ` �'c �be�el ����������#mI�����hcw� e� � � ������b���2cw�����hcG�fj�p e�e���b����Yc ` �'c �be�el ����������#mI�����hcw�fj�p e n2cwp�n�� e� � � ������b���2cx����vcG� e n�����hcG� e�e���b����Yc ` �'c �be�el ����������#m>����vcw� e n�����vcG� e�u ����hcG� e n�����.cG� e� � � ������b���2cx��y����YcG� e�e���b����Yc ` �'c �be�el ����������#m{zh|%}�n��fj u zh|%}� � � ������b���2c%�����hcG� e�e���b����Yc ` �'c �be�el ����������#m~r s ����vcG� e j p� � � ������b���2c%�������hcG� e�e���b����Yc ` �'c �be�el ����������#m~r s ������hcG� e j�p� � � ������b���2cx������hcG� e�e���b����Yc ` �'c �be�el ����������#m>������.cG� e
La serie di Taylor
Molte funzioni reali (ad esempio i polinomi,le funzioni trigonometriche e iperboliche, la
funzione esponenziale, i quozienti di poli-nomi) possono, per ogni punto
$Y�del loro
dominio di definizione ed ogni$
sufficiente-mente vicino ad
$'�(e spesso per ogni
$����)
essere rappresentate mediante la loro seriedi Taylor:
!#"%$'&3(������ �!Y� ��� "%$ � &�v� "%$ D $'��& �
dove!h� ��� "%$'��&
e la�-esima derivata di
!nel
punto$'�
. Questa rappresentazione fornisce
molte informazioni sul comportamento del-la funzione vicino al punto
$Y�.
Anche quando!
e una funzione polino-miale la serie di Taylor in
$Y�e interessante,
perche ci dice come la!
si esprime in$Y�
. Inquesto caso naturalmente la serie di Taylor
e formalmente un polinomio in$ D $Y� dello
stesso grado di quello di partenza. Abbiamo
ad esempio
< D F�$I7=<�$ 6 ([987d"%$ D 9�C<v"%$ D 9�& 6F D�� $I7=<�$ 6 ([987=<T"G$ D 9�& 6
e vediamo che le due funzioni coincidono
in$'��(�9
, ma vicino ad$'�C(X9
il secon-do polinomio si comporta come la funzione� (�9H7:<�$'6 in
$�([�, il primo invece piut-
tosto come la retta � ([9�7=$ .
(0,0) (1,0)
Creiamo adesso una funzione� �������� che re-
stituisce i primi ��q�r coefficienti di una fun-zione (rappresentata mediante un’espres-
sione formale) in un punto$ �
. Per calcolareil valore della
�-esima derivata in
$Y�usia-
mo ������� che conosciamo dalla pagina 29.
� �����������a����f� ��� �Vc �Yg ��z g � e� ������z'�������a�a����vcw�������2c �be�e �{a���������ra���dc%����=r2m�� e� � � ` c �hg�i � i�e �{a���������a�������n�������a�a����vcx�����a�a g �������2c �be�s a������ e�������a�a �
La usiamo per calcolare i coefficienti del pri-mo dei due polinomi visti sopra; questo po-
linomio ha grado 2 e quindi possiamo impo-stare � uguale a 2:
� � � ����������2cwp u t�n���q�p�n��fj�p e������������ � ��������Yc �Yg r g p e��������YcG���������� e
Otteniamo, correttamente, rEr�p .Proviamo adesso con lo sviluppo di Taylordella funzione esponenziale in
$Y��(d�:
� � � ����������2cw�����hcG� e�e������������ � ��������Yc �Yg z gw��e��������YcG���������� e
Vediamo dei numeri che a prima vista nonsembrano dire molto; ma se visualizziamo
invece i coefficienti come frazioni di intericon
��������hc%a���������� �b�2c%���������� g�����.|���� ����b������������r z�z�z�z�z e�e
dopo aver caricato, se necessario, la libreria�� �¡�¡con �� ¢��������Yc �� �¡�¡�e (cfr. pagina 42), tro-
viamo
rErEr s p�r s o£r s p�¤£r s r�p�z£r s k�p�z£r s }�z�¤�z�r s ¤�z�t�p�zQuesti sono i reciproci dei fattoriali! Infattila serie di Taylor della funzione esponenziale
nell’origine e
U�W¥( ����� �$ ��v�
Abbiamo aumentato il limite superiore deldenominatore in a������ �b� �b� . Proviamo con il
coseno, sostituendo ���� ad ����� , e otteniamo
r�z u r s p�z�r s p�¤�z u r s k�p�z�z£r s ¤�z�t�p�zInfatti
J�K�L $¦([9 D$'6< � 7
$2§� �~D
$25? � 7
$2¨© �¥D 7Cª�ª�ª
Sostituiamo ���� con ������ per calcolare lo svi-luppo di Taylor del coseno iperbolico e ritro-
viamo gli stessi coefficienti, ma senza segno.Quindi
J�K�LN_ $�([987 $'6< � 7
$2§� �7 $25? � 7
$2¨© � 7dª�ª�ª
Proviamo infine con!."G$2&3( 9
9 D $ :
� � � ����������2c1r s cNr u � e�e������������ � ��������Yc �hg z gw��e��������hc%���������� el ���������.m~r�rEr�r�rEr�r�rEr
Infatti
99 D $
([9�7�$I7�$ 6 7�$ ; 7=$ § 7«ª�ª�ª,
ma stavolta la serie di Taylor converge solo
per ¬ $ ¬� 9, benche il quoziente
99 D $ sia
definito per ogni$�®([9
.
Options e print(x,n)
Il numero delle cifre significative che vengo-no visualizzate in un numero reale e preim-
postato a 7 e puo essere modificato medianteil comando
�������b�vcG��� � �����br�p eper avere ad esempio 12 cifre significative.Il valore massimo e probabilmente 22, ma
sembra che la precisione arrivi a circa 16 ci-fre dietro il punto decimale. ���b� �b� funzio-
na quindi in modo simile a �b��� . Per vedereanche gli altri parametri provare ������ �f�vc e .
Se si vuole stampare un valore solo unavolta con un certo numero di cifre, si puo uti-
lizzare il secondo parametro di �������� .Esempio:
���������.cNr e �{��������Ycx� el ���������.mIph|%k�r � p � p��������hcw� g r ¤ el ���������.mIph|%k�r � p � r � p � ¤�}�¯�z �������b�vcG��� � �����br z e��������hcw� el ���������.mIph|%k�r � p � r � p �
ALGORITMI E STRUTTURE DI DATI a.a. 2004/05 Numero 11 46
any e all
Se � e un vettore di valori booleani (cioe
uguali a�������
o ����� � ), ���������� e vero se esolo se almeno uno dei componenti di � e
vero, mentre ���������� e vero se e solo se tut-ti i componenti di � sono veri. Esempi:
������� ������� � ��� � �!�" ��#��$ ������������%'&)( # ( #+*,����� � �!�" ��#��$ )�����������%'&)( # ( #+* ��������������-� �!�" ��#��$ ������������%'&)( # ( #+* ������� �!�" ��#��$ )�����������%'&)( # ( #+*,����� �( �����$.�/ �10��$2���3���4 � �!�" ��#�� (�5�3 �%'&)( # ( #+*,����� �'�������6������� ����� �7������� �!�" ��#��$ ������ (�5�3 ���%'&)( # ( #+*,����� � �!�" ��#��$ )����� (�5�3 ���%'&)( # ( #+* �������( ����� 3�8�9���3�8�0��1:�� /����� (�5�(�;<:�= �!�" ��#������%'&)( # ( #+* �������7������� ����� � ����� � �!�" ��#��$ ������������%'&)( # ( #+*,����� � �!�" ��#��$ )�����������%'&)( # ( #+* �������
Ordinamento
Trattiamo qui le seguenti funzioni:
!�> �@? & ! # ! ���A & !�B�>)!!�> � non e una vera funzione di ordinamen-
to, ma restituisce semplicemente gli ele-menti di un vettore in ordine invertito:
( �����-/�* 0��$C���3��10 *�D �$: � = �!�" ��#�� ( �%'&)( # ( #+*E/ :70'CF3G06472 D :" � !�> ��� ( � = �!�" ��#�� " �%'&)( # ( #+* : D 264'0'37C'0': /La funzione di ordinamento ? & ! # ordi-
na un vettore di numeri reali, in ordi-ne crescente se non e indicata l’opzioneB�> � !�> �? " ��H�� � . Usiamo lo stesso
(:
( �����-/�* 0��$C���3��10 *�D �$: �� !�> ?�� > ��# > ��? & ! #�� ( � �!�" ��#��1� !�> ?�� > ��# > �%'&)( # ( #+* 3 / :':60706472 D CB�> � !�> ?�� > ��# > ��? & ! #�� (�� B�> � !�> �? " ��H�� � � �!�" ��#�� B�> � !�> ?�� > ��# > �%'&)( # ( #+* C D 264'070':': / 3
Con ! ���A si ottiene la posizione di ogni
elemento nella successione ordinata, con& !�B�>�! invece successivamente la posizione
dell’elemento piu piccolo nella successioneoriginale, poi quella del secondo e cosı via:
%I( *J/ :'0'C63G0F472 D :% ? & ! #�� ( ��* 3 / :6:'07064'2 D C �!�" ��#�� ! ���A�� ( ���%'&)( # ( #K� & � : " ��� > � >FB�" :�8L3 > ��� 8 *%':70�8�272�8�2 / 3 / 2�8�279'C6M70�8�2 �!�" ��#�� & !�B�>)! � ( ���%'&)( # ( #+* 2 / : / 3'0 D 96C7M64
La libreria
Elenchiamo qui i singoli files della nostra lib-
reria in ordine alfabetico, tralasciando le Oc-tobrinidae e Parabrinidae.
Abbreviazioni
� & !�N ( �� F� >�O) �!�> ?�? " & �� B�" � " � & ��� ! &�& #� ! �#�# & �G� " � > ?� ! �#�# & �I� & ����H & �
Analisi
� ���� & ! �'P ( ����# " & �Q��� � O 3�� �R�S O � O 3�= � & > P�P������ > �� ���������� = P� )#�#���/P & ! ��A " �T/�*U�R�S ����V���� �<W O W � = P� �#�#���P� �#�#�X�A� & > P�P������-� & > P�P � > �� ��������)Y)P� )#�#��)Z� & > P�P�ZCostanti
[�\ � � :�8�9 / C�:�C / C�:�CI% ��)# !�"<N�> ��# "%'& H�� " � & �)#� !�" �� ���� & � & B�"F>�O) �-/��[�\�] ")B / C�3 � 3�8L3 / 9�4�2�0�:�M�=[�\ / C�3 B ] " � 2�9�8�:�M�2�9�9�M�2 / =
Figure
[ >)! �<^ " & �6P ( ����# " & �_��# � ! �S � ��� " ?�? > ��# � ! � ! �)Z� ��� " ?�? > �6P ( ����# " & �_��# � �L` �S �X�� & ?���#R��a�/ " X ` X�? " �b��#��)Z%F� N & B�> ?�# ! & B�" ( ��c "< �>)! `�& � > 8%F� N & ? " � " ?�# ! & � & �G.� 8d �>�! `�& � > �FP ( ���)# " & �_��# � �L` �S �X�� & ?<^���#���a�/ " X ` X�? " ��^���#���Z% ] �H " �� 0�C�8] ! ���� > � > �6P ( �R��# " & �e�$�� ! H � ��)# � � �`�& !�B & ���R�S�f /)��? >�g � 3�� �� ! H � � > ��H�#�^��)�h�f : � f /�a�/ " X� ��)# = �� �� !�>� ��i� � �h� ����� N )# !�")O �1��� f / � f :�� �� �� � � ! &)j � 0��L` � ! &)j � � ���` ? " ��� 3�= �? " ����/ " X� ��)# =` B�> ?)���� ! H = B�> ?����� ! H�a� �? " � =" PQ� ")B�> ��# " �� ���� `�& !�B &��<W ? W ���k��� � �? " � � B�> ?��> ��? >'" P_� ")B�> ��# " �� ���� `�& !�B &��<W " W ������ �L` ? " � �L` B�> ?��> ��? >'" P�� `�& !�B & ���� � �? " � � B�> ? � i� ��` ? " � ��` B�> ?��> ��? >l Z%Fm >�! # " � "FB�" ( �7��.�H & � & !�> H & �� !�>% B�"F! �H�H " & ! 8] & � " H & � & �FP ( ���)# " & �_��� � ! �S #���? >�g � 3��$: X �" � � > ��H�#�^��)��a�/��[ >)! �<^ " & ��# � ! �)Z% ] ( ��# "FB�> ���� !�> #�#� I# ! f / > f :% � & !�!�" ? & � B�> ��# " "k ! N�> # !�" # 8� > #�#� F�6P ( ����# " & �_��# � f / � f : �S�f /)a�#�X�� f : . f /���Z
Geometria
% ] ! & "�> f " & � >FB�" f ? ( ���� !�> #�#� f 3 a�# jb8] ! & " �6P ( ����# " & �_� f � f 3���j �S #������� ��� !�> � f . f 3���j ��Y����� ��� !�> � j���j �f 3 a�#�X j Z%F� " P�� > ?�? " & � >FB�" f � > � ( ��# & N 8� " P�� ( ��# & �6P ( �R��# " & �e� f � N �S : X N . f Z
%6� " P�� > ?�? " & � >FB�" f � > ���� !�> #�#� f 3 a�# jb8� " P�� !�> #�#� I�6P ( ����# " & �_� f � f 3���j �S � " P�� ( ��# & � f � ] ! & " � f � f 3���j ����Z%6��& #� f " & � >FB�" f �>�! ��)P� n� " �KH ! B�" �% )#�# & ! � & ��G� > ��# ! &�8��& #'�6P ( ����# " & �_� f � ��)P� � � > ��# ! & � 3 " �S � > ��# ! & a >�O) �-/ " X� ��)P� �X [�\�] ")B / C�3 ��X�� f .�� > ��# ! & �)Z% ] ! & B & #�# & ?��� ��� !�>6B�"l ( ��# "IB�> � �" )� &�8���� ��� !�> �FP ( �R��# " & �e� f ��j � S � > � f X [ & ��o�� j ���)Z
Grafica
p ! )P " �� F�FP ( �R��# " & �e� O � � � � & ! � " � > ��� �!�O ����/ � �?�? " ������� ��� N ! H�� 3 �S ! � N " � !�>) � N ! H ��4 � �q& NR" ����� 3���3���3��$3 � � � j B � 3�8�2 � = � & #�� O � � � #�� �> � W � W�� O �� ` � W�W�� ���� ` � W�W�� �? � !�O � � O�> ?)�� �?�? " � P ! N�> 8 � & #���� & ! � " � > �)Z " � > ��� " �FP ( �R��# " & �e� O � � � P ��� �� & !�" ��i � � � � " � > ��� " � 3��?�� !�" #�# > ��/ � � & � & !�> ��/ � ? �> ?�? & !�> � 3�8�4 �S " PQ� ")B�> ��# " �� ������� �� & !�" � i � ������� �� & !�" � &�( # >)! � O � � � P�� =� & ��# &�( ! � O � � � �� �� & !�" � � > � > ��?)��� " � > ��� " �� & ����� & � & !�> � � j B ��? �> ?�? & !�> ��� ` � >�O � 3�8 D�X�?�� !�" #�# > �B�! j �� ` > ��?����1?�� !�" #�# > 5�3 � � B�B � � �)Z] ( ��# " �'P ( ���)# " & �Q� O � ? "<N `b� # "< & � W W��� & � & !�> ��/ � � & � & !�>�!�" ��i� � ?��� ��� ���/��S & " ��#�?�� � > � O � �-d N � O � � �<^���? "�N `�� #�� �> ��# "� &��� & ����� & � & !�> �L` H���� & � & !�>�!�" � � >�O ��?��� ��� ��)Z
Grafica-strumenti
] & ?�#�?�� !�"< #6�'P ( ����# " & �_��P " � > � �� ! H � ��)#��S & ?�#�?�� !�"< #���P " � > ��j ")B #�^����� ! H�Y :�8�2�4��^ >�" H)^�#��� ��)#�Y :�8�2�4�� ^ & !�" f & ��#� ���������� ���& � > P " � > ������� ��� �>)! � W ? �> � " �� W �)ZMatrici
( # & �� �� & !�" �'P ( ����# " & �_����S >�" H > �b�� �$& ����� 8 �� �� ( > ?)� � �)r)�� �� ( > ?�Z ( # & � > #�# & !�" �'P ( ���)# " & �_�$��S >�" H > �b����)r)� > ��# & ! ?�Zp >)! ?<^�H & !�" �'�'P ( ����# " & �_�� � " �S � > ��# ! & ���s " � ")t! �H�H " & ��? ( N �1 ` ?���bs " � t ���).� ` ?��1� > ��# ! & ����1� > ��# ! &�� ! �H�H " & ��Z\ )# !�" � > �FP ( �R��# " & �� B )# " � !�" H)^ > ��i � � � � & ����i � ���S " PQ��u " ? 8 � ( ����� !�" H�^ > ���N )# !�")O � B )# " � � ! &)j � !�" H)^ > �L` � ! &)j � � �> ��? >'" Pe��u " ? 8 � ( �����1� & �����N )# !�")O � B )# " � ��� & ����� & ���> ��? > i � ��Z� ! ���� " F�FP ( �R��# " & �e����S " PQ�$� > ��H�#�^��$�� 5 /��I? ( N � B�" �H�������> ��? > ���$��)Z
Primi
% ] �H " �� 4�3�8� ! )# & ?)# > � > �'P ( ����# " & �_�L�h�S ��� : *U� =v( �����w� = ! ��? g�! #��L�h�!�>� �> )#S ���bs$/ t = " P�� 5 ! � ` !�> )A =( ����� (�� ������bsx��y�y 5�3 t Z��� (�� ����Z
Corso di laurea in matematica z Corso di Algoritmi e strutture di dati {Q|~} Docente: Josef Eschgfaller