Introduzione a PARI / GP

Похожие документы
Matematica con il foglio di calcolo

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Il calcolatore. Architettura di un calcolatore (Hardware)

Definizione unitaria delle coniche

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Come si progetta un circuito Perché simulare un circuito Cosa vuol dire simulare un circuito Il Simulatore Pspice Pacchetti che contiene Pspice

Manuale Utente per la Gestione dei Revisori degli Enti Locali

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

Studio di funzione. Tutti i diritti sono riservati. E vietata la riproduzione, anche parziale, senza il consenso dell autore. Funzioni elementari 2

ESTRAZIONE DI RADICE

Guida pratica alla creazione di pagine web

EQUAZIONI CON VALORE ASSOLUTO DISEQUAZIONI CON VALORE ASSOLUTO

FUNZIONI CONTINUE - ESERCIZI SVOLTI

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

31/10/2012. Lo studio delle funzioni permette di interpretare la variazione di due grandezze, l una rispetto l altra, quando

Corso di Laurea in Ingegneria Informatica Analisi Numerica

Protocollo dei saperi imprescindibili Ordine di scuola: professionale

INTRODUZIONE ALLE BASI DATI RELAZIONALI

MATEMATICA GENERALE Prova d esame del 4 giugno FILA A

Esercitazione n o 3 per il corso di Ricerca Operativa

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi

VoipExperts.it - CISCO <=> AVAYA

Esercizi sulla conversione tra unità di misura

Riconoscere e formalizzare le dipendenze funzionali

Sistemi Web per il turismo - lezione 3 -

Manuale Sito Videotrend

MINISTERO DELL'ISTRUZIONE, DELL'UNIVERSITÀ, DELLA RICERCA SCUOLE ITALIANE ALL ESTERO

Introduzione al corso di Programmazione e Laboratorio

Anno 5 4 Funzioni reali. elementari

ESAME DI STATO 2002 SECONDA PROVA SCRITTA PER IL LICEO SCIENTIFICO A INDIRIZZO SPERIMENTALE (PNI)

5 DERIVATA. 5.1 Continuità

PROGETTAZIONE DISCIPLINARE MATEMATICA classe 2^

APRS CON KENWOOD TMD 710

0.1 Esercizi calcolo combinatorio

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

ISTITUTO D'ISTRUZIONE SUPERIORE A. MOTTI

INSTALLAZIONE DEL MOUSE

Leggete l etichetta! Tutto quello che c è da sapere per un utilizzo sicuro dei detersivi e dei prodotti di pulizia per la casa

METODI DI CONVERSIONE FRA MISURE

LA MOLE LA MOLE 2.A PRE-REQUISITI 2.3 FORMULE E COMPOSIZIONE 2.B PRE-TEST

Sincronizzare file con Google Drive GUIDA PRATICA HELPDESK CO.GE.S. COOPERATIVA SOCIALE

Ci congratuliamo per il vostro acquisto del nuovo USB. Tester, uno strumento dedicato a coloro che devono

Università degli studi di Foggia SSIS D.M Laboratorio di didattica della matematica finanziaria Classe 17/A

NOTE RILASCIO IATROS SISS v. 2.X

Il Mondo della Tartaruga - Programmazione LOGO

Utilizzo collegamento remoto

Geometria Superiore Esercizi 1 (da consegnare entro... )

PROGRAMMAZIONE di MATEMATICA CLASSE PRIMA

Lezione 6 Le pile. Informatica. 28 Aprile 2016

AREA LOGICO - MATEMATICA TEMA PARI E DISPARI

Moduli Bluetooth 03 - connessione seriale via BT

EFA Automazione S.r.l. SB3Conf Help V1.00 (01 ITA).doc pag. 1 / 10

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Ragionamento qualitativo

ITCS Erasmo da Rotterdam. Anno Scolastico 2014/2015. CLASSE 4^ M Costruzioni, ambiente e territorio

Xerox FreeFlow Print Server V 9.0 SP3

Il Metodo Scientifico

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

SCOMPOSIZIONE IN FATTORI DI UN POLINOMIO

Esercitazione # 6. a) Fissato il livello di significatività al 5% si tragga una conclusione circa l opportunità di avviare la campagna comparativa.

