Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Appunti di MATEMATICA COMPUTAZIONALE - Parte 2, Appunti di Matematica Computazionale

Argomenti trattati: continuazione della prima parte,calcolo di quoziente e resto tra polinomi,quanto costa calcolare i Bi,IDFT generale,Cooley-Tukey per n dispari e composto,forma matriciale,generale n=pq,interpolazione geometrica,crittografia,crittografia a chiave pubblica,Eulero,Lagrange,sistema a chiave pubblica RSA,operazioni per RSA,operazioni aritmetiche,algoritmo di Euclide esteso,test di primalità ,Miller-Rabin,Teorema cinese del resto

Tipologia: Appunti

Pre 2010

Caricato il 29/12/2009

Kikka84
Kikka84 🇮🇹

4.3

(92)

75 documenti

1 / 27

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
27
vj=y
ajmod nwj=zajmod nYj=z0+Y
dove
Y=
1 1 1 1 1
1
1C
1
1
·
z0
z1
z2
.
.
.
zn1
Y=C
z1
z2
z3
.
.
.
zn1
Esempio
v0=y
1v1=y
2v2=y
4v3=y
3
w0=z1w1=z3w2=z4w3=z2
Noi sappiamo che
y
h=
n1
X
j=1
ωhjzj
e che
vk=y
akmod n=
n1
X
j=1
ω(akmod n)jzj=
=
n2
X
t=0
ω(akmod n)(atmod n)zatmod n=
=
n2
X
t=0
ω(a(kt)mod n)wt=
=
n2
X
t=0
ω(a(kt) mod n1) wt(3.4)
Definiamo qs=ωase abbiamo
vk=
n2
X
t=0
q((kt) mo d (n1))wt
v=
qO
w
Siamo arrivati alla convoluzione.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Anteprima parziale del testo

Scarica Appunti di MATEMATICA COMPUTAZIONALE - Parte 2 e più Appunti in PDF di Matematica Computazionale solo su Docsity!

vj = y a′j (^) mod n wj = za−j (^) mod n Yj = z 0 + Y ′

dove

Y =

1 C

z 0 z 1 z 2 .. . zn− 1

Y ′^ = C

z 1 z 2 z 3 .. . zn− 1

Esempio

v 0 = y′ 1 v 1 = y′ 2 v 2 = y′ 4 v 3 = y′ 3 w 0 = z 1 w 1 = z 3 w 2 = z 4 w 3 = z 2

Noi sappiamo che

y′ h =

∑^ n−^1

j=

ωhj^ zj

e che

vk = y a′k (^) mod n =

∑^ n−^1

j=

ω(a k (^) mod n)j zj =

n∑− 2

t=

ω(a

k (^) mod n)(a−t (^) mod n) za−t (^) mod n =

n∑− 2

t=

ω(a (k−t) (^) mod n) wt =

n∑− 2

t=

ω(a

(k−t) mod n−1) wt (3.4)

Definiamo qs = ωa s e abbiamo

vk =

∑^ n−^2

t=

q((k−t) mod (n−1))wt

−→v = −→q ⊗^ −→w

Siamo arrivati alla convoluzione.

Rimane da dimostrare che:

ωa

(k−t) = ωa

s dove s = (k − t) mod (n − 1)

Infatti se s = (k − t) + λ(n − 1) e ricordando an−^1 ≡n 1

ωa

s = ωa

(k−t)+λ(n−1)

= ωa (k−t)·aλ(n−1) = = ωa

