Introduzione A Python PDF
Introduzione A Python PDF
Versione 3.0
6 Giugno 2005
F.Marcuzzi - M.R.Russo
Contents
1 Introduzione 4
1.1 Sviluppo di programmi in Python . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Documentazione su Python . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Moduli aggiuntivi per il calcolo scientifico . . . . . . . . . . . . . . . . . . 5
2
Calcolo Numerico in Python
5 Creazione di Grafici 19
5.1 Grafici bi-dimensionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2 Grafici tri-dimensionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.3 Immagini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3
F.Marcuzzi - M.R.Russo
1 Introduzione
1. riconosce automaticamente oggetti quali numeri, stringhe, liste, ..., e quindi non
richiede di dichiararne il tipo e la dimensione prima dellutilizzo;
Lesecuzione di programmi scritti in Python avviene tramite la sua shell interattiva, che
viene semplicemente invocata con il comando python, sia in Linux che in DOS/Windows.
In generale, e utile dotarsi di unIDE (Integrated Development Environment, ovvero
un ambiente di sviluppo integrato). A questo proposito ci sono varie soluzioni. UnIDE
disponibile per Linux e Windows e Eclipse, per la quale e disponibile un plugin per
Python. Piu semplicemente:
4
Calcolo Numerico in Python
5
F.Marcuzzi - M.R.Russo
Parte I Programmazione
idle
(viene aperta la finestra di IDLE)
6
Calcolo Numerico in Python
Per vedere i comandi disponibili nei moduli standard e possibile accedere al sito ufficiale
http://www.python.org/doc/current/lib/lib.html .
import os
7
F.Marcuzzi - M.R.Russo
un modulo intero:
help(<nome modulo>)
Nota: la funzione help() richiede che il modulo <nome modulo> sia gia stato importato.
8
Calcolo Numerico in Python
double: Python supporta i numeri in virgola mobile in doppia precisione (la singola
precisione non e prevista).
ATTENZIONE: se si scrive una costante senza il punto (.) viene rappresentata
come numero intero. Ad esempio, 1 e un int, mentre 1. e un double, per cui si
ha:
>>> 1/2
0
>>> 1./2
0.5
>>> 1/2.
0.5
# arrotondamenti:
y = ceil(x) # "y" e il double pari al piu piccolo intero >= x
y = floor(x) # "y" e il double pari al piu piccolo intero <= x
y = round(x) # "y" e il double pari allintero piu vicino a "x"
lista:
e un tipo di dato utile per immagazzinare piu di un valore in ununica variabile.
Vediamo le principali operazioni possibili:
# creazione di una lista (in generale, una lista e eterogenea):
listino = [panino,3.70,acqua,0.50,gelato,0.99]
listino[2] # accesso allelemento di indice 2 (NB: gli indici partono da 0)
9
F.Marcuzzi - M.R.Russo
if <condizione>:
<istruzioni ....>
else:
<istruzioni ....>
#end
Dal punto di vista del calcolo numerico, questo e un costrutto poco favorevole poiche, in
generale:
nella valutazione della condizione non vengono eseguiti propriamente dei conti;
10
Calcolo Numerico in Python
Il <vettore di interi> puo essere espresso mediante una lista oppure un array (Nu-
meric.array), e <variabile> assume al passo i-esimo il valore della sua i-esima componente
. Esempi:
2. for i in [1 2 4 6 25], che significa il ciclo esegue 5 iterazioni; alla prima i vale
1, alla seconda 2, alla terza 4, alla quarta 6, alla quinta 25.
3. for i in stringa, che significa i assume valore pari ai singoli caratteri della
stringa, partendo dal primo e fino allultimo.
Questo costrutto e largamente utilizzato nel calcolo numerico e si presta a vari tipi di
ottimizzazioni, sia su calcolatori sequenziali che paralleli.
Tipicamente la <variabile> assume valori da 1 a N , dove N e una dimensione fonda-
mentale del problema, ad es. il numero di componenti di un vettore o di righe (o colonne)
di una matrice.
3.3 Funzioni
Un modulo Python (lo identifichiamo qui con un file, <nome file>.py) puo contenere una
o piu funzioni al suo interno. Importando il modulo, si rendono disponibili le funzioni in
esso contenute.
In generale, una funzione la si definisce nel seguente modo:
def <nome funzione>([<parametro 1>, <parametro 2>, ...]):
<istruzioni...>
<...con eventuale "return">
11
F.Marcuzzi - M.R.Russo
Nota: lestensione del file puo essere qualunque, e non necessariamente txt.
12
Calcolo Numerico in Python
stampa su schermo:
print "2 + 2 = ", 2+2
>>> 2 + 2 = 4
import time
in Linux:
istante_1 = time.time() # listante attuale viene memorizzato
# nella variabile "istante_1"
in Windows:
istante_1 = time.clock() # listante attuale viene memorizzato
# nella variabile "istante_1"
13
F.Marcuzzi - M.R.Russo
14
Calcolo Numerico in Python
15
F.Marcuzzi - M.R.Russo
16
Calcolo Numerico in Python
17
F.Marcuzzi - M.R.Russo
dice anche struttura di sparsita della matrice. Il rapporto tra numero di nonzeri e numero
totale di componenti e detto indice di densita, ed e compreso nellintervallo [0, 1]. Una
matrice con indice di densita pari a 1 si dice densa.
Vediamo una sintesi delle operazioni principali:
from spmatrix import * # caricamento del modulo spmatrix
# dellestensione PySparse
from spmatrix_util import * # caricamento del modulo spmatrix_util
# dellestensione PySparse
Conversione di formato:
M.to_csr() # conversione di M al formato CSR
M.to_sss() # conversione di M al formato SSS
18
Calcolo Numerico in Python
copia:
W = M.copy() # crea una copia di "M" e "W" ne e il riferimento
5 Creazione di Grafici
Utilizziamo il modulo gplt facente parte dellestensione SciPy. Esso si appoggia a Gnu-
plot.
import scipy # caricamento del modulo scipy
from scipy import gplt # caricamento del modulo gplt
from Numeric import * # caricamento del modulo Numeric
19
F.Marcuzzi - M.R.Russo
20
Calcolo Numerico in Python
5.3 Immagini
21
F.Marcuzzi - M.R.Russo
Parte II Librerie
22
Calcolo Numerico in Python
# definizione di un polinomio:
p = poly1d([1,3,4]) # definisce il polinomio: x^2 + 3*x + 4
# derivata di un polinomio:
d = p.deriv() # "d" e il polinomio uguale alla derivata di "p"
# valutazione di un polinomio:
x = [1.2,3.55,7.0,14.9] # insieme di valori
y = p(x) # "y" e il vettore di valori che assume "p" nei punti "x"
La funzione f (x) puo anche essere lineare, ad esempio f (x) = A x b, con matrice A di
dimensione m n e vettori colonna x di lunghezza n e b di lunghezza m.
23
F.Marcuzzi - M.R.Russo
definizione di una classe: class < nome classe > : . Nelle righe successive, vengono
dichiarate le variabili ed i metodi della classe, indentandole.
definizione di una classe derivata: class < nome classe > ( < classe padre > ):
. Nel caso in cui un metodo non sia presente, viene cercato ricorsivamente nella
gerarchia delle classi padre; questo avviene anche per il costruttore.
definizione del distruttore: def del (self , < argomenti > ) : . Lo si usa cos:
del < nomei stanza > .
definizione di un metodo: def < nome metodo >(self , < argomenti > ) :
definizione di una variabile: self.< nome variabile > = < valore >
Nota: self e il riferimento allistanza (oggetto) che sta chiamando il metodo della classe.
Nota: i metodi di una classe si comportano come una normale funzione Python; e possibile
assegnare valori di default nel seguente modo: < argomento >=< valore di def ault >.
Utilizzo della classe:
creazione di unistanza della classe: < variabile > = < nome classe >()
accesso ai suoi metodi : < nome istanza >.< nome metodo >( < argomenti > )
oppure < nome classe >.< nome metodo >( < nome istanza > , < argomenti >
)
accesso alle sue variabili : < nome istanza >.< nome variabile >
la funzione (built-in) type( < nome > ) ci dice se nome e class oppure instance.
24
Calcolo Numerico in Python
la funzione (built-in) dir( < nome > ) ritorna una lista dei nomi delle proprieta e
dei metodi, se nome e una classe, ed una lista dei nomi delle variabili, se nome e
unistanza.
la proprieta bases di una classe, contiene la lista dei nomi delle classi da cui
questa e derivata.
la proprieta dict di unistanza, contiene la lista delle coppie < nome >:<
valore > relative alle sue variabili interne.
la proprieta class di unistanza, contiene il nome della classe che lha generata.
25