La Storia degli Algoritmi

Download Report

Transcript La Storia degli Algoritmi

Storia dell’Informatica e del Calcolo Automatico
Prof.ssa F. PERLA
Storia degli Algoritmi
ovvero
dal sasso al microcircuito
integrato
Fara Martuscelli
Liliana Murino
1
Non tutti sanno che …
Lo spirito
dell’Aritmetica
guarda dall’alto
la disputa fra i
nuovi
“algorists” che
operano con
numeri scritti
e i tradizionali
“abacists” con i
loro
pallottolieri
1504
al-Khwarizmi
algebra al-Jabr
algorisms
algorismus
algorithmus
2
Algoritmi per le Operazioni Aritmetiche
Le operazioni aritmetiche
hanno origine da esigenze
di tipo economico (Divisione
Sumera). Gli algoritmi per
le operazioni aritmetiche
dipendono dai sistemi di
numerazione.
Molti considerano l’Aritmetica una
cosa banale che i ragazzi imparano e i computer
eseguono, ma scopriremo che l’Aritmetica è un
argomento affascinante dalle molte interessanti
sfaccettature. […] Il modo in cui facciamo aritmetica
è strettamente legato al modo in cui rappresentiamo i
numeri
che
trattiamo.
Donald Knuth
L’uso della scrittura evita la ripetizione delle stesse
operazioni (Babilonesi e Egiziani - Inverso, Duplation,
Mediation). Diversi strumenti sono stati utilizzati, in
epoche e luoghi diversi, a supporto dei calcoli (Divisioni –
Arco Pitagorico e Abaco Cinese; Moltiplicazione –
Tabelle, Napier’s bones). Rappresentazione delle frazioni
in notazione decimale (Moltiplicazione – Simon Stevin).
Operazioni aritmetiche con numeri binari (Leibniz).
3
2500 a.c. Divisione Sumera
Le tavolette numeriche (trovate a Shuruppak) riguardano
lo stesso problema, ovvero la suddivisione del grano di un
granaio fra un certo numero di persone in modo tale che
ogni persona riceve 7 silà di grano.
1 granaio = 2400 gur e 1 gur = 480 silà
Sulle tavolette non c’è traccia del metodo utilizzato,
però i risultati ottenuti sono diversi …
Tavoletta 671
2400/7
Tavoletta 50
342 (con resto 6 ignorato)
1.152.000/7
342 x 480 = 164160
164571 con resto 3
4
(2000-1650) a.c. Calcolo degli inversi
Questo algoritmo compare
su una tavoletta babilonese
(VAT 6505).
Dato un numero x
Calcola
l’inverso
di
y,
Moltiplica y per z, otterrai
Aggiungi
1,
otterrai
Calcola l’inverso di u, otterrai
Moltiplica u per y. Otterrai v.
y.
t.
u.
u.
L’inverso del numero x è v
Dato un numero 4;10
Calcola l’inverso di 10, 6.
Moltiplica 6 per 4, otterrai 24.
Aggiungi
1,
otterrai
25.
Calcola l’inverso di 25, otterrai
2;24.
Moltiplica 2;24 per 6. Otterrai
2;24.
L’inverso di 4;10 è 2;24
5
(2000-1650) a.c. Algoritmi aritmetici
Gli algoritmi egiziani Duplation e Mediation sono estratti
dal Rhind Papyrus.
Rhind Papyrus
1
2
1
4
3
8
7
2
3
2
3
1
5
1
10
1
2
1
5
1
10
1 x (2 + 23)
x 10
30
1
30
1
1
2
3
1
4
2 = (1 + 1/5 + 1/10) + (2/3 + 1/30)
(7 + 1/5) + (1 + 2/3 + 1/10 + 1/30)
1
4
7
1
8
1
28
1
1
56
1
2
1
16
1
2
1
112
1 1 1
24
=9
Totale
1
4
1
2
6
Tabelle di Moltiplicazione
Arabia (13° sec., Ibn al-Banna; 15° sec. al-Kashi)
Cina (1450, Wu Jing) – India … - Europa (1300 in
Inghilterra  1478 (Treviso) e 1494, Luca Pacioli,
Gelosia; 1617, Napier; 1885, Lucas-Genaille)
7
M.E.Algoritmi
Aritmetici: Ottimizzazioni
I Metodi di Moltiplicazione Translation e SemiTranslation (Ibn al-Majdi) compaiono già in alcuni
manoscritti del MedioEvo (riduzione del numero di passi
elementari distinti per eseguire un calcolo aritmetico).
Passo
Passo1:
3:moltiplica
sposta
TRASLAZIONE
il
le
cifre della nuovamente
seconda
linea
di una
(moltiplicando)
SEMI-TRASLAZIONE
ascrivi
destra,
per 4il erisultato
emetti
ripetii il
Passo
2:
sposta
il moltiplicando
moltiplicando
di una posizione
aposizione
destra,
risultati,
passo 2.uno1752
sopra
l’altro,
nella
giusta
posizione,
quindilaaggiungi
questi
prodotti
intermedio
sopra,
nella
giusta
posizione,
e ripeti
moltiplicazione,
9 1 questa
8 nella
4 4 giusta
Passo 1: moltiplica
le cifre
della
Passo
1: calcola
a2 1e mettilo
per
ottenere
il
numero
1752
nella
linea
in
alto.
volta
moltiplicando
il numero sotto
per 3.
seconda
linea (moltiplicando)
per(moltiplicando)
4 e
posizione
Passo
calcola a2uno
e sopra
mettilol’altro,
nella nella
giusta
metti1:i risultati,
posizione 4 x 4 = 16
6 4
Passo 2: calcola 2a e 2ab; metti 2a sotto
4 8giusta
giusta posizione, quindi aggiungi questi
il numero x e 2ab sopra x nella
Passo
2: calcola
e 2ab; metti
2a =1 2 1752
8x 4=
8 83 4 posizione
prodotti
per 2a
ottenere
il numero
1 9 1 6 84 4 4
sotto il numero 438 e 2ab = 8 x 3 = 24 sopra
nella
linea
in
alto.
Passo 3: calcola b2 e 2ac
1
7
5
2
348 nella giusta posizione
2 4
96 4
Passo 2: sposta
il
moltiplicando
di
una
Passo
4:
calcola
2b
e
2bc
Passo 3: calcola b2 = 3 x 3 = 9 e 2ac = 8 x 8 =
posizione
Passo 5: calcola c2 2 4 2 4
3 2a destra, scrivi il risultato 9
64
intermedio 1752 sopra, nella giusta
Passo finale: addiziona i termini di
Passo 4: calcola 2b = 2 x 3 = 6 e 2bc = 6 x 8 =
1
2
1
2
1 63
2
ciascuna colonna sopra
il numero
x
48posizione, e ripeti la moltiplicazione,
questa
voltac2moltiplicando
Passo
5: calcola
= 8 x 8 = 64 il numero
1 8 4 8 . 33 4 . 8
1 6
1 7 5 2
sottofinale:(moltiplicando)
3.
x2=10000a2+10002ab+100(b2+2ac)+102bc+c2
Passo
addiziona i terminiper
di ciascuna
8
Passosopra
3:il numero
sposta348,il ottieni
moltiplicando
colonna
191844
4 di
3 una
8 posizione a destra, 4 3 8
4 36 8
nuovamente
e ripeti
2.
8
4 3 il passo
8
4 3 8
4 3 8
1200. Semplice Divisione per differenze
Questo algoritmo compare in un manoscritto del 1200,
tradotto da Michel Chasles nel 1843.
Si definiscono due tipi di numeri: digits e articles.
L’algoritmo si applica solo nei casi in cui i divisori sono
digits e i dividendi sono articles. (900 : 8)
a.10n-1+(a(10-d)+b).10n-1+k
d
1. Aggiungi il quoziente
parziale a.10n-1 nella
4a riga
2. Metti nella 3a riga il
nuovo
dividendo,
ovvero a.(10-d).10n-1
20
900
100 == 90
10 ++ 180
88
4
2 + 100
180 = Start
20
10
8
19
1
1
102
101
2
10 – d
22
8
d
88
4
dividendi
1
2
8
2
quozienti
1
19
100
9
1592.Divisione sull’Abaco Cinese
Algoritmo di divisione per 7, Suanfa
tongzong. (1234:7)
(1)
sette-uno? + tre nella pos. inferiore
(2) sette-due? + sei nella pos. inferiore
(3) sette-tre? quattro resto due
(4) sette-quattro? cinque resto cinque
(5) sette-cinque? sette resto uno
(6) sette-sei? otto resto quattro
(7) >= sette? + uno nella pos. superiore
10
1585.Numeri scritti come Decimali
Simon Stevin introduce un metodo di scrittura
dei decimali, eliminando le frazioni (La DismeDefinizioni II, III e IV) e fornisce un algoritmo
per moltiplicare numeri decimali (La Disme-Proposizione
III) .
(0) (1) (2)
364 0
32 5 7
89 4 6
unità,
primo, secondo, terzo, quarto, …
3 1 7 2 5 3 9 4
7
5
9
3
10 100 1000 10000
3759
10000
195 4
1302 8
29313
26056
29137 1 2
2
2
(0)(1)(2)(3) (4)
11
1703.Aritmetica Binaria
G. W. Leibniz scrive (The explanation of binary
arithmetic) che secondo la leggenda cinese,
il
re Fohy (Fu Xi) introdusse la figura delle otto
Cova che consiste di alcuni diagrammi con una forma
particolare.
Vantaggi dell’aritmetica binaria.
?
0
1
2
12
13°-17° sec. I Quadrati Magici
(1) Scoperto nel
1956
Inciso su placca di
ferro con numeri
arabi - del periodo
dei Mongoli
Arabi (13°-14° sec.)
Bizantini (14° sec.)
Europei (17° sec.)
Marcatura
delle celle
Cornici
Metodo di
(2) Diagramma del
fiume LuoMoschopoulos
- della
dinastia dei Song
(960-1279)
Melancholia
di Albert
Durer – incisione su
legno del 1514
13
13°sec. Quadrati con Cornici
Algoritmo di riempimento
cornice, (az-Zinjani).
1a
cornice
2a
cornice
3a
cornice
4a
cornice
delle
celle,
cornice
per
10 45 44 7 11 12 46
9 19 34 17 20 35 41
8 18 24 23 28 32 42
49 37 29 25 21 13 1
48 36 22 27 26 14 2
47 15 16 33 30 31 3
4 5 6 43 39 38 40
S7 = 7(49+1)/2 = 175
14
1667. Le Cornici di Arnauld
Un quadrato magico con le cornici rimane un quadrato
magico quando una o più delle sue cornici vengono
rimosse.
1
11
w
11
2
99
3a
50
50
4
5
96
6
95
77
8
10
o
10
9 41
10
b
92
41
1 e1 2e’2 3è3 4 4 5 5 6 6 7 7 8 ò8 9o’9 10o10
11
81
12
12
13
88
14
14
15 85
16
86
17
17
18
83
19
20
19 20
11 11
w
12
13
14
15
16
17
18
19 2020
21
30
22
22
23
33
24
74
25 28
26 77
27 28
48
43
29
79
30
71
21 21
22
23
24
25
26
27 28
29 3030
e11
31
32
69
33
23
34
64
35 35
36 67
37 38
36
78
39
32
40
100
31 31
32
33
34
35
36
37 38
39 40y40
98
41
42
49
43
76
44
47
45 56
46 44
47 48
55
25
49
52
50
3
è3
42
43
44
45
46
47 48
49 50a50
40
y
51
52
40
59
53
38
54
57
55 46
56 54
57 58
45
63
59
42
60
61
41 41
b
51 51
52
53
54
55
56
57 58
59 6060
61
70
62
39
63
75
64
34
65 65
66 37
67 68
26
66
69
62
70
31
61 61
62
63
64
65
66
67 68
69 7070
71
21
72
72
73
58
74
27
75 73
76 24
77 78
53
68
79
29
80
71 71
72
73
74
75
76
77 78
79 8080
81
93
82
82
83
13
84
87
85 16
86 84
87 88
15
18
89
89
90
8
ò
81 81
82
83
84
85
86
87 88
89 9090
91
60
2
e’2
92
93
51
94
97
95
5
9
o’9 100
99
90
96
97 98
6 94
91
91 91 929293939494 9595969697979898 9999100100
15
14° sec. Marcatura delle Celle
Ibn Qunfudh identifica 4 tipi di quadrati e relativi
algoritmi.
Quadrati con n celle dove n è divisibile per 4.
In ogni riga [colonna] metà celle sono marcate e metà sono smarcate.
4
14
15
1
9
7
6
12
5
11
10
8
16
2
3
13
16
14° sec. Procedimento per 2 e per 3
Manuel Moschopoulos descrive due algoritmi. Il primo è
relativo alla costruzione di un quadrato magico di ordine
dispari (due versioni: procedimento per 2 e per 3;
procedimento per 3 e per 5). Il secondo è relativo a
quadrati magici di ordine divisibile per 4 (tecnica
marcatura delle celle di Ibn Qundfudh).
2
2
3
1
1
4
3
2
5
1
4
3
6
2
4
3
1
3
1
2
4
9
2
5
7
3
5
7
1
6
8
1
6
4
2
5
1
17
1612. Claude-Gaspard Bachet de Méziriac
E’ una variazione dell’algoritmo di Moschopoulos.
Dei piccoli quadrati vengono aggiunti ai lati di un
quadrato ABCD da riempire; quindi si inseriscono
i numeri in ordine lungo le diagonali (1,2,3,4,5;
6,7,8,9,10; …).
A
B
C
D
18
Metodi della Falsa Posizione
A
number
be and
chosen
in which
proposed
parts outside.
appear whole
A lance
hasmust
a half
a third
in thethe
water
and 9 palms
I askand
you
this
is
to
avoid
fractional
numbers,
and
not
because
it
could
not
just
as
how long is it?
well be done with
but with more difficulty.
x – 1 another
x – 1 x =number
9
Francès Pellos
2
3
Francès Pellos – 1942
Compendion de l’abaco, 1942
Sono algoritmi che usano un valore numerico
per l’incognita per risolvere un problema.
La
loro
origine
è
ancora
incerta.
La loro storia attraversa molti secoli e
molte civiltà.
Babylonian Tablet
Si distinguono in: Metodo semplice (un solo valore
numerico) e Metodo doppio (due valori numerici).
La scelta del valore numerico (falsa posizione) è
importante soprattutto per evitare problemi con le
frazioni.
19
1800 a.c. Mesopotamia
UNA FALSA POSIZIONE GEOMETRICA
Questa tavoletta mostra “chiaramente” l’uso di un
algoritmo di falsa posizione per la risoluzione di un
problema geometrico.
b
l0 = 1 o [60]
b = l – l/4
d
l0/4 = 15
d=
l
b0 = l0 – l0/4 = 45
b = ? 24
e
l2 + b2
= 40
l = ?32
l02 = 1 o [602]
l = l0 x (d/d0) = 60 x (32/60) = 32
b02 = 452 = 2025 33;45
b = b0 x (d/d0) = 45 x (32/60) = 24
d02 = l02 + b02 = 5625
1;33;45
d0 =
1;15
l02 + b02 = 75
d/d0= 1/75 = 48/602
d x (1/d0) = 40 x
b = kl
l
48
(48/602)
= 32/60
32
d=
1 + k2
=d
l2 + b2
= 40
l/l0 = b/b0 = d/d0
l = l0 x (d/d0) e b = b0 x (d/d0)
20
1800 a.c. Egitto - Rhind Papyrus
I principali testi matematici dell’antico Egitto: Kahun
Papyrus, Moscow Papyrus e Rhind Papyrus (problema 26).
x + 1 x = 15
4
x’ = 4
b’ = 5
b/b’ = 15/5 = 3
x = (b/b’) x’ = 3*4 = 12
12 + 3 = 15
21
(206 ac-220 dc)
Cina – Jiuzhang Suanshu
Il capitolo 7 della “bibbia” cinese dell’aritmetica
contiene il primo algoritmo sul metodo del doppio errore,
o ying bu zu shu (problemi 18 e 19).
9x = 11y
“9 gold coins weigh as
much as 11 silver coins. If,
in each pile, one gold coin
is replaced by a silver
coin, and conversely, the
gold pile becomes lighter
by 13 liang. How much do a
gold and silver coin weigh
respectively?”
(10y + x) – (8x + y) = 13 (liang)
x1 = 3
y1 = 2 + 5/11
x2 = 2
y2 = 1 + 7/11
1 jin = 16 liang e 1liang = 24 zhu
13 liang = 13/16 jin
e1 = 12/11 – 13/16 = 49/16*11 jin
e2 = 13/16 – 8/11 = 15/16*11 jin
x = x1*e2 + x2*e1/e1 + e2 = 143/64 jin
x = 2jin + 15/(16*4)jin = 2jin + 3/16jin
+18/(16*24) jin = 2jin 3 liang 18 zhu …
22
12°secolo. India – Bhaskara
Nel capitolo 3 del suo libro Lilavati, il matematico
Indiano Bhaskara tratta il Metodo semplice che chiama
ista karma (operazione con un numero fissato).
“What is the number,
which multiplied by five,
and having the third part
of
the
product
subtracted,
and
the
remainder divided by ten,
and one-third, a half and a
quarter of the original
quantity added, gives two
less than seventy?
1/10[5x - 1/3(5x)] + 1/3x + 1/2x + 1/4x = 70 - 2
ax = b
ax1 = b1
x1 = 3
b1 = 17/4
x = b*x1/b1 = (3*68)/17/4
23
9°secolo. Arabia – Qusta Ibn Luqa
Il matematico arabo Qusta Ibn Luqa è stato il primo a
fornire una dimostrazione geometrica del metodo del
doppio errore.
m
z
s
o
c
l
tt
k
n
h
u
i
b–b”
b–b’
b
b”
b’
a
b
g
ad
ag
ab
=
=
do
gt
bh
x=
d
x’
x”
x
=
x
x’
x”
=
=
b
b’
b”
area del rettangolo con
diagonale ci
lunghezza del segmento
cn
x’ e” – x” e’
e” – e’
24
13°secolo. Il Metodo della Bilancia
Il matematico arabo Ibn al-Banna inventò una tecnica
grafica per sviluppare il metodo del doppio errore.
errori per eccesso
e”
b
x”
e’
x’
errori per difetto
x’ e” – x” e’
x’ e” – x” e’
e” – e’
e” – e’
b
x”
e”
x’
e’
e’ per eccesso, e” per difetto
b
x”
e”
x’ e” + x” e’
e’
e” + e’
x=
x’(ax’) + (b - ax’)x’
ax’
x’
25
1202. Fibonacci – Regola Elchatayn
In Liber Abaci (capitoli 12 e 13) Fibonacci spiega la
regola Elchatayn o regola dei due errori.
5 livres
e’ – e”
1 livre = 20 sous
1 sou = 12 deniers
3 livres
e”
x – x”
x” – x’
2 sous + 3*12
5
(
12 deniers
)
deniers = 2 sous + 7 + 1
5
(
) deniers
differenza delle moltiplicazioni
3
sous
13
16
sous
2
1
less
8
less
5
x = x” + e”
x” - x’
e’ – e”
3
differenza degli errori
26
1460. Francès Pellos
REGOLA DEL TRE E FALSA POSIZIONE SEMPLICE
In Compendium del l’abaco viene usato il Metodo semplice
per sviluppare la regola del tre applicata ai numeri
frazionari.
4+1
3
6+1
2
3+1
2
28 + 1
6
=
3+1
2
x
3+1
=
7
2
8+ 1
=
21
x’ = 14
REGOLA DEL TRE
ax’ = b’
b’ = 2
x =?
14. 3 + 1/2
= 49/2 = 24 + 1/2
2
27
1583. Christophore Clavius
SOLUZIONE DI UN SISTEMA DI EQUAZIONI
In Epitome Arithmaticae Practicae Clavius (capitoli 12 e
13) usa il Metodo del doppio errore per risolvere sistemi
di equazioni lineari.
2
2
5
35
32
33
y1 = 101/4
z1 = 263/4
21
e1 = 543/4
1
x1 = 1
37 = y1 + z1
y1 + 73 = 3(1 + z1)
3
101/4
121/2
263/4
251/2
543/4
361/2
x2 = 3
y2 + z2 = 38
y2 + 73 = 3(3 + z2)
x + 73 = 2(y+z)
y + 73 = 3(z + x)
z + 73 = 4(x + y)
23
36
15
y2 = 121/2
42
z2 = 251/2
e2 = 361/2
42
x = x2 e1 – x1 e2 = 7
e1 – e2
y = y2 e1 – y1 e2 = 17
e1 – e2
z = z2 e1 – z1 e2 = 23
e1 – e2
28
Algoritmo di Euclide
By 1950, the word algorithm was most frequently associated
with ‘Euclid’s algorithm’.
Donald Knuth
The Art of Computer Programming, (v.I, p. 2)
Rappresenta per i matematici il prototipo
della procedura algoritmica. Usato non solo
nella ricerca del massimo comune divisore
(Euclide), ma anche, nella soluzione delle equazioni
indeterminate (identità di Bèzout). Per il confronto di
due rapporti (Al-Khayyàm); che sarà ancora più chiaro
con lo studio delle frazioni continue (Eulero). Ma quello
che è stupefacente, è che questo algoritmo viene usato
anche per determinare il numero delle radici reali di
un’equazione algebrica (Metodo di Sturm).
29
IIIo secolo a.c. Algoritmo di Euclide
Le due proposizioni su cui si basa la procedura
forniscono un metodo per determinare se due numeri
sono primi fra loro (Proposizione 1) e se non lo sono, per
determinare
il
massimo
comune
divisore,
MCD
(Proposizione 2). Queste due proposizioni sono contenute
nel Libro VII di The Elements, che insieme ai Libri VIII
e IX formano I Libri Aritmetici di Euclide che mettono
le basi della Teoria dei Numeri.
Il processo iterativo di ricerca del MCD è basato sulle
ripetute sottrazioni fra il numero più grande e quello più
piccolo.
30
?. Omar al-Khayyàm
Nel IXo secolo, al-Mahani identifica l’uguaglianza fra
due rapporti con il fatto che essi hanno le stesse
sequenze di quozienti corrispondenti.
a
c
=
b
d
Il matematico arabo al-Khayyàm và oltre e identifica la
diseguaglianza fra due rapporti.
a
c
=
b
d
K = 1 2 3 4
a
223
=
b
71
c = 355
d
113
0, 3, 7, 10
0, 3, 7, 16
31
1766. Etienne Bézout
Nella ricerca delle soluzioni intere di un’equazione di
primo grado ax – by = c, il caso particolare dove a e b
sono
numeri
primi,
è
noto
come
Identità di Bézout
axo – byo = 1.
Bachet de Méziriac (1624) – dimostrazione laboriosa
I manuali di Bézout hanno avuto un ruolo importante
nell’insegnamento della matematica.Nella sua opera Cours
d’Algèbre utilizza il seguente esempio 17x – 11y = 542,
da cui l’ Identità di Bézout
a*2 – b*3 = 1.
Identità di Bézout e polinomi: AU + BV = 1.
32
1737. Leonhard Euler
L’approssimazione dei numeri per frazioni successive è
alla base dei calcoli fatti dai primi matematici.
Il primo esempio di numero specificato in questa forma è
4/pi (Lord Brouncker).
B
A
C
a
B
D
b
C
E
c
D
F
d
E e
G etc.
Questa teoria viene enunciata da Eulero nel 18o secolo
(Fractionibus continuis Dissertazio) e poi completata da
Lagrange.
33
1835. Charles.-F. Sturm
Nel 1815, Cauchy diede, per la prima volta, una
soluzione completa al problema di determinare il numero
delle radici di un equazione, ma il metodo è troppo
complicato per avere un uso pratico.
Nel 1835, Sturm spiega il suo metodo, abbastanza
semplice, nella Mèmoire sur la résolution des équations
numériques, che gli da la fama di fisico e matematico.
Sturm utilizza nel suo metodo l’algoritmo di Euclide
applicandolo ad un polinomio V e alla sua derivata V’.
Dalle estensioni del teorema di Sturm hanno avuto
origine diversi algoritmi e programmi di calcolo, come
MACSYMA, REDUCE, MAPLE,e DERIVE.
34
Dalla misura del cerchio al calcolo di pi
And
Feceheunmade
bacino
a molten
di metallo
sea, ten
fuso
cubits
di dieci
fromcubiti
the one
da brim
un orlo
to
the
all'altro,
other:rotondo;
it was round
la sua altezza
all about,
eraand
di cinque
his height
cubitiwas
e lafive
sua
cubits:
circonferenza
and a line
di of
trenta
thirty
cubiti
cubits did compassit round about
48
TheLa
Bible,
Bibbia,
I Kings
I Re 7,
7, 23
23
Le diverse teorie di pensiero su pi si
dividono in tre categorie: 1) fino al 17o
secolo, viene usato un approccio geometrico
Rhind Papyrus
(lunghezze o aree) – Archimedes, Jiuzhang Suanshu,
Descartes; 2) l’avvento del calcolo infinitesimale cambia
completamente il tipo di approccio (somme, prodotti,
funzioni trigonometriche, approssimazioni per frazioni
successive) – Leibniz, Euler; 3) studi più teorici sulla
natura del numero pi, che viene approssimato con un
numero sempre maggiore di cifre decimali. Lambert
(1761) dimostra che è un numero irrazionale, e
Lindemann (1882) che è un numero trascendente.
35
287-212 ac. Archimede
Il
libro
su
La
Misura
del
Cerchio
consiste di tre proposizioni.
La prima proposizione stabilisce che A = r C .
2
La terza proposizione stabilisce che
3d + 10 d < C < 3d +
71
1
7
d.
Per ottenere questo risultato
Archimede calcola i perimetri
dei poligoni regolari inscritti e
circoscritti al cerchio.
36
(220 ac – 206 dc)
Area del cerchio – Jiuzhang Suanshu
E’ la più importante e la più conosciuta di tutte le
antiche opere matematiche cinesi; scritta durante la
dinastia Han, contiene centinaia di algoritmi, fra i quali
anche l’algoritmo che calcola l’area del cerchio (pi = 3).
A =
c
d
2 * 2
Verso la fine del terzo secolo il matematico Liu Hui
ottiene una migliore approssimazione di pi calcolando le
aree di una sequenza di poligoni regolari (di 6, 12, 24,
48, 96 e 192 lati) iscritti nel cerchio.
L’astronomo e inventore Zu Chongzhi (nel quinto secolo)
approssima pi a 355 ; e Li Chunfeng (nel settimo secolo)
113
trova la più utile semplificazione a 22 .
7
37
1640. René Descartes
La quadratrice d’Hippias
La spirale di Archimede
Con il Metodo degli Isoperimetri Descartes mostra come
costruire, il diametro d di un cerchio che abbia lo stesso
perimetro p di un quadrato dato, ovvero p = pi.
d
Il metodo si avvale del principio che, di tutte le figure
piane di un dato perimetro, il cerchio ha l’area maggiore
(problema
degli
isoperimetri).
Questo
cerchio
rappresenta il limite di una sequenza di poligoni regolari
di uguale perimetro e di lati (4,8,16,32,…), ovvero si
ottiene producendo la sequenza dei diametri dei cerchi
iscritti in questi poligoni regolari.
38
1673. G.W. Leibniz
Francois Viète (1593) è il
primo a rappresentare pi
come un prodotto infinito.
2/pi
John Wallis (1656)
4/pi
4/pi
Lord Brouncker (frazioni successive)
Leibniz definisce la sua formula
Quadratura Aritmetica
39
1748. Serie
Eulero studia la convergenza della serie di Leibniz.
e
arctan t = t – t3 + t5 – t7 + t9 - …
3
5
7
pi = 2 3
9
1
-
1
3.3
+
1
5.32
tan pi/6 = 1/ 3
-
…
+
(-1)n
(2n +
1).3n
+
…
arctan 1 = arctan (1/2) + arctan (1/3)
pi
4
=
(-1)n
(2n +
n>=0
1).22n+1
(-1)n
+
(2n + 1).32n+1
n>=0
pi/4 = arctan (1/5) – arctan (1/239)
J.Machin
pi2/6, pi4/90, pi2/8, pi3/32, …
M. De Lagny (1719)
127 posizioni decimali
3,141592653589793238462643383279502
8841197169399375105820974944592307816
4062862089986280348253421170679821480
8651327230664708446
La 114a cifra dovrebbe essere 8!
40
I Metodi di Newton
Esistono due versioni
Metodo della Tangente
e
(Soluzione Numerica di Equazioni)
P(y) = 0
1669 – Approssimazione di
Newton
1690 – L’iterazione di
Raphson
metodo di Newton:
Poligono di Newton
(Soluzione Algebrica di Equazioni).
P(x,y) = 0
y = f(x)
…La
Riga
e
Piccoli
Parallelogrammi…
1850 – Caso generale Puiseux
(r. di ricorrenza)
1768 – Mourraille
Lagrange
del
(c. iniziali)
(a. geometrico)
1818 – Fourier
(convergenza)
1829 – Cauchy
(r. complesse)
Idea Moderna dei Frattali.
41
1669. Isaac Newton
APPROSSIMAZIONI LINEARI
Il metodo di Newton per risolvere un’equazione
polinomiale è un metodo per approssimazioni successive.
Nel 1669 Newton fornisce
un nuovo algoritmo, che
illustra
sull’esempio
y3 -2y -5 = 0
Newton
non
fa
uso
esplicito della nozione di
derivata.
2.09455148
2+p=y
y3
-2y
-5
+8
+12p
-4
-5
-2p
Total -1
+p3 +0.001
0.1+q=p
+6p2 +0.06
+10p +1
-1 -1
Total 0.061
+6p2 +p3
+10p +6p2 +p3
+0.03q +0.3q2 +q3
+1.2
+10
+6
+11.23q +6.3q2 +q3
-0.0054+r=q +q3
+6.3q2
+11.23q
+0.061
Total +0.0005416
-0.00004852 + s = r
+11.162r
42
1690. Joseph Raphson
FORMULE DI RICORRENZA
Il metodo introdotto da Raphson
processo delle approssimazioni di Newton.
x3 – bx + c = 0
an
x=g
f(an)
an+1 = an +
c + g3 – bg
x=g+
f’(an)
b - 3g2
semplifica
Più tardi Lagrange mostra che i due metodi
praticamente uguali (algoritmo di Newton-Raphson).
il
sono
43
1768. Jean-Raymond Mourraille
CONDIZIONI INIZIALI
Per la prima volta viene affrontato il problema della
convergenza del metodo di Newton. Mourraille utilizza la
rappresentazione geometrica (Metodo della Tangente) per
spiegare il comportamento della sequenza iterativa
prodotta dall’algoritmo di Newton.
f’>0,
M
f”>0
B
p
M
P
P
P
M
p
B
f’>0, f”<0
f’<0, f”>0
p
B
B
P
p
f’<0, f”<0
M
44
1829. Augustin Louis Cauchy
CONVERGENZA
Fourier (1818) prima in Question d’analyse
algébrique, e poi in Analyse des équations déterminées
(1831), è il primo che affronta il problema della misura
della convergenza.
In Lecons sur le Calcul Différential, in una nota sulla
determinazione approssimata delle radici di un’equazione
f(x) = 0, Cauchy specifica le condizioni iniziali, a partire
dalle derivate f’ ed f’’.
Nel caso dell’equazione di
Newton x3 -2x -5 = 0
f’(x) = 3x2 – 2,
f’’(x) = 6x, a=2,
i=-f(a)/f’(a)=0.1
45
1979. Radici Complesse
Nel 1979 John Hubbard, matematico americano, si chiese
che cosa sarebbe successo applicando il metodo di Newton
per la risoluzione delle radici cubiche.
i
punti
del piano
sono
“attratti”
verso le
tre
soluzioni
del
sistema
46
1671. Poligono di Newton
La prima versione dell’algoritmo per ottenere le soluzioni
algebriche di un’equazione algebrica P(x,y)=0.
aijxiyj
P(x,y) =
bk x k
y =
K>0
i,j
Y6 – 5xy5 + (x3/a)y4 – 7a2x2y2 + 6a3x3 + b2x4 = 0
B
B
x4 x4y x4y2 x4y3 x4y4
x3 x3y x3y2 x3y3 x3y4
x2 x2y x2y2 x2y3 x2y4
A
x
xy xy2 xy3 xy4
0
y
y2
y3
*
D *
*
*
*
y4
A
C
Y6 – 7a2x2y2 + 6a3x3  v6 - 7v2 + 6 = 0 y = v ax...
*
C
E
47
Risoluzione di Equazioni per
Approssimazioni Successive
Approximation, (in Mathematics) is an operation by which
one approaches ever more closely to the value of a required
quantity, without however ever finding the exact value.
d’Alembert -The Encyclopédie
Metodi per l’estrazione delle radici
quadrate, (Metodi
di Heron e Theon di Alexandria, Ibn al-Banna);
Metodi numerici per la risoluzione di equazioni (Al-Tusi,
Viète);
Nel campo dell’astronomia al-Kashi usa questo processo
per calcolare il valore di sen 1o, e Keplero per
risolvere la sua equazione trascendentale;
Metodi di Bernoulli delle Serie Ricorrenti (Euler) e di
Lagrange delle frazioni successive;
Le tecniche di Ruffini, Budan e Horner per la
trasformazione delle equazioni polinomiali.
48
I° sec. a.c. Heron di Alexandria
Come i Babilonesi
(2000-1700 a.c.).
VAT 6598 – (6)
hanno ottenuto questa
formula?
Heron è stato il primo a proporre un
algoritmo iterativo
di approssimazione
..
(Metrica, Schone - 1896).
Valore Standard
== ?26*5/6
=
+
/2
1 (a
2
+ A )
a
49
Theon di Alexandria
370 a.c.
Theon propone una versione geometrica di questo
algoritmo iterativo (Commentary on Ptolemy’s Syntaxis).
2
A
–
a
x=
( a + x)= rA
2a
2
A
–
a
r=a+
2a
2
4500
A
E
a
H B
ax
G
x
= 67°4’ 55”
J
D
F
ax
2
xI
C
50
13°secolo Ibn al-Banna
L’algoritmo binomiale, si basa sull’espansione di (a+x)2, e
parte dalla formula x2+2ax=A-a2 per trovare un valore di
x tale che x(x+2a) si avvicini a A-a2.
Le prime tracce di questa procedura si trovano nel capitolo
4 di Jiuzhanh Suanshu (3° secolo – Liu Hui); nel 13°
secolo viene descritto da Ibn al-Banna; è stato insegnato
nelle scuole fino al 1960.
Primo
passo:
N
(A – a2)102 + C
nr nr nr
18 95 74
2 95
c(c + 80) < 295
18 95 74
2 95
46 74
43
3(3 + 80) < 295
c(c + 860) < 4674
c=3
Secondo
passo:
c=5
N
(A – a2)102 + C
4
435
a
a
51
Al-Tusi
Il principio che è alla base di questo algoritmo
(Treatise
on
Equations)
è
di
utilizzare una tabella per trovare la radice
dell’equazione, una cifra alla volta.
°
°
°
34 345 395
3 4
4
3
3
°
°
x0
N
6 234 795
N1
b
9 9
22
44
3 3
44
b1
a
a
4 4
X3 + 12x2 + 102x = 34 345 395
°
3 2
3 1 5 9 5 5
1 0 49 9 4
4
x1
N2
b2
a
°
3 2
3 1 5 9 5 5
1 0 49 9 4
4
x1
N2
b2
a
52
1600. Viète
Un metodo generale per trovare le soluzioni positive delle
equazioni, dal secondo grado
++500
- 6000s
2 4 50 00 00
5
al sesto grado (On the solution
24
+-+(20)
5.
(20)
+ +32
8 0000000000
300s
of numerical powers).
Problema XV
x5 – 5x3 + 500x = 7 905 504
Passo 1 – Inizializzazione
5(20)4s + 10(20)3s2 + 10(20)2s3+
ordine di grandezza della radice e la
5.20s4 + s5 – 5.3.(20)2s – 5.3.20s2 –
sua prima approssimazione  20
5s3 + 500s = 4 735 504
x = 20 + s
3s + 10(20)2s2+
P(s) = 55(20)4 + 10(20)
3
(20+s) – 5(20+s) + 500 (20+s) = 7 905 504
5.20s3 – 5.3.(20)2 – 5.3.20s – 5s2 +
500
s5 + sP(s) = 4 735 504
sP(1) < sP(s) < s5 + sP(s) = 4 735 504
s < 4 735 504/P(1)
3
500
x 20
+-+10.
(20)
3
5s
3
5 x(20)
(20)
2s
+ 10.
+ 5. 20
+800 000s
+80 000s2
+4 000s3 2
- 5.3.(20)
+ 100s4
- 5.3.(20)
+ s5
-5
+ 500s
+ +
-+
+- +31
4 8 0 0
1
8 00000000
440030020000
27 90110020000
47
++ 79
8 830455655000044
- 47 365350054
+ 8 7 8 2 9 5
+ 32 0 0 0 0 0
+ 12 8 0 0 0 0
+ 2
- 5 66 00 00 00
2 5 36 00 00
+
+ 1 0 2 54
+
2 0 0 0
6 3 0 5
+ 47 6 4 6 2 4
53
1400. Al-Kashi e il Sen 1°
Il matematico e astronomo Al-Kashi descrive un
algoritmo che gli consente di determinare il Sen
1°, a partire dal Sen 3° (3;8,24,33,59,34,28,15), con
notevole precisione (60-7).
x= Sen 1°
P = 47,6;8,29,53,37,3,45
q = 45,0
Sen 3a = 3 Sen a -4 Sen3 a
3x = 4 x3 /602 + Sen 3°
qx = x3 + p
Sen 1° =
1;2,49,43,11,14,44,16,26,17
ovvero
0,017 452 406 437 283 571
54
x = t – e.sen x
250 ac. Equazione di Keplero
Keplero risolve questa equazione con
approssimazioni successive definite da:
xn = F(xn-1) dove f(x) = t – e.Sen x
Epitomes astronomiae
Copernicanae
55
Algoritmi in Aritmetica
Gli algoritmi di Eratostene e
Pascal sono utilizzati per
determinare i numeri primi.
Non
è
semplice
trovare
algoritmi efficienti per testare
numeri molto grandi.
Il problema di distinguere i numeri primi dai numeri
composti, e la decomposizione di questi ultimi in
fattori primi, è il più importante e il più utile di tutta
l’Aritmetica […]. La dignità di questa scienza esige
che noi cerchiamo con tutti i mezzi di risolvere un
problema
così
famoso
ed
elegante.
Gauss
Disquisitiones Arithmeticae, 1801
I tests di Lucas e Lehmer e Pépin. I primi due derivano dal teorema
inverso del teorema di Fermat e richiedono la fattorizzazione di
N+1 o N-1 per determinare se N è un numero primo. Tre algoritmi
di fattorizzazione: Fermat (lineare ma efficace solo in alcuni casi
particolari); Gauss e Legendre (più complessi ma di più ampia
applicazione), utilizzano residui quadratici e frazioni continue.
L’algoritmo relativo all’equazione Diophantina di Pell-Fermat, dal quale
si sviluppa la ricerca e le soluzioni di Lagrange. La ricerca di
algoritmi sempre più efficienti in quest’area deriva anche dal loro
utilizzo nella scienza della crittografia, chiave pubblica.
56
250 ac. Il Crivello di Eratostene
Consente di determinare tutti i numeri primi inferiori ad
un numero N prefissato (Nichomachus di Gerasa).
* multipli di tre (2)
* multipli di sette (6)
39 = 6
N =
* multipli di cinque (4)
*
**
*
*
*
*
*
*
*
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 *…
forma compatta
1110110110100110010…
57
1654. Criterio
di Divisibilità - Pascal
Consente di saper se un numero è divisibile per un altro
numero senza eseguire la divisione. Blaise Pascal raccoglie
tutti i criteri prodotti e fornisce un criterio generale.
Divisibilità per 7: utilizzo i
resti delle divisioni delle 10 9 8 7 6 5 4 3 2 1
differenti potenze di 10.
6 2 3 1 5 4 6 2 3 1
2 8 7 5 4 2 1 7 8
8 + 21 + 2 + 12 + 16 + 25 + 7
La Teoria delle Congruenze
+ 24 + 4 = 119
ha origine direttamente da
questo algoritmo di Pascal.
58
1798. Residui Quadratici - Legendre
Legendre, in Théorie des nombres (1798), fornisce un
algoritmo per testare se a è un residuo quadratico
modulo p, x2
a (mod p). Questo algoritmo si basa sulla
legge della reciprocità quadratica (Eulero, 1783).
p
q
=
q
p
p e q numeri dispari che non
sono entrambi della forma
4n + 3
p
q
=q
p
altrimenti
a è un residuo quadratico modulo p se
a
p =1
ab
a
=
c
c
a sta per il resto della divisione
p di a(p-1)/2 per p.
b
c
a
r
=
c
c
se
a= mc + r
p
q
q
= (-1) (p-1)(q-1)/4
p
601
1013
=…
-
1
= -1
17
1013 non è un residuo
quadratico di 601
59
1640. Teorema Inverso di Fermat
Il piccolo teorema di Fermat: se a e p sono due
1 (mod p).
numeri interi primi, allora se p è primo, ap-1
(es:13)
Questo teorema non consente di stabilire se un
numero è primo, infatti il teorema inverso di Fermat
è falso.
Esempio a= 2
N = 341 numero pseudo primo
Per avere un test deterministico sui numeri primi, è
necessaria una condizione supplementare che consente
di affermare che N è un numero primo (Tests di
Lehmer, 1927; Tests di Lucas, 1876).
60
1877. Test di Pepin
Il teorema di Pepin fornisce un algoritmo per testare se un
numero di Fermat è un numero primo.
n
Fn = 22 + 1
Fermat sosteneva che tutti i numeri
in questa forma erano numeri primi
(lettera a Carcavi del 1659).
1729. Goldbach attira
affermazioni di Fermat
l’attenzione
di
Eulero
sulle
1732. Goldbach dimostra che F5 non è primo
1877. Pèpin propone un semplice test.
Condizione necessaria e sufficiente affinchè il numero
an = 22n + 1 sia primo, per n > 1,
è che il numero
5(an-1)/2+1
sia divisibile per an.
61
Algoritmi di Fattorizzazione
Un algoritmo di fattorizzazione richiede molti passi in più di
un algoritmo per la primalità. Knuth, in The Art of
Computer Programming, afferma che la fattorizzazione è
più difficile di trovare il MCD tra due numeri.
Gauss, in Disquisitiones Arithmeticae (1801), ha proposto
due metodi di fattorizzazione, ma egli suggerisce di provare
a dividere il numero dato per i più piccoli numeri primi (2,
3, 5, 7, …19) per evitare di utilizzare metodi sottili e
artificiali.
Dello stesso avviso è Riesel in Prime numbers and computer
methods for factorisation (1985).
62
Algoritmi di Fattorizzazione
La maggioranza degli algoritmi in uso è basata sui metodi
dovuti a Fermat, Gauss e Legendre.
In particolare l’idea di Legendre è stata ripresa nel XX°
secolo per realizzare algoritmi ad alte performance.
Nel 1975 Pomerance ha costruito un algoritmo basato su
metodi statistici.
Esistono, quindi, molti algoritmi di fattorizzazione, ma sono
costosi. Miglioramenti degli algoritmi sono giudicati in base
alla loro complessità.
63
1643.
Fattorizzazione per differenza di due quadrati
Nel 1643 Père Mersenne pone a Fermat la sfida
di
fattorizzare il numero 100 895 598 169. La sua risposta
fornisce un metodo sistematico per fattorizzare un numero.
Il punto di partenza fu di tentare di
scrivere il numero N sotto forma di
differenza di due quadrati:
N=x2-y2=(x+y)(x-y)
Il numero x è sicuramente maggiore della radice quadrata
dell’intero N. E’ sufficiente, quindi, testare uno ad uno i
numeri x maggiori di quella radice quadrata per determinare
se la differenza x2-N è, o no, un quadrato.
64
1643.
Fattorizzazione per differenza di due quadrati
Fermat fornisce un algoritmo molto semplice per svolgere
con successo tutti calcoli. Tuttavia il metodo di Fermat
richiede una grande quantità di calcoli. I suoi successori
hanno cercato di trovare altri modi di scrivere N come
differenza di due quadrati.
1805. Kausler
1840. Collins
1911. Kraitchick
1974. Sherman Lerman riprende il metodo di Fermat. La
sua idea è di eliminare i casi sfavorevoli (N ha fattori primi
piccoli).
65
1801.
Fattorizzazione per quadrati residui
Nel 1801 Carl Frederich Gauss, in Disquisitiones
Arithmeticae
propone
due
nuovi
metodi
di
fattorizzazione. Il primo dei due è basato sulla ricerca
dei più piccoli quadrati residui del numero da
fattorizzare.
a è un quadrato residuo
di N se esiste un x tale
che x2 a(modN)
Il metodo usato da Gauss è un
metodo per esclusione. Utilizzando i
quadrati residui è possibile escludere
molti fattori primi di N.
66
1931.
Fattorizzazione per frazioni continue
L’idea di utilizzare l’espansione di frazioni continue della
radice quadrata di N era stata proposta da Legendre, come
osservazione, nella Thèorie des nombres, nel 1798.
Ripresa da molti matematici, raggiunge il posto d’onore in
un articolo del 1931 di D.H.Lehmer e R.E.Powers: On
factorising Large Number, Bulletin of the American
Mathematical Society.
Con l’avvento dei computer l’algoritmo ha attirato notevoli
interessi, nei venti anni successivi sono stati fatti
miglioramenti per produrre algoritmi molto potenti.
67
1657.L’Equazione Pell-Fermat
x2 – ay2 = 1
ay2 + 1 = x2
dove a è un intero non quadrato.
6° secolo. Brahmagupta
12° secolo. Bhaskara
1657. Fermat pone la sfida ad altri matematici di
dimostrare che questa equazione possiede sempre un
numero infinito di soluzioni. La dimostrazione che Fermat
affermava di avere non è mai stata trovata.
1766. Lagrange da la prima dimostrazione. Egli ha pensato
che la soluzione al problema di Fermat era la chiave per
risolvere tutti i problemi di questo tipo.
1798. Legendre utilizza il metodo di Lagrange per dare le
condizioni per la risolvibilità di equazioni Diofantine
68
quadratiche.
250. L’Aritmetica di Diophantus
I libri dell’ Arithmetica di
Diophantus (AD 250) sono
proposti sotto forma di una
serie di problemi risolti.
Nel risolvere i problemi,
Diophantus tratta circa 40
equazioni
della
forma
ay2+by+c=x2. In particolare
in un lemma offre una
famiglia di problemi che
hanno
soluzioni
infinite.
Questo lemma fornisce un
metodo per risolvere alcune
equazioni di Pell-Fermat.
69
1766-1769. Il risultato di Lagrange
Il lavoro fatto da Lagrange sulle equazioni Pell-Fermat fu
pubblicato in una memoria del 1776-1769.
Egli dimostra tre risultati principali con tutto il rigore e la
generalità possibile:
 Ogni equazione Pell ha una soluzione con i mezzi