(k−t)·(1+μn

= ωa (k−t)+a(k−t)μn = = ωa

(k−t) · ωa

(k−t)μn ︸ ︷︷ ︸ 1

= ωa

(k−t)

a 0 b 0 = 1 b 0 =

a 0 a 0 b 1 + b 0 a 1 = 0 b 1 = −

b 0 a 1 a 0 b 2 = −

a 1 b 1 + a 2 b 0 a 0 .. . in generale avrò { B 0 (x) = (^) a^10 Bi+1(x) = 2Bi(x) − B i^2 (x)Ai+1(x)

Mostriamo che

A(x)Bi(x) = 1 + x^2 i Ri(x)

Per induzione i= A(x)B 0 (x) = 1 + a a^10 x + a a^20 x^2 +... = 1 + x^2 0 R 0 (x)

A(x)Bi+1 = 2 A(x)Bi(x) − (Bi(x)A(x))^2 =

= 2

1 + x^2

i Ri(x)

1 + x^2

i Ri(x)

= 2+ 62 x^2

i Ri(x) − 1 − 6 2 x^2

i Ri(x) − x^2

i+ R^2 i (x) = = 1 − x^2

i+ R^2 i (x)

−R^2 i (x) = Ri+1(x)

1 + x^2 i+ Ri+1(x)

perchè Bi+1(x) è come abbiamo scritto. Questo metodo prende spunto dal metodo di Newton per calcolare l’in- verso di un numero. Cioè: x = (^1) k f (x) = (^1) x − k xi+1 = xi − (^) ff ′((xxii)) f ′(xi) = − (^) x^12 1 xi+1 = xi −

x −^ k

(−x^2 i ) = 2xi − kx^21 Pongo xi = Bi(x) e k = A(x) e trovo la formula.

4.1 Quanto costa calcolare i B˜i 31

Lemma 3 Se A(x)Bi(x) = 1 + x^2 i Ri(x) allora i primi 2 i^ coefficienti di Bi(x) coincidono con i primi (^2) i coefficienti di B(x) tale che A(x)B(x) = 1

Dimostrazione Sia βxα^ il coefficiente di grado minimo di B(x) − Bi(x)

A(x) (B(x) − Bi(x)) = 1 −

1 + x^2 i Ri(x)

= −x^2 i Ri(x)

A(x) (B(x) − Bi(x)) = A(x) (βxα^ + β 1 xα+1^ + β 2 xα+2^.. .) = a 0 βxalpha+

... α ≥ 2 i

{ B˜ 0 (x) = − 1 a 0 B^ ˜i+1(x) = 2 B˜i(x) −

B˜^2 i (x)Ai+1(x)

mod x^2 i+1 (4.3)

dove Ai(x) = A(x) mod x^2 i

quindi B˜i+1(x) ha grado ≤ 2 i+1^ − 1

A(x) B˜i(x) = 1 + x^2

i (^) ˜ Ri(x)

4.1 Quanto costa calcolare i B˜i

Calcolare B^ ˜i+1(x) costa Θ ((i + 1)2i+1) operazione B^ ˜i(x) costa Θ (i 2 i) operazione

Quanto costa calcolare B˜n?

∑^ n

i=

Θ(i 2 i) = Θ

( (^) n ∑

i=

i 21

T = 1 · 21 + 2 · 22 + 3 · 23 +... + n · 2 n 2 T = 1 · 22 + 2 · 23 + 3 · 24 +... + n · 2 n+

4.1 Quanto costa calcolare i B˜i 33

Ora da a(x) riesco a passare ad ˜a(y), da b(x) a ˜b(y), se trovo q˜ ed r˜ posso poi trovare quello che cercavo e cioè q ed r. Il passare ai tilde, mi serve per l’informazione che ho appena scritto sopra, cioè sappiamo il termine di grado minore di r˜. Considero ˜s(y) tale che ˜s(y)˜b(y) = 1

˜s(y)˜a(y) = ˜q(y) + ˜r(y)˜s(y) Quindi

˜q(y) = ˜s(y)˜a(y) − ˜r(y)˜s(y) Dove deg(˜q) ≤ n − m e ˜r(y)˜s(y) ha coefficienti di grado ≥ xn−l. Essendo l < m =⇒ n − l > n − m i coefficienti di q˜ sono dati dai primi n − m + 1 coefficienti di ˜a(y)s˜(y) che posso calcolare dati i primi n − m + 1 coef di ˜s(y).

Esempio

a(x) = x^4 + x^3 − 3 x^2 − 2 x + 3 n = 4 b(x) = x + 1 m = 1 deg(q(x)) = 3 infatti n − m = 3 r(x) costante l = 0 ˜a(y) = 1 + y − 3 y^2 − 2 y^3 + 3y^4 ˜b(y) = 1 + y

˜s(y) = 1 − y + y^2 − y^3 +...

˜q = s˜(y) · ˜a(y) =

1 + y − 3 y^2 − 2 y^3 + 3y^4

1 − y + y^2 − y^3

= 1 − 6 y+ 6 y^2 − 6 y^3 + 6 y− 6 y^2 + 6 y^3 − 6 y^4 − 3 y^2 + 3y^3 − 2 y^3 = = 1 − 3 y^2 + y^3

Facciamo una verifica a(x) − q(x)b(x) = x^4 + x^3 − 3 x^2 − 2 x + 3 − x^4 + 3x^2 − x − x^3 + 3x − 1 = 2

Capitolo 5

IDFT generale

5.1 Cooley-Tukey per n dispari e composto

Cominciamo con n = 3m

IDFT: dato un polinomio P (t) =

∑^ n−^1

j=

zj tj^ , vogliamo calcolare P

ωkn

per

k = 0, 1 ,... , n − 1 con ωn radire n − esima primitiva. Scriviamo

P (t) =

z 0 + z 3 t^3 +...

z 1 t + z 4 t^4 + z 7 t^7

z 2 t^2 + z 5 t^5 +...

Dove P 0 (x) = z 0 + z 3 x + z 6 x^2 +... P 1 (x) = z 1 + z 1 x + z 7 x^2 +... P 2 (x) = z 2 + z 5 x + z 8 x^2 +...

grado m

P

ωnk

= P 0

ω^3 nk

  • ωknP 1

ωn^3 k

  • ω^2 nk P 2

ω^3 nk

dove ω n^3 = ωm radice primitiva m − esima dell’unità. Per k = 0, 1 ,... , m − 1 tutto va bene

Pn

ωnk

= P 0

ωmt

  • ωnkP 1

ωmk

  • ωn^2 k P 2

ωmk

Per gli altri k devo fare qualche passaggio in più.

  • Per k = m, m + 1,... , 2 m − 1 pongo q = k − m

Pn

ωnk

= Pn

ωnm+q

= P 0

ωmm+q

  • ωmn +qP 1

ωmm+q

  • ω^2 nm +2qP 2

ωmm+q

= P 0 (ωqm) + ωmn +qP 1 (ωqm) +

ω^2 n

)m+q P 2 (ωqm)

5.1 Cooley-Tukey per n dispari e composto 36

congrue a 1 modulo 3 in metà congrue a 2 modulo 3 in basso faccio le trasformate di ordine m, cioè n 3 faccio l’equivalente di somma e differente e poi calcoli.

5.1.2 Generale n = pq

Ancora più in generale considero n = pq. Cosa devo fare:

  1. spezzo il vettore in p vettori di q componenti; nel posto i ci sono le componenti di posto congruo a i modulo p
  2. calcolo p trasformate ognuna di ordine q
  3. l’i-esima trasformata la moltiplico per la matrice Di^ dove:

D =

0 ωn 0 0 0 0 0 ω n^2 0 0 0 0

0 0 0 0 ωq n−^1

       e      

I I I I

I ωpI ω p^2 I... ω pp− 1 I I I I...

I ωjkp I

Bisogna capire bene che cos’è questa matrice. Per semplicità proviamo a capirlo con n=3m. Facciamo i primi passi e arriviamo ad avere un vettore suddiviso i tre parti e devo svolgere questa operazione:

I I I

I ω 3 I ω 32 I I ω^23 Iω 3 I

v(0) v(1) v(2)

v(0)^ + v(1)^ + v(2) v(0)^ + ω 3 v(1)^ + ω^23 v(2) v(0)^ + ω^23 v(1)^ + ω 3 v(2) Quindi sono q trasformate di ordine p

Int GEN_IDFT(double complex z[], int n,double complex w) {

5.1 Cooley-Tukey per n dispari e composto 37

if (n==1) return 1; if (n%2==0) {passa a n/2 usando cooley-turkey} else { p= fattore(n); if(p>1) {fai p trasformate di ordine n/p + n/p trasformate di ordine p} (IDFT_PQ) else IDFT_n_primo; } }

IDFT_PQ(double complex z[],int p, int q,double complex w) %dove w^{pq} =1 e z ha lunghezza pq { Complex vettori; vettori = (complex)malloc(p*sizeof(complex *)); if (vettori== NULL) ERRORE! for (i=0;i

Capitolo 6

Interpolazione trigonometrica

Polinomio trigonometrico:

F (x) =

∑^ m

j=

(α cos jx + β sin jx) grado m

L’interpolazione risulta più facile se si usano punti equistanziati: fissiamo n punti equistanziati nell’intervallo

xk =

2 π n

k k = 0, 1 , 2 ,... , n − 1

Vogliamo trovare il polinomio trigonometrico F (x) tale che F (xk) = f (xk) k = 0, 1 , 2 , , n − 1 ; dove f (x) è la funzione che vogliamo interpolare.

Teorema 5 Il polinomio trigonometrico di interpolazione per f () su xk = 2 π n k,^ k^ = 0,^1 ,^2 ,... , n^ −^1 è dato da:

F (x) =

α 0 2 +

m∑− 1

j=

(αj cos jx + βj sin jx) n = 2m − 1

α 0 2 +

m∑− 1

j=

(αj cos jx + βj sin jx) +

αm 2

cos mx n = 2m

(6.1)

αj =

n

∑^ n−^1

k=

f (xk) cos jxk

βj =

n

n∑− 1

k=

f (xk) sin jxk

il costo dell’utilizzo di queste formule è Θ(n^2 ). Per diminuire il costo si può usare la trasformata di fourier e la sua inversa sapendo che:

αj = 2ℜ(zj ) βj = − 2 ℑ(zj ) −→z = DF T (f (−→x ))

Il costo di queste formule èΘ(n log n)

Dimostrazione (caso n = 2m − 1 )

yk = f (xk) −→ Z = DF T

Y

Y = IDF T

Z

f (xk) = yk =

n∑− 1

j=

ωjkzj =

m∑− 1

j=

ωjkzj +

(^2) ∑m− 2

j=m

ωjkzj =

A questo punto abbiamo bisogno del risultato di un lemma

Lemma 4 Se

Z = DF T

Y

e

Y sono reali, allora

z 0 è reale

zj = zn−j

Dimostrazione

z 0 =

n

yi

zj =

ω−jkyk

Teorema 6 Sia f (x) periodica di periodo 2 π e C^2 , allora ∀ǫ ∃ un polinomio trigonometrico di interpolazione su n punti equispaziati tale che:

|f (x) − Fn(x)| ≤ ǫ ∀x ∈ [0, 2 π]

(non dimostriamo)

L’interpolazione trigonometrica permette di scomporre una funzione nella somma di funzioni periodiche (quindi la rappresentazione nel dominio delle frequenze)

6.0.3 Applicazioni

Analisi e manipolazione segnali audio

Compressione audio (esempio formato mp3) il pezzo musicale viene sud- diviso in piccoli pezzi a ciascuno viene fatto fourier attraverso la rap- presentazione nel dominio delle frequenze, vengono tolte le frequente non percettibili dall’orecchio umano e quindi riuniti, questo fa si che il file sia più piccolo (una cosa simile capita con i telefoni, che limitano le frequenze che passano a quelle tipiche della voce umana)

Sonar passivi fanno in modo che un sommergibile non si riveli attraverso il sonar a un altro sommergibile.

Capitolo 7

Crittografia

La crittografia serve per mandarsi messaggi in modo segreto, quindi se qual- cuno intercetta il messaggio non è in grado di capirne il contenuto. Due entità A e B devono mandarsi un messaggio e vogliono che chiunque intercetti il loro messaggio lo possa vedere ma non capire. I primi metodi di crittografia erano molto elementari:

Cifrario di cesare Le a diventavano ad esempio la lettera che ha tre po- sizioni dopo nell’alfabeto, quindi d ecc

In generale però questi tipi di codifica basati su trasposizioni di lettere sono attaccabili mediante analisi statistiche. Per complicare la codifica allora suc- cessivamente il testo veniva allungato a un numero quadrato di lettere e il testo veniva scritto in verticale in un testo che aveva lo stesso numero di righe e colonne. Un passo successivo fu:

Cifrario di Augusto In questo metodo fu inserita l’idea di chiave: una sequenza di caratteri (fissa)che veniva usata su un messaggio (una se- quenza di caratteri che cambia). Per codificare il messaggio indico per ogni carattere la distanza nell’alfabeto dal corrispondente carat- tere della chiave Es: chiave: ciao messaggio nove messaggio codificato: 12,17,2,8.

Ulteriore passo avanti era quello di fare in modo che il messaggio non si capisse fosse un messaggio cifrato. A volte veniva spedito un foglietto con dei buchi che se veniva messa su una determinata pagina di un determinato libro leggeva il messaggio. Un passo successivo (Bacone) ero quello di scrivere un testo qualunque ma con la particolarità di scrivere le lettere in modo più leggero o più pesante, il leggero corrispondeva a 0 e il pesante a 1 e il messaggio era quindi in binario.

7.2 Sistema a chiave pubblica RSA 45

Dimostrazione Se x ≡n 0 ok.

Se M CD(x, n) = 1 allora x1+λφ(n)^ ≡ x ·

xφ(n)

)λ ︸ ︷︷ ︸ 1

≡ x

Supponiamo x ≡p 0 (x mulpiplo di p) e M CD(x, q) = 1 Voglio dimostrare che:

x^1 −λφ(n)^ − x ≡n 0

Dimostro che

x^1 −λφ(n)^ − x ≡p 0 ovvio perchè x^1 −λφ(n)^ ≡p 0 e x ≡p 0

Dimostro che x^1 −λφ(n)^ − x ≡q 0

x^1 −λφ(n)^ ≡ x · x(p−1)(q−1) λ ≡ x

x(q−1) ︸ ︷︷ ︸ ≡q 1

(p−1)λ ≡ x

7.2 Sistema a chiave pubblica RSA

Sia A che vuole ricevere dei messaggi. A genera due numeri primi p e q grandi (con centinai di cifre). A calcola n = pq, phi(n) = (p − 1)(q − 1). A calcola un intero tale che M CD(e, φ(n)) = 1. A rende noti (n, e) che è la chiave pubblica di A. Supponiamo che B debba mandare un messaggio ad A. B trasforma il messaggio in interi compresi tra 1 e n − 1 m 1 , m 2 , m 3 ,... , mk B calcola e spedisce i valori:

xi = mei mod n

A decodifica il messaggio mediante l’algoritmo di Euclide esteso. Calcola d e t tale che ed + φ(n)t = 1

A calcola yi = xdi mod n

yi ≡ xdi ≡ (mei )d^ ≡ medi ≡ m1+ i λφ(n)≡ mi

7.2 Sistema a chiave pubblica RSA 46

Esempio p=11 q=

n=55 φ(n) = 40 e = 7 quindi chiave pubblica (55,7) 2 27 mod 55 = 18 La decodifica 7 ∗ d + 40 ∗ t = 1 d = 23 t = − 4

Ora mostriamo che dato n = pq se so calcolare φ(n) velocemente, allora posso calcolare p e q

φ(n) = (p − 1)(q − 1) = pq − p − q + 1 =⇒

p + q = n + 1 − φ(n) pq = n

Siccome calcolare p e q è difficile allora calcolare φ(n) è difficile. quindi anche se la chiave è pubblica (cioè il meccanismo di codifica) non è possibile la codifica in tempi ragionevoli. Nelsistema RSA i messaggi si considerano sicuri perchè il problema della fattorizzazione è difficile.

Definizione 3 Diciamo che una operazione fra interi la possiamo eseguire velocemente se esiste un algoritmo polinomiale rispetto al numero di cifre.

Per il problema della fattorizzazione non sono noti algoritmi polinomiali nel numero delle cifre. Per fattorizzare n con l’algoritmo banale ho bisogno di n

n operazioni. Costo rispetto a n cifre:

2 log^2 n

)^12

=∼ 2 log^2

√n

7.2.1 Operazioni per RSA

  1. Si generano 2 primi grandi p q
  2. Si calcola n = pq φ = (p − 1)(q − 1)
  3. Si trova un valore e tale che M CD(e, φ(n)) = 1
  4. Si calcola d tale che e · d + φ(n)λ = 1
  5. x −→ xe^ mod n
  6. y −→ yd^ mod n