Un po di teoria dei numeri

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

ˆp(1 ˆp) n 1 +n 2 totale di successi considerando i due gruppi come fossero uno solo e si costruisce z come segue ˆp 1 ˆp 2. n 1

Le aree dell informatica

Prof.ssa Laura Pagnozzi Prof. Ivano Coccorullo. Calcolo Combinatorio

7 giorni 30 giorni 365 giorni

PROGETTO CONTINUITA Scuola primaria secondaria di I grado CONOSCERE I RISCHI DELLA COMUNICAZIONE

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Programmazione Annuale di Matematica della Scuola Secondaria di Primo Grado Caccia

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma.

CLASSE terza SEZIONE E A.S PROGRAMMA SVOLTO

Guida Rapida per i Docenti dell ITIS Galilei

SEGNALE WIFI PRIETTATO A LUNGHE DISTANZE COSTRUIAMO L ANTENNA A BARATTOLO O CANTENNA

testo Saveris Web Access Software Istruzioni per l'uso

Programmazione Orientata agli Oggetti in Linguaggio Java

Modulo 1 Information Communication Technology. ICT e computer... Pag. 6 Classificazione dei computer...» 8

Analisi. Calcolo Combinatorio. Ing. Ivano Coccorullo

I.P.S.S. Severini a.s Curriculum Verticale MATEMATICA

MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione)

E-Shop : Gestione Fidelizzazione Clienti

Lezione 3: Il problema del consumatore: Il

Opzione manutentore impianti elettrici e automazione

Cosa è importante: pom.xml Goal Plug-in Repository

ESERCIZI DEL CORSO DI INFORMATICA

Introduzione al Python

Liceo Classico Statale Dante Alighieri

Istruzioni per la configurazione di Adobe Acrobat per la firma digitale

CALCOLO DEL MASSIMO COMUN DIVISORE

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Sperimentazione del servizio deposito garantito a lungo termine

Транскрипт:

Università degli studi di Milano Dipartimento di Matematica «F. Enriques» Introduzione a PARI / GP pari / gp è una libreria per linguaggi ad alto livello (ad es. C, C++, Pascal, Fortran) ed una sofisticata calcolatrice programmabile. Le sue caratteristiche principali sono l essere un programma libero, la rapidità (da 10 a 1000 volte più rapido di altri programmi), la possibilità di usare tipi di dati comuni nell uso matematico, e l esteso supporto per la teoria dei numeri. pari / gp funziona su molte versioni di Unix (inclusi Linux e OS-X) ed ha un supporto sperimentale per Windows; può essere scaricato liberamente da http: //pari.math.u-bordeaux.fr 1 Iniziamo! Dopo aver acceso il computer, al prompt, digitiamo gnome e premiamo <invio>. [rimosse le istruzioni su nome utente e password da utilizzare sui terminali del laboratorio del dipartimento] Una volta finito di caricare l ambiente grafico, aprite il terminale, digitate gp e poi di nuovo <invio>. Dovrebbe comparirvi un? Scrivete 2+2 e poi premete <invio> (questa è l ultima volta che lo specificherò). Dovreste vedere:? 2+2 %1 = 4? %1 significa che questo è il primo risultato, e che è uguale a 4. Forse siete abituati a terminare ogni riga col ;? 2+2;? Cos è successo?!? Qui il segno ; serve per separare due istruzioni, e come effetto collaterale non stampa il risultato: è utile se abbiamo dei numeri giganteschi, ma vedremo più avanti... Proviamo ora qualche altra operazione? 12-3 %3 = 9? 1-7*4+2 %4 = -25? 8/2 %5 = 4

