Laboratorio di Python

Documenti analoghi
Laboratorio di Python

Anno 4 Matrice inversa

Informatica B

ESERCIZI SULLE MATRICI

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Laboratorio di Python (con Linux)

Laboratorio di Python

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Esercitazioni di Algebra e Geometria

Matrici quadrate particolari

Il determinante. Calcolo del determinante di matrici particolari. matrici di ordine 2: sia. a11 a A = allora

La simulazione con DERIVE Marcello Pedone LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE

MATRICI E SISTEMI LINEARI

Lezione 4 - Esercitazioni di Algebra e Geometria - Anno accademico

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

Determinanti. Definizione ed esempi. Definizione ed esempi. Proprietà dei determinanti Rango di matrici

Richiami di algebra lineare

Laboratorio di Python

6) Tradurre la definizione ottenuta nel punto 1 in Lisp e calcolare degli esempi sul computer.

SISTEMI LINEARI: APPROFONDIMENTI ED ESEMPI

= elemento che compare nella seconda riga e quinta colonna = -4 In generale una matrice A di m righe e n colonne si denota con

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Corso di Geometria BIAR, BSIR Esercizi 2: soluzioni

Esercitazione di Analisi Matematica II

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Programmazione in Python per la bioinformatica

Laboratorio di Python

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Usare Python in Linux

3. Matrici e algebra lineare in MATLAB

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Le matrici. Sia K un campo con elemento neutro dell addizione 0 ed elemento neutro della moltiplicazione 1.

ha come obiettivo quello di costruire a partire da A una matrice U, m n, che abbia il

Corso di Linguaggi di Programmazione

MATRICI. 1. Esercizi

Operazioni sui vettori

2. Risolvere con il metodo di eliminazione di Gauss con pivoting parziale il seguente sistema lineare:

Costrutti condizionali e iterativi

Quadrato Magico. Fondamenti di Programmazione

Modularizzazione del software

Introduzione al MATLAB c Parte 3 Script e function

ALGEBRA LINEARE PARTE II

MATRICI E VETTORI APPROFONDIMENTO PER IL CORSO DI LABORATORIO DI INFORMATICA SARA POLTRONIERI

Foglio Elettronico Lezione 1

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

Introduzione al software R

Vettori e matrici. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

L Allocazione Dinamica della Memoria

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili

COMANDI ITERATIVI. Ivan Lanese

Prodotto scalare e prodotto vettoriale. Elisabetta Colombo

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Fondamenti di Programmazione

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

2x 5y +4z = 3 x 2y + z =5 x 4y +6z = A =

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up

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

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014

Algoritmi di ordinamento: Array e ricorsione

Elementi di Algebra Lineare Matrici e Sistemi di Equazioni Lineari

Fondamenti di Informatica

Scilab. Matrici Bidimensionali. Corso di Informatica CdL: Chimica. Claudia d'amato.

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Linguaggio C++ 8. Matrici

Codice Gray. (versione Marzo 2007)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

LEZIONE 2. ( ) a 1 x 1 + a 2 x a n x n = b, ove a j, b R sono fissati.

MATLAB (II parte) Commenti. Input/Output (I/O) Istruzioni di Input/Output (I/O)

MATLAB parte II. Array

Problemi, istanze, soluzioni

Transcript:

Laboratorio di Python Matrici con Liste Lab09 5 Aprile 2017

Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa

Esercizio 1 per casa Scrivere una funzione che verifica se una lista è ordinata in modo crescente ( ) (supponiamo che la lista contenga oggetti ordinabili)

Esercizio 1 per casa Scrivere una funzione che verifica se una lista è ordinata in modo crescente ( ) (supponiamo che la lista contenga oggetti ordinabili) 1 def o r d i n a t a C r e s c e n t e ( L ) : 2 i f len ( L )==0: 3 return True 4 f o r i i n range ( 1, len ( L ) ) : 5 i f L [ i ]<L [ i 1]: 6 return F a l s e 7 return True

Esercizio 2 per casa Scrivere una funzione che presi come parametri due liste ordinate in modo crescente (verificarlo usando la funzione dell esercizio precedente) ne crei una terza, anch essa ordinata, dall unione delle due.

Esercizio 2 per casa I 1 import Es1L08 a s o l 2 3 def u n i s c i O r d i n a t e ( L1, L2 ) : 4 i f ( not o l. o r d i n a t a C r e s c e n t e ( L1 ) ) or ( not o l. o r d i n a t a C r e s c e n t e ( L2 ) ) : 5 p r i n t ( Le l i s t e devono e s s e r e o r d i n a t e i n modo c r e s c e n t e ) 6 return None 7 LR = [ ] 8 i = 0 9 j = 0 10 while i <len ( L1 ) and j <len ( L2 ) : 11 i f L1 [ i ]<=L2 [ j ] : 12 LR. append ( L1 [ i ] ) 13 i+=1 14 e l s e : 15 LR. append ( L2 [ j ] ) 16 j+=1

