C’è qualcuno che dice che l’università non è luogo di formazione, che è vecchia e che non è al passo con i tempi. Io sto avendo un’esperienza diversa, quella di un’Università che punta a tenersi al passo con i tempi e a soddisfare le esigenze degli studenti. Un’Università fatta di professori pronti a capire cosa si potrebbe approfondire e capaci di muoversi in fretta, in un ambiente snello, per far sì che le cose si facciano in tempi brevi.

Nasce così il corso/seminario di Matlab/Octave e Python organizzato nel contesto del CdL di Ingegneria Industriale/Meccanica; un corso aperto a tutti (anche chi non frequenta il corso di Ingegneria!) e sviluppato intorno all’esigenza degli studenti di approfondire queste due tematiche per rendere più facilmente affrontabili una serie di problemi quotidiani con cui ci si trova a combattere quando si studia ingegneria.

Dove e Quando?

4 e 11 marzo 2016 (per un totale di 8 ore)

Presso l’Aula Magna di Ingegneria

Viterbo, località Riello (Largo Università)

Perchè?

Perché su SEO Point? Per tre motivi principali:

  1. Perché son stufo di chi “distrugge” e spara a zero su qualcosa che conosce a malapena, senza la voglia di provare a cambiare qualcosa. E nel nostro ambiente c’è questa abitudine, purtroppo. La mia (limitata ovviamente) esperienza dice che corsi in cui si innova per davvero e in cui la formazione dello studente è al centro esistono davvero. Mi piace l’idea di parlare anche del bello, oltre che del brutto;
  2. Perché un po’ di programmazione – proprio con Python – fa veramente bene a chi si occupa di SEO (basti pensare al framework Scrapy.. fantastico!), sia per comprendere alcune logiche altrimenti difficilmente comprensibili, sia per automatizzare una serie di processi “scimmieschi” che altrimenti dovremmo affrontare manualmente ogni giorno;
  3. Perché un corso in aula gratuito, di una cosa che mi interessa tantissimo e nella città in cui studio… è una figata.

Il Programma

Introduzione

Il corso si svilupperà in due giornate di 4 ore ciascuna. Due ore la mattina (10:00-12:00)  e due il pomeriggio (14:00-16:00).

Il corso prevede una introduzione a due linguaggi di uso come nell’ambito scientifico: Octave, che è un clone di Matlab e Python, che sta diventando uno dei linguaggi di elezione nell’analisi dei dati. Il campo di applicazione è quello della fusione, ma le conoscenze degli allievi possono essere tranquillamente esportate ad alti campi.

Prima giornata, prime due ore

Introduzione ai linguaggi di programmazione usati in ambienti di ricerca

Introduzione al corso ed ai linguaggi di programmazione usati nella fusione o in generali in più campi di ricerca. Si  focalizzeranno gli allievi sul fatto che il linguaggio di programmazione dipende dal problema che si vuole risolvere e dalle situazioni al contorno (qual è il linguaggio usato nel laboratorio dove si va a lavorare).

  • Usato dalle acquisizione: Labview, C, etc.
  • High Performance Computer: Fortran, C++.
  • Elaborazione Dati: Matlab, Python, IDL, Fortran, etc.
  • Controllo SIMULINK.

Ci si concentra su Octave (clone di Matlab), e Python (numpy, scipy). Perché sono molto usati nella elaborazione dei dati in particolare hanno la possibilità di ispezionare le variabili al volo anche dopo un errore, e la possibilità di effettuare dei plot complicati facilmente. La loro conoscenza permette comunque di passare facilmente ad altri linguaggi come Matlab.

Verranno inoltre mostrate alcune note sulla installazione di Octave e Python  su Mac e PC.

Verrà mostrato un semplice esempio di lettura file di dati e plot in Octave e Python

Octave:

File di righe e colonne senza intestazioni:

a = load(‘test.dat’)

plot(a(:,1), a(:,2), ‘-o’, a(:,1), a(:,3), ‘–‘)

Python:

import numpy as np

import matplotlib.pyplot as plt

a = np.genfromtxt(‘test.dat’)

plt.plot(a[:,0], a[:,1], ‘-o’, a[:,0], a[:,2], ‘–‘)

plt.show()

Notare le differenze: in python si devono importare I moduli prima di usarli, invece di load si usa genfromtxt (che comunque è molto più potente), gli elementi degli array usano le parentesi quadrate.