? 3/2 %6 = 3/2 Notiamo che pari / gp usa tranquillamente le frazioni.? 2^5 %7 = 32? (-1/2)^3 %8 = -1/8? %^(1/3) %9 = 0.2500000000000000000000000000 + 0.4330127018922193233818615853*I? La prima operazione è un elevamento a potenza. Nel secondo caso è necessario usare le parentesi. Il terzo caso è un po strano: il segno % indica l ultimo risultato, in questo caso 1/8. L elevamento alla potenza 1/3, come sapete, corrisponde all estrazione di radice cubica: ma cos è il risultato? Be, se provate ad elevarlo alla terza otteniamo:? %^3 %10 = -0.1250000000000000000000000000 + 4.73316542 E-30*I Se guardate attentamente, noterete che questo risultato è un approssimazione reale di 1/8 più un numero molto piccolo per I: pari / gp ha calcolato una radice complessa di 1/8, la cui terza potenza è ancora un numero complesso. Ma procediamo oltre: il resto della divisione fra a e b è indicato così:? 13%3 %11 = 1? 13%5 %12 = 3 divrem Se vogliamo conoscere sia il quoziente che il resto, usiamo la funzione divrem? divrem(13,5) %13 = [2, 3]~ gcd bezout Per aiutarci a comprendere il significato del risultato, scriviamo?divrem. Scopriamo così che [2,3]~ è un vettore colonna (la tilde indica che è stato scritto come riga). Per verificare provate a calcolare: 2 5+3. Altre funzioni utili sono gcd e bezout: provate a scoprire cosa fanno. Esercizio 1. Calcolate: (11 3 1)/2; 1+ 2 3 ; MCD(247,91); MCD(247,100); trovate ora x, y Z tali che MCD(247,91) = 247x + 91y; idem per MCD(247,100) = 247x + 100y. 2 Moduli Se vogliamo calcolare 3 123 mod 17, cioè la classe di resto di 3 123 modulo 17, possiamo fare così: 2

Introduzione a PARI / GP? 3^123 %14 = 48519278097689642681155855396759336072749841943521979872827? % %17 %15 = 7 Proviamo con numeri ancora più grossi: 1435 467 mod 147? 1435^467 %16 = 1777615382246166178183410278313640776056638142669953819537560638 4440658254724148151873065978590741557038852046453447172605903966524399 3282526617824036893640611161880745082059189693057609522158693080432443 9998398836975623428194912933179425712057461415130444524580749980805005 8509867127417336379682306411510441154004626826306562934477025796842756 6122648440668126135687775339293954033451823669552803135626101640029821 6739165699202497760856493541256340994201027150885944297925893515077793 7150399397095459918937650074934176426881767936613106102510426319567001 0994996371452394390119908181445633782348077580430491526771051683640672 4971264931807444956409070109368165019674558692845735859148710514555170 4827720056862222151684171697723531459399418362761150767740201368452163 3098976436853213188768138997862446878783257000042344671019537172694332 9829289524670282277082018477544775532337203726689402339317171851051173 1888675886503564085228875554538859323656362277372494014604537852664463 5722523401406637257509915035234834445920788182674320824257475653017329 3786580558425511337908137272201426637018341483418690947751236778336073 8670206740415366955901542770191159203252282313353796838073742788507484 7935413477057905621326271496461158235016122932938889520896833009552098 6616174185149395675553335866572964314749067105608434617808430924522024 3935739714650595444706938780982421686356526341266574945028849139621682 1878672534002731178309209364946031679431334704410971880861325189471244 81201171875? %%147 %17 = 49 Umph! Forse era meglio usare il ;? 1435^467;? % %147 %19 = 49 Meglio, ma se usassimo numeri ancora un poco più grandi, inizieremmo a trovare cose troppo grandi, e avremmo dei problemi. D altro canto a noi non serve veramente calcolare 1435 467 come numero intero: sarebbe sufficiente ridurre modulo 147 ad ogni passaggio.? Mod(1435,147) %20 = Mod(112, 147) 3

? %^467 %21 = Mod(49, 147) Mod nextprime Mod crea un intero modulare: Mod(1435,147) è la classe di resto di 1435 mod 147. Notiamo che 1435 112 mod 147, cioè Mod(1435,147) e Mod(112,147) sono la stessa classe di resto. Vediamo un altro esempio. Attiviamo ora il timer dando l istruzione #, cerchiamo un primo grande con nextprime, e poi confrontiamo i due modi per svolgere un elevamen- to a potenza.? # timer = 1 (on)? p=nextprime(10^5) time = 0 ms. %22 = 100003? e=8234325 time = 0 ms. %23 = 8234325? 2^e %p time = 16 ms. %24 = 6033? Mod(2,p)^e time = 0 ms.? # timer = 0 (off) lift Variabili Un ultra istruzione utile è lift: dato una classe di resto modulo n, restituisce l unico intero nell intervallo [0, n) della classe:provate a giocarci. Vediamo ora come assegnare un nome agli oggetti? a=mod(1435,147) %25 = Mod(112, 147) a può ora essere usato al posto di Mod(1435,147)? a+mod(3,147) %26 = Mod(115, 147)? a+3 %27 = Mod(115, 147)? 2*a %28 = Mod(77, 147)? a^2 %29 = Mod(49, 147)? a^(-1) *** impossible inverse modulo: Mod(7, 147).? (a+3)^(-1) %30 = Mod(124, 147) 4