per trovarla.
 Trovata una soluzione è possibile trovarne infinite
 Tutte le soluzioni possono essere trovate
dall’espansione di radici continuate della radice
quadrata di a con un algoritmo per trovarle.
70
Sistemi di Equazioni Lineari
… l’eliminazione è la parte più difficile e lunga del lavoro, così
tanto che si è riluttanti a desiderare che la scienza possa
scoprire i mezzi per fare ciò che potrebbe essere utile come
l’invenzione dei logaritmi lo è stato per le moltiplicazioni….
Christian Ludwig Gerling
Die Ausgleichung-Rechungen, 1843
La soluzione ad alcuni antichi problemi può essere
considerata, oggi, come la soluzione di sistemi di equazioni
lineari. Abbiamo incontrato tali problemi con i matematici
Babilonesi ed Egiziani, con i matematici indiani nel Medio
Evo, nei paesi islamici e in Europa.
E’ solo verso la fine del 17° secolo che appaiono sistemi di
equazioni lineari con coefficienti letterali.
Anche Leibniz utilizza doppia indicizzazione.
71
Sistemi di Equazioni Lineari
Nel 1730 Maclaurin calcola la soluzione di sistemi di due
e tre equazioni e fornisce le formule per induzione per la
soluzione di 4 equazioni.
Nel 1750 Cramer fornisce le formule generali (regola di
Cramer) per qualsiasi numero di equazioni, anche se non
offre una dimostrazione.
L’astronomia e la geologia richiedono la soluzione di sistemi
con un gran numero di equazioni, e il numero di operazioni
necessarie per la loro soluzione cresce rapidamente. I
metodi successivi cercano di ridurre il numero di operazioni
(metodo pivot di Gauss) o di fornire soluzioni per
approssimazioni successive (metodo dei Minimi Quadrati).
Nel 19° secolo sono stati sviluppati metodi iterativi. 72
1750. Regola di Cramer
Cramer fornisce le formule per dare soluzioni per un
sistema di n equazioni, per qualsiasi n. Tali formule sono
ottenute per induzione dai casi particolari di n=1,2 e 3.
Le soluzioni sono date sotto forma di un quoziente di due
polinomi omogenei di grado n.
Ulteriori lavori sulle formule
danno origine alla teoria dei
determinanti.
1815. Cauchy ha dato la prima
dimostrazione della regola di
Cramer,
stabilendo
l’attuale
notazione e cominciando uno
studio
sistematico
dei
determinanti.
1850. Sylvester ha introdotto il
termine matrice.
73
1805. Metodo dei minimi quadrati
Il
metodo
consiste
nel
sostituire un sistema di n
equazioni
iniziali
con
un
sistema di sole k equazioni (k
incognite).
Il
metodo,
descritto
da
Legendre nel 1805, è stato
usato da Gauss almeno dal
1801 per determinare l’orbita
del pianeta Ceres.
Nel 1809 Gauss giustifica il suo metodo e nel 1821
dimostra che la sua scelta di combinazioni lineari
corrisponde a quella con minore probabilità di errore, in
accordo con Seidel.
74
1810. Il metodo pivot di Gauss
Nel 1807, C.F.Gauss diventa direttore dell’osservatorio
astronomico di Gottingen. Egli si propone di determinare
l’orbita precisa del pianeta Pallas e spiega il suo approccio
in una memoria datata 1810.
Gauss riutilizza il metodo dei minimi
quadrati utilizzando un’altra somma di
quadrati, in modo tale che ad ogni
passo scompaia un’incognita (eliminazione
Gaussiana). Così arriva ad un sistema
triangolare di equazioni.
Uno dei più notevoli metodi cinesi (fangcheng) è di ridurre
la matrice del sistema in forma triangolare e quindi
di
75
calcolare le incognite per successive sostituzioni.
1823. Metodo Iterativo di Gauss
Gauss, in una lettera a Gerling, nel 1823, spiega l’idea
base sul metodo conosciuto come metodo Gauss-Seidel. Egli
parla di un metodo “indiretto” per risolvere il sistema di
equazioni derivante da misurazioni della superficie della
terra.
16°sec. Tycho-Brahe mappa della superficie della terra
17°sec. Picard misura l’arco del meridiano nei dintorni di Parigi per
fissare il valore del raggio della Terra
18°sec. Spedizioni in Lapponia e in Peru per determinare l’estensione
dell’appiattimento della Terra
In tutti i casi erano usate triangolazioni e il risultato ottenuto con il
metodo dei minimi quadrati.
Dal 1820 al 1825 Gauss si occupa di un lavoro sulla
triangolazione di Hanover.
Il sistema di equazioni da risolvere diventò enorme per
cui
76
Gauss propose metodi iterativi per velocizzare i calcoli.
1845. Metodo di Jacobi
Carl Gustav Jacobi aveva necessità di trattare con sistemi
lineari di equazioni quando considerava sistemi fisici
soggetti a piccole oscillazioni. Egli descrive un metodo
iterativo valido quando i coefficienti della diagonale sono in
preponderanza. In caso contrario egli usa la rotazione degli
assi, in modo da eliminare i coefficienti più grandi che non
sono sulla diagonale.
77
1874. Metodo di Seidel
Ludwig Seidel, alunno di Jacobi, ha effettuato una gran
quantità di calcoli per lui. In particolare doveva risolvere
un sistema di equazioni con 72 incognite per uno studio
sulla luminosità delle stelle.
Seidel ha proposto una tecnica iterativa per trovare la
soluzione ad un sistema di equazioni. La sua ispirazione
viene dall’idea di Jacobi di approssimazioni successive e
dal metodo “pivot” di Gauss.
78
1885. Nekrasov
Alexander Ivanovich Nekrasov esamina il metodo di Seidel
dietro richiesta dell’astronomo Tzeraki. In un articolo del
1885, egli solleva la questione della velocità di
convergenza.
Dopo aver fornito esempi in cui la
convergenza
è
molto
lenta,
Nekrasov dimostra che la scelta
ottimale indicata da Seidel non
accresce
significativamente
la
velocità di convergenza.
79
1923. Metodo di Cholesky
di artiglieria Cholesky, dell’ Army
Geographic Service, morto durante la grande guerra,
durante le sue ricerche sulle correzioni delle curve
terrestri, ha concepito una procedura molto ingegnosa per
la soluzione delle cosidette equazioni normali, ottenuta con
l’applicazione del metodo dei minimi quadrati ad equazioni
lineari in numero minore del numero delle incognite. Da ciò
aveva derivato un metodo generale per la soluzione di
equazioni lineari.” (Commandant Benoit)
“Il
comandante
In contrasto ai metodi iterativi la tecnica di Cholesky
porta, come una regola, ad una soluzione esatta.
Il metodo del comandante Cholesky consiste nel confrontare
le equazioni con altre equazioni derivate da un sistema
di
80
equazioni lineari già risolto.
Tavole e Interpolazione
La teoria dell’interpolazione….. la scienza di leggere tra le
linee di una tavola matematica.
E.T.Whittaker
The Calculus of observations
La costruzione di tavole è di fondamentale importanza per facilitare i
calcoli e per evitare di ripetere le stesse operazioni molte volte.