Octave

Per iniziare

Come si lancia Octave, come si esce (exit), l’help.  Lista di variabile disponibili (whos).

Matrici

Ogni variabile è una matrice, creazione di una matrice reale, ordinamento in memoria. Cancellazione di una variabile.

Creazione di una matrice di uno (ones), di zeri (zeros), unitaria (eye). Dimensioni di una matrice (size), e trsposizione. Uso della funzione linspace. Creazione di un vettore tramite l’espressione di range (start:step:end)

Indici

Come si selezionano gli indici usando un espressione di range (start:step:end), con un vettore di indici, con un vettore logico. Selezione degli indici avanzata con la funzione sub2ind e ind2sub.

operatori

Principali operatori. Distinzione tra element wise e matriciali. Funzioni elementari (che si espandono automaticamente sui vettori)

Numeri complessi

Come si creano matrici complesse, e principali funzioni si numeri complessi (conj, real, imag, abs, angle, isreal)

Array ed operatori logici

Esempi più chiari sugli array logici. Operatori (&, |,  ì xor, any, all)

plot dei dati

plot di dati lungo una dimensione, contor plot, pseudocolor plot

Strighe e principali funzioni sulle stringhe

Array di caratteri, e primncipali funzioni (ischar, strcmp, findstr, strtok, num2str, str2doble, sprintf, sscanf)

array di celle

Come si costruisce, come si dereferenziano  gli elementi, uso con le stringhe, funzioni che si applicano ad array di celle in parallelo.

Strutture

Creazione ed accesso agli elementi

Funzioni matematiche (principali), e funzioni che lavorano sugli array

Tipicamente max, min, sum, mean, median, trapz, cumsum, cumtrapz, sort, diff,  gradient, sin, cos.

Input ed Output

save, load, fprintf, fscanf, e format da usare all’interno di fprintf, e funzioni per la lettura di file di formato specifico.

 Strutture di programmazione

(if.. elseif.. else.. endif, for, while, switch, try…catch, uso di breeak e continue

Funzioni e script

come si dichiarano le funzioni, funzioni interne e funzioni senza nome (@).

Analisi di Fourier, e analisi dei segnali

fft, filter, etc.

Integrazione di una ODE

ode45 etc.

Classi, vecchio stile  e nuovo stile

Cenni di costruzioni di classi in Octave ma con un occhio a Matlab. Classi predefinite in Octave e Matlab.

Grafica con gli handle

Sempre con un occhio a Matlab

Conclusione

Prima giornata, seconde due ore

Verranno proposti degli esercizi da eseguire con Octave.

Lettura di file in vari formati

Si leggeranno file di diversi formati : matlab, di testo, file Excel. Fit lineari e non lineari sui dati letti.

Risoluzione di una Ode

Risoluzione di una particella in un campo centrale, con confronto con la soluzione esatta.

Analisi dei modi di un segnale proveniente dai Mirnov coil di un Tokamak.

L’esercizio introduce ad un reale problema di analisi dei dati di tipo fusionistico.

Seconda giornata, prime due ore

Introduzione a Python

  • Introduzione generale a Python
  • installazione su windows e MacIntosh
  • principali ambienti di sviluppo: spyder e i notebook ipython.
  • operazioni matematiche su python (+,-,*,/)
  • significato dell’assegnazione in Python.
  • tipi principali, numerici, stringhe, contenitori (liste tuple, set e dizionari), “None”
  • Principali operazioni su liste e tuple
  • Python scripts come lanciarli
  • Principali strutture (if, for, iteratori e generatori, Eccezioni)
  • Funzioni
  • Classi, Ereditarietà etc.
  • Array numpy, e operazioni tra di loro, creazione di array (zeros, ones, linspace,etc.)
  • Principali manipolazioni degli array, operazioni bit wise ed array logici.
  • Grafica di base con il package Matplotlib.
  • ricerca del massimo del minimo e loro posizione in un array
  • lettura di matrici da file (con o senza nomi) lettura di file generati da Matlab e di file excel
  • Algebra lineare
  • Integrazione ed ODE
  • Ottimizzazione (ricerca del minimo, con e senza constraint e fitting)
  • interpolazione
  • Fourier Transform

Seconda giornata seconde due ore

Gli stessi esercizi risolti con Octave verranno ripetuti in Python.

 

Leave a Reply

Your email address will not be published.