Introduzione a PARI / GP Non siamo riusciti a calcolare a 1 : infatti MCD(a,147) = 7, per cui non può esistere b tale che ab 1 mod 147. Se volessimo sapere quante sono le classi di resto invertibili mod 147, basterebbe usare la funzione eulerphi, che calcola la φ di Eulero: eulerphi? eulerphi(147) %31 = 84 3 Programmazione Abbiamo visto come creare delle variabili. Vediamo ora qualche semplice modo per programmare pari / gp. Il modo più semplice per definire una funzione è il seguente: f(x)=x^2-1. Ora possiamo calcolare f (x) per un qualsiasi x Funzioni? f(1) %32 = 0? f(-2/3) %33 = -5/9? f(4.3) %34 = 17.48999999999999999999999999? f(a) %35 = Mod(48, 147) Funzioni più complicate vengono definite in modo simile: ogni istruzione è separata da ; e il risultato della funzione è il risultato dell ultima assegnazione? modinv(a,n)=local(phi);phi=eulerphi(n);mod(a,n)^(phi-1)? modinv(115,147) %36 = Mod(124, 147)? modinv(112,147) %37 = Mod(49, 147)? %*112 %38 = Mod(49, 147) L istruzione local serve per segnalare che phi è una variabile locale; le variabili a ed n lo sono automaticamente per come è definita la funzione modinv. Ricordiamo che a φ(n) 1 mod n per ogni a relativamente primo ad n, e che quindi a φ(n) 1 a 1 mod n. Sopra verifichiamo come questo non sia vero se a ed n non sono relativamente primi. Supponiamo ora di voler vedere com è fatta la funzione inversa: prendiamo n = 5: è un numero primo, per cui ogni classe di resto tranne quella nulla è invertibile. local? n=5 %39 = 5? for(i=1,n-1,a=mod(i,n);b=a^-1;print(a,"\t",b)) Mod(1, 5) Mod(1, 5) Mod(2, 5) Mod(3, 5) 5

Mod(3, 5) Mod(2, 5) Mod(4, 5) Mod(4, 5) for print Vi consiglio di controllare la definizione di for e di print. L istruzione "\t" rappresenta un tabulatore. Analogamente? for(i=1,n-1,a=mod(i,n);b=f(a);print(a,"\t",b)) Mod(1, 5) Mod(0, 5) Mod(2, 5) Mod(3, 5) Mod(3, 5) Mod(3, 5) Mod(4, 5) Mod(0, 5) if Supponiamo di voler trovare, se esiste, un x tale che f (x) 1 mod 147: stampare l intera tabella porterebbe via troppo spazio, e poi sarebbe scomodo scorrerla alla ricerca del valore cercato. Usiamo un test condizionale: l istruzione if? n=147;for(i=0,n-1,a=mod(i,n);b=f(a);if(b==mod(1,n),print(a,"\t",b))) Non esiste un tale x! Proviamo a risolvere l equazione f (x) = 3:? n=147;for(i=0,n-1,a=mod(i,n);b=f(a);if(b==mod(3,n),print(a,"\t",b))) Mod(2, 147) Mod(3, 147) Mod(47, 147) Mod(3, 147) Mod(100, 147) Mod(3, 147) Mod(145, 147) Mod(3, 147) Notiamo come ci siano quattro soluzioni ad un equazione di secondo grado! Esercizio 2. Sia f (x) = x 3 2x 2 +1. Calcolate il valore di f per ogni classe di resto modulo 17. Cercate poi eventuali soluzioni alle equazioni f (x) 0, f (x) 1, f (x) 12 mod 147. 6