Tavole per calcolare inverso (Babilonesi)
Tavole trigonometriche
Tavole delle corde (Tolomeo – 2° secolo)
Tavole decimali (Briggs – 17° secolo)
Quello che accade generalmente è che, dopo un certo numero di valori
calcolati, gli altri valori sono ottenuti come interpolazione dai valori
calcolati precedentemente.




Formule d’interpolazione di Gregory-Newton
Formule d’interpolazione polinomiale di Newton e Lagrange
Funzioni d’interpolazione (Cauchy)
Algoritmo di Neville – Algoritmo CORDIC
81
150 AD. Tavole delle Corde di Tolomeo
Tolomeo ha scritto Mathematical Syntaxis nel 150 AD,
detto Almagest (dall’arabo “il più grande”), considerato il
lavoro di riferimento per l’astronomia.
Tolomeo ha spiegato come costruire una tavola delle
lunghezze delle corde di un cerchio in funzione dei valori
degli archi corrispondenti.
Sono le più antiche tavole note
di questo tipo, anche se
Ipparco
(2°sec
A.C.)
e
Menelao (1°sec A.C.) hanno
usato tavole di questo tipo.
La costruzione delle tavole di
Tolomeo richiede una teoria di
trigonometria piana che è
presentata nell’Almagest. 82
1624. Briggs e i logaritmi decimali
The word algorithm itself is quite interesting: at first
glance it may look as though someone intended to write
logarithm but jumbled up the first four letters .
Donald D.Knuth
The Art of Computer Programming (vol.I,p.1)
Nel 1614 Napier pubblica una tavola di logaritmi ottenuta
per successive estrazioni di radici quadrate nel suo Mirifici
logarithmorum canonis Descriptio. Queste tavole ebbero
grande successo e furono pubblicate molte altre versioni.
Henry Briggs pubblica Logarithmorum Chilias Prima nel
1617, ma il suo lavoro più importante fu Arithmetica
Logarithmica nel 1624. Questi nuovi logaritmi differiscono
da quelli di Napier perché utilizzano 0 e 1 per i logaritmi
83
di 1 e 10 e quindi sono logaritmi decimali.
1670. La formula Gregory-Newton
L’interpolazione lineare non è sempre
sufficientemente
accurata
per
ottenere valori intermedi buoni. Per
questo
i
matematici
sviluppano
processi
più
rifiniti
attraverso
l’utilizzo di differenze finite.
Gregory e Newton hanno scoperto
la formula indipendentemente. Il
primo ne parla in una lettera a
Collins nel 1670. Il secondo in una
lettera a John Smith datata 8
maggio 1675.
84
1687. Interpolazione polinomiale di Newton
Isaac Newton è stato il matematico
che ha dato il maggior contributo
alla teoria dell’interpolazione e delle
differenze finite.
1675
1676
1676
1687
–
–
–
–
lettera a John Smith (8 maggio)
Methodus Differentialis (apparso nel 1711)
lettera ad Oldenburg (24 ottobre)
Philosophiae naturalis principia mathematica
Lemma V. Trovare una linea curva di tipo
parabolico che passa attraverso un dato
numero di punti.
85
1795. Interpolazione polinomiale di Lagrange
Lagrange affronta il problema, trattato precedentemente
da Newton, di utilizzare una curva parabolica per
interpolare una curva, ossia interpolare una funzione per
mezzo di una funzione polinomiale. Egli è motivato da un
problema pratico di sopravvivenza:
Da un punto la cui posizione è sconosciuta, sono osservati tre
oggetti le cui distanze relative sono note e i tre angoli formati
dai raggi visuali dall’occhio dell’osservatore a questi tre sono
stati
determinati.
Vogliamo
trovare
la
posizione
dell’osservatore rispetto a questi stessi oggetti.
86
1795. Interpolazione polinomiale di Lagrange
Lagrange propone una soluzione tramite tentativi ed errori,
questo porta ad una curva degli errori attraverso un numero
finito di punti, i punti corrispondono ai tentativi. Infine,
per risolvere il problema la curva deve essere approssimata
da una polinomiale. Questa interpolazione polinomiale di
Lagrange, non è diversa dalla polinomiale di Newton, ma
espressa in modo differente.
Gli elementi della base di Lagrange sono così definiti:
è il polinomio interpolante. 87
1840. Limite superiore di errore (Cauchy)
Se vogliamo che il valore interpolato sia una buona
approssimazione del valore esatto, dobbiamo determinare
un limite superiore per l’errore.
Cauchy ha fornito delle formule per calcolare tale limite.
88
1933. Algoritmo di Neville
L’interpolazione polinomiale
di Lagrange è inadatta a un
calcolo iterativo che va da
n a n+1 punti.
E.H.Neville propone una
procedura per rimediare a
questo inconveniente.
Funzioni polinomiali e razionali comportano grandi quantità di
moltiplicazioni e divisioni con notevole costo in termini di spazio e
tempo.
Nel 1959, J.Volder ha proposto un metodo per calcolare funzioni
trigonometriche che utilizza solo addizioni, sottrazioni e shift.
L’algoritmo CORDIC (Coordinate Rotations on a Digital Computer) ha
rivoluzionato il calcolo dei valori di funzioni con notevole risparmio di
tempo e di spazio.
89
Quadrature approssimate
L’origine del significato di quadratura è di trovare un
quadrato con la stessa area di una data figura geometrica
(quadratura del cerchio).
Si tratta di stabilire un rapporto tra due figure piane.
I geometri greci utilizzavano un metodo esaustivo
(Archimede). Lo stesso utilizzato nel 9° secolo dai
matematici Arabi Banu Musa, Thabit ibn Qurra, Ibrahim
ibn Sinan e nel 10° secolo da Ibn al-Haytham e alMutaman.
90
Quadrature approssimate
Nel 17° secolo è stato introdotto il metodo degli
indivisibili. Nel 1639 Cavalieri ha usato un metodo noto
come metodo di Simpson.
Alla fine del 17° secolo l’invenzione di Newton e Leibniz
del calcolo infinitesimale fornisce un algoritmo per il
calcolo esatto di un’area sotto una curva.
Nel 17° secolo altre formule per le aree sono state date
da Gregory, Newton, Cotes e Stirling.
Nel 18°
Il russo
formule
generino
secolo Gauss da una nuova formula di quadratura.
Chebyshev determina una scelta di punti per le
di Newton-Cotes o di Gauss per evitare che si
91
errori significativi.
1670. Formula di Gregory
Nel 1670 James Gregory, professore di matematica a
St.Andrews e membro della Royal Society di Londra, scrive
a James Collins, Segretario della Società.
La lettera descrive il suo lavoro, confronta il suo lavoro con
quello dei contemporanei (Newton, Barrow, Briggs,
Mercator, Keplero, …) ma non contiene dimostrazione dei
risultati perché queste erano considerate lunghe e tediose.
Gregory si interessava di sviluppo in serie di funzioni e la
loro
applicazione
a
problemi
geometrici
come
la
rettificazione di curve.
92
1711. Regola di Newton tre-otto
1669 De Analysi per Aequationes Numero Terminorum Infinitas
1687 Principia
1711 Methodus Differentialis
Se
ci
sono
quattro
ordinate posizionate ad
intervalli uguali, sia A la
somma della prima e della
quarta, B la somma della
seconda e terza, ed R
l’intervallo tra la prima e
la quarta, l’area totale tra
la prima e la quarta sarà
A+3B
8
R
93
1722. Formule Newton-Cotes
Sebbene il
Differenziale
trattato di Roger Cotes sul Metodo
di Newton (De Methodo Differentiali
Newtoniana) fu pubblicato postumo nel 1722, esso
probabilmente fu scritto nel 1709. L’autore dice, in un
post-script, di aver composto il suo teorema nel 1707,
prima del testo di Newton.
Cotes da una spiegazione
del metodo e fornisce le
formule per le aree sotto
curve per i casi da 3 a 11
punti equidistanti, il tutto
senza il supporto di calcoli.
94
1730. Formule Correzione di Stirling
Il Treatise on the Summation and Interpolation of Infinite
Series di James Stirling fu pubblicato nel 1730. Egli da le
formule di Newton-Cotes, senza menzionare Cotes, e una
Tavola di Correzioni da applicare alle approssimazioni.
Stirling non da spiegazioni per i risultati, ma semplicemente
95
una descrizione di come usare le tavole con alcuni esempi.
1743. Regola di Simpson
La formula nota come Regola di Simpson è la prima delle
formule di Newton-Cotes. Il contributo di Simpson fu solo
di fornire una dimostrazione geometrica del risultato.
La sua idea fu di dividere l’intervallo in considerazione in parti uguali,
sufficientemente piccole perchè una parabola possa essere una buona
approssimazione al grado di accuratezza richiesto, ed applicare la prima
formula ad ognuna di queste sezioni (metodo composto).
L’idea di dividere l’intervallo in parti uguali fu usata96 nello
stesso periodo da Maclaurin.
1816. Formule di Quadratura di Gauss
In
una
comunicazione
alla
Gottingen Society del 1816,
Gauss, partendo dalle formule di
Cotes,
da
una
valutazione
dell’errore
relativamente
al
metodo. Fornisce, così, una
formula
che
ottimizza
l’approssimazione.
L’articolo di Gauss non è semplice da leggere. Jacobi
fornisce un approccio più semplice in un articolo del 1826.
97
1874. La scelta di Chebyshev’s
In un articolo pubblicato nel
1874 nel Journal de Liouville,
Chebyshev
si
propone
di
determinare una nuova formula
di quadratura in cui ognuno dei
valori della funzione in punti
particolari abbia lo stesso
peso. Con la formula di Gauss
c’è rischio di errore.
Nel 1880 R.Radau ha pubblicato una sintesi delle
formule di quadratura nel Journal de Liouville. In
98
particolare ha definito il grado di precisione.
Soluzioni approssimate di Equazioni Differenziali
Il problema dei tre corpi ha molta importanza per l’astronomia, e
allo stesso tempo è molto difficile, per cui tutti gli sforzi dei
geometri sono stati per lungo tempo diretti verso di esso. Essendo
un’ integrazione completa e rigorosa manifestamente impossibile, è
stato fatto appello alle procedure di approssimazione.
Henri Poincarè
Les méthodes nouvelles de la Mécanique céleste, 1892, vol.I,p.1
I metodi di soluzioni approssimate, utilizzati da Eulero per la prima
volta nel 18° secolo, sono stati perfezionati verso la fine del 19°
secolo.
I metodi delle differenze finite forniscono lo stimolo per ulteriori
miglioramenti che portano ai lavori di Adams (metodo multi-step),
Runge, Heun e Kutta (metodo one-step).
L’uso di questi metodi, datati un centinaio di anni, oggi è molto esteso
(dal 1950). Essi si adattano bene ad essere gestiti con i computer.
99
1768. Metodo di Eulero
In un capitolo intitolato On the integration of differential
equations by approximation del suo lavoro Institutionum
Calculi Integralis del 1768, Eulero nota l’aspetto
insoddisfacente dell’utilizzo delle serie e descrive il
metodo noto come “metodo di Eulero”.
equazione differenziale
del primo ordine
condizioni iniziali
100
1835. Cauchy (Esistenza di una soluzione)
“A.L.Cauchy ha posto la teoria generale delle equazioni
differenziali su una base indistruttibile” afferma Paul
Painlevé in un articolo nella Encyclopédie des Sciences
mathématiques. Infatti per primo, Cauchy ha posto e
risolto il problema dell’esistenza di una soluzione di una
equazione differenziale del primo ordine che soddisfa una
condizione iniziale, fornendo due dimostrazioni del
risultato.
Il lavoro di Picard fornisce il completamento della teoria
dell’esistenza di soluzioni. In una memoria del 1890
C.E.Picard da una terza dimostrazione di esistenza. 101
1895. Metodo di Runge
C.Runge propone metodi per la
soluzione di equazioni differenziali
che offrano maggiore accuratezza.
Riassumiamo i 3 metodi proposti da
Runge.
102
1900. Metodo di Heun
Nell’articolo di Runge abbiamo visto che si può migliorare
l’ordine di approssimazione dei metodi di soluzione
considerando combinazioni di approssimazioni. Nel 1900
Karl Heun sistematizza questa possibilità. Egli prende
ispirazione dal metodo delle quadrature di Gauss.
Heun, successivamente, mostra la possibilità di gestire il
caso di sistemi di equazioni. Inoltre il metodo di Heun fu
usato per la prima integrazione di un sistema di equazioni
differenziali da un calcolatore ENIAC.
103
1901. Metodo di Kutta
M.W.Kutta ha proposto nel
1901, un modo di perfezionare
le formule di Heun.
Non è semplice fare una
distinzione tra i metodi
di Heun, Kutta e Runge.
Più che una progressione
nel tempo ogni autore,
raffinando i metodi, si
riferisce al lavoro di un
predecessore.
104
1883. John Adams (differenze finite)
Nel
1883
Adams,
analogamente
alle
quadrature
approssimate, ha proposto di utilizzare le differenze finite
(Gregory). Adams ha proposto due formule che forniscono
valori sufficientemente accurati.
Mentre i metodi di Runge, Heun e Kutta erano ispirati ai
metodi di Eulero e Gauss di tradizione tedesca, i metodi
multi-step presentati da Adams derivano dalle formule
Gregory-Newton di tradizione inglese.
E’ significativo notare, alla fine del 19° secolo, l’utilizzo
di tali metodi da parte di Sheppard per migliorare le
tavole numeriche e dell’astronomo Darwin per calcolare le
orbite dei pianeti.
105
Approssimazione di Funzioni
… per mostrare i difetti dei risultati che essi (i fisici) accettano
senza domande, non è necessario estirpare funzioni mostruose come
funzioni continue senza derivate; il fenomeno Runge mostra che la
procedura di interpolazione polinomiale classica può sicuramente
essere divergente per funzioni analitiche che sono eccellenti come
desiderato.
Jean Diedonné, Calcul Infinitésimal, 1968
L’idea di approssimare una funzione è stata già introdotta con
l’interpolazione. Con l’interpolazione costruiamo una funzione che
assume valori specifici per un numero finito di valori della variabile,
con l’approssimazione, invece, cerchiamo una funzione che approssimi
al meglio i valori di altre funzioni, per tutti i valori di un certo
intervallo.
 Approssimazione