Esercizio 2 per casa II 17 18 i f i <len ( L1 ) : 19 LR = LR + L1 [ i : ] 20 e l s e : 21 LR = LR + L2 [ j : ] 22 23 return LR

Esercizio 3 per casa Scrivere una funzione ripetis(s) che data una lista di numeri naturali s, restituisce una nuova lista in cui compaiono gli stessi elementi di s e nello stesso ordine, ma ciascun s[i] è ripetuto s[i] volte. (Esempio: da [3,0,2] si deve ottenere [3,3,3,2,2].)

Esercizio 3 per casa Scrivere una funzione ripetis(s) che data una lista di numeri naturali s, restituisce una nuova lista in cui compaiono gli stessi elementi di s e nello stesso ordine, ma ciascun s[i] è ripetuto s[i] volte. (Esempio: da [3,0,2] si deve ottenere [3,3,3,2,2].) 1 def r i p e t i s ( s ) : 2 r e s = [ ] 3 f o r e i n s : 4 r e s += [ e ] e 5 return r e s 1 #a l t e r n a t i v a 2 def r i p e t i s 2 ( s ) : 3 r e s = [ ] 4 f o r e i n s : 5 f o r i i n range ( e ) : 6 r e s. append ( e ) 7 return r e s

Esercizio 4 per casa Scrivere una funzione analoga analoga alla precedente, ma che modifica la lista s.

Esercizio 4 per casa Scrivere una funzione analoga analoga alla precedente, ma che modifica la lista s. 1 def r i p e t i s p o s t o ( s ) : 2 i = 0 3 while i <len ( s ) : 4 e = s [ i ] 5 del s [ i ] 6 s [ i : i ] = [ e ] e #i n s e r i m e n t o s o t t o l i s t a 7 i = i+e

Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa

Matrici come liste di liste Come possiamo rappresentare un matrice A r c in Python? Per esempio, la matrice A 3 2 : 0 1 A = 3 2 5 6 può essere rappresentata come una lista di liste. A = [[0,1],[3,2],[5,6]] Notiamo che: la notazione è coerente: quanto vale A[1][1]? (Nb: ricordate, in Informatica si parte da 0...) len(a) = 3, len(a[0]) = 2 Semplificazione: I vettori (matrici unidimensionali) sono vettori riga e vengono rappresentati come una lista che ha come primo elemento una lista. Dunque: [1, 2, 3] è una lista di numeri, ma non una matrice (e dunque neanche un vettore riga) [[1, 2, 3]] è un vettore riga, cioè una matrice [[1], [2], [3]] è un vettore colonna, trasposto del precedente.

Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa

Semplificazioni e suggerimenti In tutti gli esercizi seguenti - se non diversamente specificato - supporremo per brevità che l utente inserisca matrici e vettori ben formati (dunque con la sintassi espressa in precedenza, tutte le righe della stessa lunghezza, elementi tutti numerici...) Nel codice allegato alla lezione verranno fornite anche le funzioni necessarie a controllare che l input rappresenti matrici e vettori ben formati Gli esercizi seguenti sono tutte funzioni ausiliarie necessarie per calcolare il prodotto tra due matrici Consiglio: svolgere tutti gli esercizi nello stesso file chiamato matrici.py

Esercizio Scrivere una funzione che stampa una matrice presa come parametro Esempio se A = [[10000,12],[3,2],[5,6]] stampa esattamente: 10000 12 3 2 5 6 Suggerimento: usare print(e, end='\t')

Esercizio Scrivere una funzione che stampa una matrice presa come parametro Esempio se A = [[10000,12],[3,2],[5,6]] stampa esattamente: 10000 12 3 2 5 6 Suggerimento: usare print(e, end='\t') 1 def stampamatrice (M) : 2 f o r r i g a i n M: 3 f o r e i n r i g a : 4 p r i n t ( e, end= ' \ t ' ) 5 p r i n t ( ) #a capo dopo o g n i r i g a

Esercizio Scrivere una funzione che, presi come parametri due liste (non vettori riga) moltiplicabili (verificare che abbiano la stessa lunghezza), calcola e restituisce il prodotto scalare, oppure None.

