Matematica con Python
Funzioni matematiche principali
Python offre una libreria matematica che consente di svolgere operazioni di calcolo sui numeri. Per utilizzarla occorre richiamarla con la seguente istruzione:
import mathLe funzioni a disposizione sono riassunte nella seguente tabella:
| Funzione | Sintassi | Descrizione | Esempio Output |
|---|---|---|---|
| Radice quadrata | math.sqrt(x) | Calcola x | 2.0 (per x=4) |
| Potenza | math.pow(x, y) | Calcola xy (ritorna float) | 8.0 (per 2,3) |
| Esponenziale | math.exp(x) | Calcola ex | 2.718... (per x=1) |
| Logaritmo naturale | math.log(x) | Calcola ln(x) | 1.0 (per x=e) |
| Logaritmo base 10 | math.log10(x) | Calcola log10(x) | 2.0 (per x=100) |
| Seno | math.sin(x) | Calcola sin(x) (x in radianti) | 1.0 (per x=π/2) |
| Coseno | math.cos(x) | Calcola cos(x) (x in radianti) | 0.0 (per x=π/2) |
| Tangente | math.tan(x) | Calcola tan(x) (x in radianti) | 1.0 (per x=π/4) |
| Arco seno | math.asin(x) | Calcola arcsin(x) in radianti | 1.57... (per x=1) |
| Arco coseno | math.acos(x) | Calcola arccos(x) in radianti | 0.0 (per x=1) |
| Arco tangente | math.atan(x) | Calcola arctan(x) in radianti | 0.785... (per x=1) |
| Arrotondamento | math.floor(x) | Arrot. per difetto (int) | 3 (per x=3.9) |
| Arrotondamento | math.ceil(x) | Arrot. per eccesso (int) | 4 (per x=3.1) |
| Costanti | math.pi, math.e | Costanti matematiche | 3.14..., 2.718... |
Le funzioni trigonometriche lavorano coi radianti, non coi gradi, Per convertire:
angolo_radianti = math.radians(angolo_gradi)Random
La generazione di numeri random è fondamentale per simulazioni probabilistiche, test e giochi.
Si usa importando la libreria random.
Random consente di:
- generare numeri casuali
- mescolare gli elementi di una lista
- scegliere un valore a caso da una lista
- estrarre una lista di n valori casuali da una lista
Qui le funzioni più usate:
| Funzione | Sintassi | Descrizione |
|---|---|---|
| Intero casuale | random.randint(a, b) | Intero casuale tra e (inclusi). |
| Float casuale | random.random() | Float casuale tra 0 e 1. |
| Float intervallo | random.uniform(a, b) | Float casuale tra e (inclusi). |
| Scelta lista | random.choice(lista) | Elemento casuale da una sequenza. |
| Shuffle | random.shuffle(lista) | Mescola la lista in place (modifica l’originale). |
| Campione | random.sample(lista, k) | Lista di elementi unici casuali (non modifica l’originale). |
Esempi:
import random
# Lanciare un dado a 6 facce
dado = random.randint(1, 6)
# Scegliere lettere a caso
import string
caratteri = 'abcdefghijklmnopqrstuvwxyz0123456789'
password = ''.join([random.choice(caratteri) for _ in range(8)])
print(password)
# Mescolare una lista di carte
carte = ['A', 'K', 'Q', 'J']
random.shuffle(carte) # mescolataMatplotlib
La libreria Matplotlib consente di generare grafici bidimensionali, come:
- grafici a barre;
- grafici a punti;
- grafici a linea;
Vediamo qui un semplice esempio:
import matplotlib.pyplot as plt
# Dati
x = ['2024', '2025', '2026', '2027']
y = [100, 400, 2000, 5500]
# Crea due oggetti: la figura e il grafico
figure, graph = plt.subplots()
# Disegna il grafico
graph.plot(x, y) # Linea
# Assegna le etichette e titolo
graph.set_title("Visualizzazioni mensili di Ci Piace Info")
graph.set_xlabel("Anno")
graph.set_ylabel("Pagine viste")
# Mostra infine il grafico
plt.show()