Schoenberg)
Uniforme
(Taylor,
Lagrange,
Chebyshev,
 Approssimazione Quadratica Media (Fourier)
106
1715. La formula di Taylor
La formula di Taylor era già nota a James Gregory
(lettera a Collins del 15 febbraio 1671), ma fu pubblicata
per la prima volta nel 1715 da Brook Taylor nel suo
Methodus incrementorum directa et inversa.
Pn(x) = f(x0)+f'(x0)(x-x0)+
1/2!f''(x0)(x-x0)2+
1/3!f'''(x0)(x-x0)3+
....+
1/n!f(n)(x0)(x-x0)n
Le varie varianti della formula di Taylor producono approssimazioni
polinomiali di funzioni, purchè siano sufficientemente differenziabili.
107
1797. Il resto di Lagrange
Joseph-Louis Lagrange ha pubblicato un
lavoro didattico nel 1797, La Théorie des
Fonctions analytiques, nel quale propone di
porre
i
fondamenti
del
calcolo
differenziale.
Egli dimostra il teorema di Taylor e
prevede un intervallo limitato per il resto
nell’espansione di Taylor.
108
1859. Polinomiale di Chebyshev’s
Chebyshev affronta, nel 1854, il problema di ridurre a
zero l’errore per una polinomiale di grado n e, nel 1859, lo
tratta in modo più generale.
109
1940. Spline-Fitting
La ricerca per la migliore approssimazione uniforme di
funzioni continua al principio del 20° secolo, in particolare
con Charles De la Vallée-Poussin e con Sergei Bernstein.
Le funzioni “spline” sono state definite e studiate per la
prima volta da Schoenberg nel 1940.
110
1807. Serie di Fourier
Eulero ha esaminato le serie trigonometriche dal 1730 ed
ha prodotto espansioni di funzioni periodiche come serie
trigonometriche
nella
sua
Memoria
del
1749
sull’irregolarità delle orbite di Saturno e Giove.
Subito dopo Clairaut ha prodotto espressioni per i
coefficienti di Fourier di una funzione.
Nello stesso periodo, d’Alembert studiava il problema delle
stringhe vibranti.
Nel 1753, Daniel Bernoulli si propone di trovare soluzioni
in forma di serie trigonometriche.
111
Serie di Fourier
La teoria non aveva solide basi fino al lavoro di Fourier.
L’essenza delle sue idee è contenuta in una memoria
proposta all’Accademia delle scienze di Parigi nel 1807 e
di nuovo nel suo lavoro del 1822, Theorie analytique de la
Chaleur.
Poisson e Cauchy hanno contribuito
allo studio delle serie di Fourier.
Dirichlet dal 1822 al 1826 ha
condotto un rigoroso studio sulla
convergenza delle serie di Fourier.
112
1965. Fast Fourier Transform
Le trasformazioni di Fourier richiedono un numero di
moltiplicazioni pari a N2.
Cooley e Tukey hanno descritto, nel 1965, un metodo
migliorativo che richiede un numero di moltiplicazioni pari a
NlogN. Il metodo è noto come Fast Fourier Transform o
algoritmo FFT.
113
Accelerazione di convergenza
Sebbene il primo uso del termine convergenza può essere
attribuito a Gregory nel 1668, il concetto di convergenza,
come è utilizzato oggi, non è stato definito esplicitamente
fino al 19° secolo.
Poincaré ha avuto un ruolo fondamentale nella teoria delle
somme. Egli, nel Les methodes nouvelles de la Mécanique
céleste, spiega gli approcci differenti al significato di
convergenza.
114
1730. Metodo di Stirling
Nella
Tractatus de Summatione et
Serierum Infinitarum (1730) J.Stirling
prefazione
Interpolatione
del
annuncia i suoi obiettivi.
Poiché spesso accade che le serie convergono così
lentamente da non arrivare a termine come se fossero
divergenti, egli fornisce dei teoremi per raggiungere
velocemente i valori di quelle serie il cui approccio è più
lento.
115
1742. Formula Eulero-Maclaurin
Nel 1734, Bishop George Berkeley critica l’assenza di
fondamenti rigorosi al lavoro di Newton. Per rispondere a
queste critiche MacLaurin scrive il suo Treatise on Fluxions
nel 1737, ma appare nel 1742.
116
1736. La costante di Eulero
Nel 1736, Leonhard Euler
ha
pubblicato
nei
Commentarii
academiae
scientiarum Petropolitanae,
un articolo riguardante la
dimostrazione
e
l’applicazione della formula
Euler-Maclaurin.
117
1926. Il metodo di Aitken
In un articolo pubblicato nel 1926, Aitken ha
proposto una estensione del metodo di Bernoulli
delle serie ricorrenti.
118
1926. Il metodo di estrapolazione di Richardson
L’idea del metodo è di utilizzare una combinazione lineare
di formule per poter affinare l’approssimazione. Il metodo
fu stabilito formalmente nel 1911 da Richardson. La
teoria fu presentata di nuovo da Richardson nel 1927,
questa volta prendendosi cura di spiegarla.
Applichiamo la formula all’integrale
Diamo una tabella per mostrare la velocità di convergenza:
per n = 1, 2, 4, 8, 16
119
1955. Il metodo di integrazione di Romberg
Il metodo di Romberg è semplicemente la
formula
di
Richardson
applicata
iterativamente alla funzione approssimata
trapezio T(h).
120
Verso il concetto di algoritmo
La maggior parte di algoritmi erano utilizzati molto tempo
prima che si sia reso necessario dare una chiara
definizione del significato di algoritmo.
Il termine algoritmo, che significa procedimento di calcolo,
è una versione moderna del termine latino medioevale
algorismus, che deriva dal nome del matematico
Mohammed ibn-Musa-al-Khowarismi, vissuto nel IX secolo
d.C. e famoso per aver scritto un noto trattato di
algebra.
Oggi un algoritmo è definito come un insieme finito e
organizzato di istruzioni, in grado di fornire la soluzione
ad un problema.
121
Nel 1930 i matematici sentono il bisogno di ricercare che
cosa precisamente costituisce un algoritmo e proporre una
definizione del concetto di algoritmo.
17° secolo. Leibniz immagina un linguaggio a carattere
universale capace di ridurre i ragionamenti matematici a
semplici calcoli.
1821. Charles Babbage spiega come i ragionamenti
matematici
possono
essere
trasformati
quasi
meccanicamente utilizzando simboli algebrici.
122
1854. Boole propone una algebrizzazione della logica.
Inoltre introduce una notazione formale per decidere se
una proposizione è vera o falsa.
1885. Pierce estende la logica algebrica alla teoria delle
leggi di De Morgan e introduce le Tavole di Verità.
1879. Frege da una prima logica formalizzata.
1889.
Peano introduce un linguaggio formalizzato per
l’aritmetica.
123
1928. Hilbert
Nel 1890 Hilbert sviluppa una concezione formale della matematica.
Nel 1904 spiega che vorrebbe ridurre tutta l’aritmetica a logica e
formalizza ciò nel 1922.
Al congresso internazionale del 1928 Hilbert ha proposto un
programma di ricerca in forma di problemi. Egli pone tre questioni
fondamentali di matematica:
1. La matematica è completa, ossia ogni statement matematico può
essere dichiarato valido o non valido ?
2. La matematica è consistente, ossia è impossibile dimostrare sia
uno statement che la sua contraddizione ?
3. La matematica è decidibile, ossia esiste una procedura con la quale
si può decidere se uno statement matematico è vero ?
Meno di dieci anni più tardi si è visto che non era possibile dare una
risposta affermativa alle domande di Hilbert.
124
1931. Godel
Nel
1931
Kurt
Godel
dimostra
l’incompletezza
dell’aritmetica: esistono proposizioni in aritmetica per le
quali è impossibile dimostrare se sono vere o false. Per
dimostrare il teorema Godel introduce la nozione di
funzione ricorsiva. Nel 1934 egli da una corso a Princeton
e definisce il concetto generale di funzione ricorsiva.
125
1936. Church
Il lavoro di Godel ha inspirato le ricerche di Alonzo
Church, Stephen Kleene, Alan Turing ed Emil Post.
Questi matematici dimostrano che esistono problemi
indecidibili, ossia proposizioni matematiche per le quali non
esistono procedure con le quali possiamo dire se la
proposizione è vera o falsa. Per fare ciò ognuno da un
concetto di algoritmo.
Il
concetto
di
funzione
ricorsiva
è
l’argomento
centrale del lavoro di Church.
126
1936. Kleene
L’articolo di Kleene del 1936, intitolato Funzioni Generali
Ricorsive di Numeri Naturali, riguarda principalmente il
concetto di funzione ricorsiva e l’equivalenza tra
definizioni differenti.
Il problema dell’equivalenza tra tutti i
concetti di calcolabilità stabiliti tra il 1931
e il 1936 è fondamentale:
 Garantisce
la
coerenza
risultati ottenuti
dei
 Conferma se il concetto di
algoritmo
corrisponde
alla
nozione di algoritmo e alla
nozione intuitiva che abbiamo di
esso.
127
1936. La macchina di Turing
Il concetto di macchina è l’idea chiave dell’articolo di
A.M.Turing del 1936. Il problema è di specificare
precisamente cosa significa “con un effettivo processo di
calcolo” o “un algoritmo per calcolare”. Questa questione
porta Turing a definire ciò che oggi chiamiamo la
“macchina di Turing”.
Una macchins di Turing è composta di:
 un nastro composto di celle contenenti simboli
appartenenti ad un alfabeto finito
 un’unità centrale che può assumere un numero finito
di stati
 una testina di lettura-scrittura che permette la
comunicazione tra l’unità centrale e il nastro
128
1936. La macchina di Post
Pochi mesi dopo Turing e abbastanza indipendentemente,
Emil L.Post propone una macchina per definire un processo
che potrebbe risolvere un problema generale.
Post non parla di macchina sebbene le sue descrizioni
somigliano al nostro concetto di computer. Quello che Post
chiama box può essere la nostra memoria, che può essere
vuota o contenere un valore. Il suo insieme di istruzioni può
essere confrontato ad un programma con salti. E’
appropriato descrivere questa formulazione minimale come
formulation 1. Infatti solo un simbolo alla volta può essere
immesso in memoria e questo può essere spostato solo ad
una cella contigua.
129
Il campo degli algoritmi.
Con l’introduzione del concetto di algoritmo si introduce un
nuovo campo di scienza: il campo degli algoritmi.
Pur se la teoria degli algoritmi si è andata assestando
nella prima metà del XX° secolo, le tecniche per
progettare algoritmi e per analizzarne la correttezza e
l’efficienza si sono evolute nella seconda metà del secolo,
grazie alla enorme diffusione dei calcolatori elettronici.
130
Il campo degli algoritmi.
Gli
algoritmi vengono comunemente descritti tramite
programmi, che si avvalgono di istruzioni e costrutti dei
linguaggi di programmazione e che devono essere eseguiti
da calcolatori elettronici.
Lo studio degli algoritmi coinvolge il concetto di
complessità di un algoritmo ossia il costo in termini di
tempo e quantità di memoria richiesta.
131
1945. Merge Sort
Sembra che J. Von Neumann, uno dei pionieri
dell’informatica, abbia scritto nel 1945 un programma di
merge sort per il calcolatore EDVAC.
Divide et Impera
5
2
2
4
4
5
2
6
4
5
1
Algoritmo di sort
1
6
1
2
3
4
2
3
1
6
2
3
5
6
2
2
6
Tempo di Esecuzione:
3
6
6
6
O(nlgn132)
1947. Algoritmo del simplesso
Nella teoria dell’ottimizzazione matematica l’algoritmo
simplex di George Dantzig è la tecnica fondamentale per
soluzioni numeriche dei problemi di programmazione
lineare.
Dato
un
sistema
di
disequazioni lineari su un
numero n di variabili reali,
l’algoritmo
fornisce
un
metodo pratico per trovare
la
soluzione
ottimale
rispetto ad una funzione
lineare fissata.
133
1952. Huffman coding
L’algoritmo di codifica di Huffman sviluppato da David A.
Huffman nel 1952 è un algoritmo usato per la
decompressione dei dati.
L’algoritmo trova il sistema
ottimale di codificare stringhe
basato sulla frequenza relativa
di ogni carattere.
134
1954. Radix Sort
Un algoritmo per il radix sort fu inventato nel 1954 al
MIT da Harold H. Seward.
Tuttavia l’ordinamento radix sort rispetto alla cifra meno
significativa sembra che fosse un algoritmo noto, già
ampiamente usato da operatori di macchine meccaniche
ordinatrici di schede.
Secondo Knuth la prima pubblicazione su questo metodo si
trova in un documento del 1929 di L.J.Comrie che
descrive le macchine perforatrici di schede.
Algoritmo di sort
135
Radix Sort
Il radix sort ordina una sequenza di numeri di n cifre
ordinando prima sulla cifra meno significativa, poi
l’intero blocco è ordinato di nuovo sulla seconda cifra
meno significativa e cosi via.
329
720
720
329
457
355
329
355
657
436
436
436
839
457
839
457
436
657
355
657
720
329
457
720
355
839
657
839
Algoritmo di sort
136
1954. Counting Sort
Knuth attribuisce ad H.H. Seward sia la progettazione del
counting sort (1954), sia l’idea di combinare il counting
sort con il radix sort.
Il counting sort si basa sull’ipotesi che ognuno degli n elementi di
input sia un intero nell’intervallo da 1 a k. L’idea di base è di
determinare, per ogni elemento x di input, il numero di elementi
minori di x. Questa informazione può essere usata per porre
l’elemento x direttamente nella sua posizione nell’array di output.
Tempo di Esecuzione:
Se K=O(n)
Algoritmo di sort
O(k+n)
Tempo di Esecuzione:
O(n)
137
1956. Algoritmo di Kruskal
L’algoritmo di Kruskal, sviluppato da Joseph Kruskal nel
1956, è un’elaborazione dell’algoritmo generico per trovare
un albero di copertura minimo.
Tempo di Esecuzione :
O(ElgE)
dove E è il numero di archi
Algoritmo sui grafi
138
1956. Bucket Sort
L’algoritmo Bucket Sort fu proposto da E.J.Isaac e
R.C.Singleton.
Il bucket sort assume che l’input sia generato da un processo casuale
che distribuisce gli elementi in modo uniforme sull’intervallo [0,1).
L’idea del bucket sort è di dividere l’intervallo [0,1) in n sottointervalli
di uguale dimensione, detti bucket (secchi), e quindi distribuire gli n
numeri nei bucket. Per produrre l’output, si ordinano i numeri di ogni
bucket e quindi si elencano gli elementi di ogni bucket prendendoli in
ordine.
Tempo di Esecuzione nel caso medio:
Algoritmo di sort
O(n)
139
1957. Algoritmo di Prim
L’algoritmo, sviluppato da Robert
Prim nel 1957, è un’elaborazione
dell’algoritmo generico per trovare
un albero di copertura minimo.
Tempo di Esecuzione :
O(ElgV)
dove V è il numero di vertici
ed E è il numero di archi
O(E+VlgV) se si usa un heap di Fibonacci
Algoritmo sui grafi
140
1957. Algoritmo di Bellman-Ford
L’algoritmo sviluppato da
R. Bellman and L. R. Ford
calcola il cammino più corto in un grafo pesato.
Tempo di Esecuzione :
O(VE)
Algoritmo sui grafi
dove V è il numero di vertici
ed E è il numero di archi
141
1959. Algoritmo di Dijkstra
L’algoritmo sviluppato da Edsger Dijkstra risolve il problema
di cammini minimi con sorgente singola su un grafo orientato
e pesato G=(V,E) nel caso in cui tutti i pesi degli archi
siano non negativi.
Tempo di Esecuzione :
Algoritmo sui grafi
O(V2)
142
1959. Shell Sort
L’algoritmo fu sviluppato da D.L. Shell.
Lo shell sort è una variante dell’algoritmo di insertion sort. Esso usa
insertion sort su sottosequenze periodiche dell’input ottenendo un
algoritmo di ordinamento più veloce.
3
1
1
1
5
5
2
2
1
3
3
3
2
2
5
4
4
4
4
5
Algoritmo di sort
143
1962. Quicksort
L’algoritmo sviluppato da Charles Antony Richard Hoare
utilizza il paradigma divide-et-impera.
4
2
3
5
1
pivot
1
2
3
5
4
1
2
3
4
5
Algoritmo di sort
144
1962. Ford-Fulkerson
L’algoritmo sviluppato da L. R. Ford e D. R. Fulkerson
risolve il problema di flusso massimo per reti di flusso.
Esistono diverse realizzazioni dell’algoritmo con differenti
tempi di esecuzione.
Algoritmo sui grafi
145
1964. Heapsort
L’algoritmo heapsort fu progettato da J. W. J. Williams
che descrisse anche come realizzare una coda con priorità
tramite uno heap. La procedura BUILD-HEAP fu proposta
da Floyd.
16
8
14
8
2
7
4
10
14
2
10
8
4
4
1
Algoritmo di sort
2
7
1
9
16
9
8
4
3
2
7
14
1
16
146
3
Heapsort
8
9
3
8
4
10
7
14
1
3
7
2
4
10
16
2
14
10
14
3
16
1
10
8
14
1
10
10
4
7
14
16
1
2
4
7
14
16
9
16
2
2
9
8
2
3
2
7
3
4
9
1
16
4
1
7
8
3
1
9
10
4
7
14
16
8
3
8
9
147
9
1965. Cooley-Tukey
L’algoritmo riscoperto da James Cooley and John Tukey è
il più comune algoritmo fast Fourier trasform (FFT).
L’algoritmo era già noto nel 1805 per opera di Gauss, ma
diventa popolare nel 1965 quando J.W.Cooley dell’IBM e
J.W.Tukey di Princeton lo reinventano per eseguirlo su un
computer.
Algoritmo FFT
148
1965. Distanza di Levenshtein
La distanza di Levenshtein tra due stringhe è data dal
numero minimo di operazioni necessarie per trasformare
una stringa in un’altra, dove un’operazione è un
inserimento, una cancellazione o una sostituzione.
caso
casa
cassa
2
int LevenshteinDistance(char s[1..n], char [1..m])
declare int d[0..n,0..m]
declare int i, j, cost
for i := 0 to n
d[i,0] := i
for j := 0 to m
d[0,j] := j
for i := 1 to n
for j := 1 to m
if s[i] = t[j] then cost := 0
else cost := 1 d[i,j] := minimum(d[i-1,j ] + 1, // ins.
d[i, j-1] + 1, // canc.
d[i-1,j-1] + cost) // sost.
return d[n,m]
Algoritmo su stringhe
149
1965. CYK
L’algoritmo
Cocke-Younger-Kasami,
sviluppato
da
T.Kasami, determina se e come una stringa può essere
generata da una data grammatica context-free.
Lo
stesso
algoritmo
(CYK)
è
stato
sviluppato
indipendentemente da D. H. Younger nel 1967.
Tempo di Esecuzione :
O(n3)
dove n è la lunghezza della stringa
Algoritmo su stringhe
150
1967. Viterbi
L’algoritmo proposto da Andrew Viterbi è un modo per
trovare la sequenza più probabile di stati nascosti che
risultano in una sequenza di eventi osservati.
L’algoritmo trova la sua applicazione nella decodifica di
codici nei cellulari digitali GSM, modem, satelliti,
comunicazioni spaziali, ecc…
151
1972. Graham
L’algoritmo
Graham
scan
sviluppato da Ronald Graham è
un
metodo
per
calcolare
l’inviluppo convesso di un dato
insieme di punti nel piano.
Tempo di Esecuzione :
O(nlogn)
dove n è il numero di punti
Algoritmo geometrico
152
1973. RSA
L’algoritmo di crittografia RSA, sviluppato da Clifford
Cocks, è un algoritmo asimmetrico per crittografia a
chiave pubblica, ampiamente usato nel commercio
elettronico.
L’algoritmo fu descritto nel 1977 da Rivest, Shamir e
Adleman; le lettere RSA sono le iniziali dei loro cognomi.
Cocks, un matematico inglese che lavorava per GCHQ, ha
descritto un sistema equivalente in un documento interno
nel 1973. A causa della classificazione top-secret, la sua
scoperta non è stata resa nota fino al 1997.
Algoritmo di crittografia
153
1973. Jarvis
L’algoritmo Jarvis, sviluppato da R. A. Jarvis, calcola
l’inviluppo convesso di un insieme Q di punti attraverso
una tecnica conosciuta come impacchettamento.
Tempo di Esecuzione :
O(NK)
dove N è il numero di punti
e K il numero di vertici di CH(Q)
Algoritmo geometrico
154
1975. Algoritmo genetico
L’algoritmo genetico (GA), divulgato da John Holland, è un
algoritmo usato per trovare soluzioni approssimate a
problemi difficili da risolvere attraverso l’applicazione dei
principi di biologia evolutiva alla scienza dei computer.
155
1975. Aho-Corasick
L’algoritmo Aho-Corasick, sviluppato da Alfred V. Aho
and Margaret J. Corasick, è un algoritmo di ricerca
stringhe che esamina un testo per un elemento di un
insieme finito di stringhe.
Algoritmo su stringhe
156
1976. Knuth-Morris-Pratt
L’algoritmo Knuth-Morris-Pratt, sviluppato da
Donald
Knuth and Vaughan Pratt e indipendentemente da J. H.
Morris, è un algoritmo per la corrispondenza tra stringhe.
Tempo di Esecuzione :
O(n+m)
dove n è la lunghezza della stringa principale
e m è il numero di caratteri nella stringa
Algoritmo su stringhe
157
1977. LZ77
1978. LZ78
LZ77 e LZ78, sviluppati da Abraham Lempel e Jacob
Ziv, sono algoritmi di compressione dati lossless (bassa
perdita).
Questi due algoritmi
formano la base per la
maggior parte delle
variazioni LZ compreso
LZW, LZSS ed altri.
Algoritmo di compressione
158
1981. Quadratic Sieve
Quadratic Sieve (QS), sviluppato da Carl Pomerance, è
un algoritmo di fattorizzazione di un intero.
Il tempo di esecuzione dipende dalla grandezza
dell’intero.
Algoritmo di teoria dei numeri
159
1983. Simulated annealing
Simulated annealing è un approccio probabilistico generico
al problema di ottimizzazione globale.
L’algoritmo è stato sviluppato indipendentemente da S.
Kirkpatrick, C. D. Gelatt ed M. P. Vecchi nel 1983 e da
V.Cerny nel 1985.
1 T := T0
2 S := S0
3 E := objective(S)
4 k := 0
5 while terminal condition not true
6
S_new := move(S, T)
7
E_new := objective(S_new)
8
if E_new < E or random() < acceptor(E_new - E, T)
9
S := S_new
10
E := E_new
11
T := schedule(T0, k)
12
k := k + 1
160
1984. LZW
LZW (Lempel-Ziv-Welch)
, sviluppato da Terry
Welch, è un algoritmo di
compressione
dati
lossless (perdita minore).
Quest’algoritmo
deriva
dagli algoritmi LZ77 e
LZ78.
Algoritmo di compressione
161
1988. SNFS
Special Number Field Sieve, sviluppato da John Pollard,
è un algoritmo di fattorizzazione di un intero.
Tempo di Esecuzione :
Algoritmo di teoria dei numeri
162
1990. GNFS
General Number Field Sieve, sviluppato dal SNFS da Carl
Pomerance, Joe Buhler, Hendrik Lenstra, e Leonard
Adleman, è il più efficiente algoritmo conosciuto per
fattorizzare interi.
L’algoritmo utilizza
O(exp( ((64/9) n)1/3 (log n)2/3 ))
passi per fattorizzare l’intero n.
Algoritmo di teoria dei numeri
163
1991. IDEA
IDEA (International Data Encryption Algorthm) è stato
progettato da Xuejia Lai e James L. Massey.
Algoritmo di crittografia
164
1991. MD5
L’algoritmo MD5 è un algoritmo message digest con un
valore hash a 128 bit. Esso è uno della serie di algoritmi
message digest sviluppati dal professor Ronald Rivest del
MIT.
MD5 è stato ampiamente utilizzato ed era ritenuto
crittograficamente sicuro. Nel 1994 si scopre una
debolezza che rende l’ulteriore utilizzo del MD5
discutibile. In particolare si è visto che era possibile
generare collisioni.
Algoritmo di crittografia
165
1992. Deutsch-Jozsa
Deutsch-Jozsa, proposto da D. Deutsch e R. Jozsa, è
un algoritmo quantum. E’ uno dei primi esempi di algoritmi
quantum (migliori degli algoritmi convenzionali).
Un computer quantum è un dispositivo di calcolo che fa
uso di fenomeni di meccanica quantistica. In un computer
classico i dati sono misurati in bit. In un computer
quantum i dati sono misurati in qubit
Algoritmo quantum
166
1994. Burrows-Wheeler
Burrows-Wheeler transform (BWT), sviluppato da
Michael Burrows and David Wheeler, è un algoritmo usato
nelle tecniche di compressione dati.
La
trasformazione
avviene
ordinando tutte le rotazioni della
stringa
e
prendendo
l’ultima
colonna.
Algoritmo di compressione
167
1995. SHA-1
SHA-1 (Secure Hash Algorithm) è un algoritmo “message
digest” progettato dalla NSA (National Security Agency)
e pubblicato da NIST (National Institute of Standard
and Tecnology).
Algoritmo di crittografia
168
1996. RIPEMD-160
RIPEMD-160
(RACE
Integrity
Primitives
Evaluation
Message
Digest) è un algoritmo
message
digest
a
160-bit, sviluppato da
Hans
Dobbertin,
Antoon Bosselaers, e
Bart Preneel.
Algoritmo di crittografia
169
1999. Yarrow
Yarrow, progettato da Bruce Schneier, John Kelsey e
Niels Ferguson, è un generatore di numeri pseudo-casuali
crittograficamente sicuro.
Il nome deriva dalla pianta
yarrow, i cui steli sono seccati e
utilizzati come agente casuale
nella divinazione “I Ching”.
Algoritmo di crittografia
170
2000. Rijndael
Rijndael cypher, sviluppato da Joan Daemen e Vincent
Rijmen, è un algoritmo block cipher a chiave simmetrica.
Dopo
una
competizione Rijndael
fu selezionato come
il successore di DES
ed
è
diventato
Advanced Encryption
Standard (AES).
Algoritmo di crittografia
171
2001. AES
AES (Advanced Encryption Standard) cypher è
un algoritmo basato sul Rijndael e adottato dal
NIST (National Institute of Standards and
Technology).
In crittografia AES è un block cipher adottato
come standard dal governo US. Si pensa che
venga utilizzato in modo universale e analizzato
radicalmente.
Algoritmo di crittografia
172
2002. AKS
AKS (primality test), sviluppato da Manindra Agrawal,
Neeraj Kayal e Nitin Saxena del IIT Kanpur, è un
algoritmo deterministico di tipo polinomiale che determina
se un numero è un numero primo.
AKS ha una differenza
chiave rispetto ad altri
algoritmi precedenti sulla
primalità: non richiede
alcuna
ipotesi
non
dimostrata per ottenere
un tempo polinomiale su
tutti gli input.
Algoritmo di teoria dei numeri
173
Link
http://www.cut-the-knot.org/Curriculum/index.shtml
http://it.wikipedia.org/wiki/Storia_della_matematica
http://www.utm.edu/research/primes/prove/proving.html
http://faculty.ed.umuc.edu/~swalsh/Math%20Articles/MathArt.html
174
Link
encyclopedia.thefreedictionary.com/Timeline%20of%20algorithms
www.informationblast.com/Timeline_of_algorithms.html
www.nationmaster.com/encyclopedia/Timeline-of-algorithms
phatnav.com/wiki/wiki.phtml?title=Timeline_of_algorithms
Bibliografia
A History of Algorithms: From the Pebble to the Microchip
by Jean-Luc Chabert, E. Barbin
Introduzione agli algoritmi
Thomas H. Cormen, Charles E. Leiserson, Ronald L.Rivest
Jackson Libri
Il Teorema del pappagallo Denis Guedj
175