Esercizio Scrivere una funzione che, presi come parametri due liste (non vettori riga) moltiplicabili (verificare che abbiano la stessa lunghezza), calcola e restituisce il prodotto scalare, oppure None. 1 def m o l t l i s t e (U, V) : 2 i f len (U)==len (V) : 3 p r s c = 0 4 f o r i i n range ( len (V) ) : 5 p r s c = p r s c + (U[ i ] V[ i ] ) 6 return p r s c 7 e l s e : 8 return None

Un altra possibile soluzione in stile Python 1 def m o l t l i s t e 2 (U, V) : 2 i f len (U)==len (V) : 3 p r s c = 0 4 f o r eu, ev i n z i p (U, V) : #l o posso f a r e p e r c h e ' hanno l a s t e s s a l e n 5 p r s c = p r s c + eu ev 6 return p r s c 7 e l s e : 8 return None

Esercizi da una riga Scrivere tre funzioni: Una funzione che prende come parametro una matrice e restituisce il numero delle sue righe Una funzione che prende come parametro una matrice e restituisce il numero delle sue colonne Una funzione che verifica se due matrici prese come parametri possono essere moltiplicate tra loro

Esercizi da una riga Scrivere tre funzioni: Una funzione che prende come parametro una matrice e restituisce il numero delle sue righe Una funzione che prende come parametro una matrice e restituisce il numero delle sue colonne Una funzione che verifica se due matrici prese come parametri possono essere moltiplicate tra loro 1 def r i g h e (M) : 2 return len (M) 3 4 def c o l o n n e (M) : 5 return len (M[ 0 ] ) 6 7 def s o n o m a t r m o l t (M,N) : 8 return c o l o n n e (M) == r i g h e (N)

Esercizio Scrivere una funzione che calcola e restituisce la trasposta di una matrice presa come parametro.

Esercizio Scrivere una funzione che calcola e restituisce la trasposta di una matrice presa come parametro. 1 def t r a s p o s t a (M) : 2 MT = [ ] 3 r = r i g h e (M) 4 i f r == 0 : #vuota 5 return MT 6 e l s e : 7 c = c o l o n n e (M) 8 f o r i i n range ( c ) : #c i c l o s u l l e c o l o n n e 9 c o l = [ ] #i ma c o l o n n a 10 f o r j i n range ( r ) : #c i c l o s u l l e r i g h e 11 c o l. append (M[ j ] [ i ] ) 12 #ora i n c o l ho l a i ma colonna, che d i v e n t a l ' i ma r i g a 13 MT. append ( c o l ) 14 return MT

Esercizio Scrivere una funzione che restituisce la matrice prodotto tra due matrici prese come parametri (se non sono moltiplicabili, stampa un messaggio di errore e restituisce None). Suggerimento: usare la matrice trasposta per fare il prodotto scalare tra le righe di A e le righe della trasposta di B.

Soluzione 1 def molt mat (A,B) : 2 i f s o n o m a t r m o l t (A, B) : # se sono molt. 3 AB = [ ] #p r o d o t t o 4 BT = t r a s p o s t a (B) #t r a s p o s t a d i B 5 f o r i i n range ( r i g h e (A) ) : #r i g. d i A ( e AB) 6 r i g a = [ ] #i ma r i g a d i AB 7 #j s c o r r e r i g h e d i BT (= c o l d i B e AB) 8 f o r j i n range ( r i g h e (BT) ) : 9 i j = m o l t l i s t e (A[ i ],BT[ j ] ) 10 r i g a. append ( i j ) #elemento i n r i g a 11 AB. append ( r i g a ) #r i g a i n r i s u l t a t o 12 return AB 13 e l s e : 14 p r i n t ( M a t r i c i non m o l t i p l i c a b i l i ) 15 return None

Esercizi per casa (per il 10/04/2017 ore 13:59) (Mail: Lab09-...) Anche usando le funzioni viste a lezione: 1. Scrivere una funzione che determina se il suo parametro è una matrice quadrata 2. Scrivere una funzione che prende come parametri una matrice e un numero (verificare che lo sia) e restituisce il prodotto della matrice per quel numero. 3. Scrivere una funzione ricorsiva per calcolare il determinante di una matrice quadrata di ordine qualsiasi, con lo sviluppo di Laplace. Può essere utile una funzione ausiliaria per calcolare le sottomatrici per i minori. In particolare, fare attenzione a non modificare la matrice ma a creare una nuova matrice (dunque una deep copy - dettagli qui - per andare in profondità nelle righe). Hint: usare ad esempio copy.deepcopy oppure costruire a mano la sottomatrice con due cicli annidati.