L’istruzione figure, graph = plt.subplots() crea i due oggetti fondamentali di matplotlib:
figure: che rappresenta il canvas del grafico;graph: rappresenta il grafico vero e proprio
L’oggetto graph mette a disposizione le seguenti funzioni:
| Metodo | Sintassi | Descrizione |
|---|---|---|
| Linea | graph.plot(x, y) | Disegna una linea che collega ogni coppia di elementi dei vettori x ed y. Opzioni: color='r', linestyle='--'. Utile per disegnare grafici sull’andamento di un dato nel tempo. |
| Punti | graph.scatter(x, y) | Disegna punti sparsi. Utile per correlazioni tra coppie di elementi nel piano cartesiano. |
| Barre | | Disegna un istogramma/bar chart. Utile per indicare quantità in ambito statistico. |
| Titolo | | Imposta il titolo del grafico. |
| Etichette | | Imposta le etichette degli assi. |
| Legenda | | Mostra la legenda (dopo aver usato label= in plot). |
| Griglia | | Attiva la griglia di sfondo. |
| Limiti | | Imposta i limiti degli assi (utile per eseguire uno zoom). |
L’oggetto figure ha invece funzioni generali del Canvas:
| Metodo | Sintassi | Descrizione |
|---|---|---|
| Dimensione | figure.set_size_inches(larghezza, altezza) | Imposta le dimensioni in pollici. Esempio: fig.set_size_inches(10, 6) crea un grafico largo 10″ e alto 6″. |
| DPI | figure.set_dpi(valore) | Imposta la densità dei pixel (Dots Per Inch). Esempio: fig.set_dpi(300) per alta qualità (standard editoriale). |
| Salva | figure.savefig("nome_file.png") | Salva la figura in un file. Formati supportati: .png, .jpg, .pdf, .svg. |
| Sfondo | figure.patch.set_facecolor('white') | Cambia il colore di sfondo dell’intera figura. |
Vediamo un altro esempio. In questo caso abbiamo i voti di una verifica in classe (22 studenti) e vogliamo mostrare la distribuzione dei voti con un grafico ad istogramma:
votes = [8, 6, 6, 4, 6, 6, 7, 5, 8, 10, 6, 7, 8, 6, 7, 7, 7, 5, 7, 7, 9, 8]
dist = [0]*11
for vote in votes:
dist[vote]+=1
labels = list(range(11))
figure, graph = plt.subplots()
graph.bar(labels, dist, color='steelblue', edgecolor='blue') # Linea
graph.set_title("Distribuzione voti")
graph.set_xlabel("voto")
graph.set_ylabel("numero studenti")
graph.set_xlim(1.5, 10.5)
plt.show()Qui il risultato:

Ora vediamo un esempio sull’andamento delle azioni Apple vs Google:
import matplotlib.pyplot as plt
mesi= ['Oct 25', 'Nov 25', 'Dec 25', 'Jan 26', 'Feb 26', 'Mar 26', 'Apr 26', 'May 26', 'Jun 26', 'Jul 26', 'Aug 26', 'Sep 26']
prezzi_apple = [143.33, 156.18, 147.3, 142.92, 149.18, 144.17, 158.39, 149.85, 149.62, 157.12, 153.33, 161.75]
prezzi_google = [147.81, 148.53, 135.58, 138.46, 148.98, 132.2, 147.21, 137.75, 144.74, 132.06, 143.26, 136.78]
figure, graph = plt.subplots(figsize=(12, 6), dpi=150)
graph.plot(mesi, prezzi_apple, label="Apple (AAPL)", color='blue', marker='o', linestyle='-')
graph.plot(mesi, prezzi_google, label="Google (GOOGL)", color='red', marker='s', linestyle='-')
graph.set_title("Andamento Prezzi Azioni: Apple vs Google", fontsize=13)
graph.set_xlabel("Mese", fontsize=12)
graph.set_ylabel("Prezzo (USD)", fontsize=12)
graph.legend(loc='upper left')
graph.grid(True, linestyle='--', alpha=0.5)
plt.show()
