GNU Linear Programming Kit
|
|
- Ippolito Rizzo
- 8 anni fa
- Visualizzazioni
Transcript
1 GNU Linear Programming Kit Modeling Language GNU MathProg Versione 4.11 (Draft Edition, July 2006) (Traduzione in italiano, agosto 2007)
2 2 The GLPK package is part of the GNU Project released under the aegis of GNU. Copyright c 2000, 2001, 2002, 2003, 2004, 2005, 2006 Andrew Makhorin, Department for Applied Informatics, Moscow Aviation Institute, Moscow, Russia. All rights reserved. Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA , USA. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
3 3 Indice 1 Introduzione Problema di programmazione lineare Oggetti di un modello Struttura della descrizione di un modello Codifica della descrizione di un modello Nomi simbolici Stringhe numeriche Stringhe alfabetiche Parole-chiave Delimitatori Commenti Espressioni Espressioni numeriche Espressioni simboliche Espressioni indicizzanti e indici dummy Espressioni di insiemi Espressioni logiche Espressioni lineari Asserzioni Asserzione di insieme Asserzione di parametro Asserzione di variabile Asserzione di vincoli (lineari) Asserzione della funzione obiettivo Asserzione di soluzione Asserzione di controllo (check) Asserzione di display Asserzione di printf Asserzione di for Definizione dei dati di un modello Codifica della sezione dati Blocco dati di insiemi Blocco dati di parametro A Uso del traduttore di MathProg con le API di GLPK 45 B Risoluzione di modelli con il solver glpsol 46 C Esempio di descrizione di modello 47 C.1 Descrizione di modello scritto in GNU MathProg C.2 Problema LP generato C.3 Soluzione ottima del problem LP generato
4 4 1 Introduzione GNU MathProg è un linguaggio di modeling che permette di descrivere modelli matematici di programmazione lineare 1. La descrizione di un modello scritto nel linguaggio GNU MathProg consiste in un insieme di asserzioni (statements) e di blocchi di dati definiti dall utente usando gli elementi del linguaggio descritto in questo documento. Un programma, chiamato traduttore di modello, analizza il modello descritto con il linguaggio GNU MathProg e lo traduce in strutture dati interne, le quali possono essere usate sia per generare un instanza di un problema di programmazione matematica, sia per ottenere una soluzione numerica del problema. Per ottenere una soluzione numerica si deve usare un altro programma chiamato solver (risolutore). 1.1 Problema di programmazione lineare In MathProg si considera la formulazione di programmazione lineare (LP, Linear Programming) seguente: minimize (maximize) Z = c 1 x m+1 + c 2 x m c n x m+n + c 0 (1) rispettando i vincoli lineari: x 1 = a 11 x m+1 + a 12 x m a 1n x m+n x 2 = a 21 x m+1 + a 22 x m a 2n x m+n (2) x m = a m1 x m+1 + a m2 x m a mn x m+n e i limite (bounds) sulle variabili: l 1 x 1 u 1 l 2 x 2 u 2... l m+n x m+n u m+n (3) dove: x 1,x 2,...,x m sono variabili ausiliarie; x m+1,x m+2,...,x m+n sono variabili strutturali; Z è la funzione obiettivo; c 1,c 2,...,c n sono i coefficienti della funzione obiettivo; c 0 è il termine costante della funzione obiettivo; a 11, a 12,..., a mn sono i coefficienti dei vincoli; l 1,l 2,...,l m+n sono i lower bounds delle variabili; u 1,u 2,...,u m+n sono i upper bounds delle variabili. I bounds delle variabili possono essere sia limitati che illimitati. Inoltre, i bounds di una variabile potrebbero essere uguali tra loro. Quindi, i seguenti tipi di variabili sono possibili: Bounds di una variabile < x k < + l k x k < + < x k u k l k x k u k l k = x k = u k Tipo di variabile Variabile libera e illimitata Variabile con lower bound Variabile con upper bound Variabile con doppio bound Variabile fissata 1 Il linguaggio GNU MathProg è un sottoinsieme del linguaggio AMPL.
5 5 I tipi di variabili mostrati sopra sono validi sia per le variabili strutturalli che le variabili ausiliarie. Oltre a problemi di programmazione lineare puri, MathProg permette di definire problemi di programmazione lineare intera (MIP, Mathematical Integer Programming), dove alcune (o tutte) tra le variabili strutturali sono vincolate ad assumere valori interi. 1.2 Oggetti di un modello In MathProg il modello è descritto in termini di insiemi, parametri, variabili, vincoli, e obiettivi, che sono chiamati gli oggetti di un modello. L utente introduce dei particolari oggetti del modello usando le asserzioni del linguaggio. Ogni oggetto di un modello ha associato un nome simbolico che lo identifica unicamente ed è usato come riferimento all oggetto stesso. Gli oggetti di un modello, compresi gli insiemi, possono essere vettori multidimensionali indicizzati da elementi di un insieme. Formalmente, il vettore n-dimensionali A è la funzione: A : Ξ, (4) dove S 1 S 2... S n è un sottoinsieme del prodotto Cartesiano degli insiemi indice, ed Ξ è un insieme degli elementi del vettore. In MathProg l insieme è chiamato dominio dei pedici (subscript domain). I suoi elementi sono n-tuple (i 1,i 2,...,i n ), dove i 1 S 1, i 2 S 2,..., i n S n. Se n = 0, il prodotto cartesiano (4) ha esattamente un elemento (la 0-tupla), cosi che si può pensare ad oggetti scalari come vettori 0-dimensionali che hanno un solo elemento. Il tipo di elementi di un vettore è determinato dal tipo del corrispondente oggetto di modello come segue: Oggetto di modello Set Parameter Variable Constraint Objective Elemento del vettore Membro dell insieme Numero o simbolo Variabile strutturale Vincolo Funzione obiettivo Per poter accedere ad un particolare membro di un oggetto, l oggetto stesso deve essere provvisto di un pedice. Per esempio, se a è un vettore di parametri a due dimensioni costruito sul prodotto Cartesiano I J, un riferimento al suo particolare membro può essere scritto come a[i,j], dove i I e j J sono gli indici. Gli oggetti scalari essendo a 0-dimensione non hanno bisogno di pedici. 1.3 Struttura della descrizione di un modello È spesso auspicabile descrivere un modello che può usare dati diversi per ogni istanza di problema che si può risolvere usando quel modello. Per questo motivo in MathProg la descrizione del modello consiste di due parti: la sezione di modello e la sezione dati. Sezione di modello è la parte principale di descrizione del modello che contiene la dichiarazione degli oggetti di modello ed è comune per tutti i problemi che corrispondono a quel modello matematico. Sezione dati è una parte opzionale della descrizione del modello che contiene dati specifici per una particolare istanza del problema descritto dal modello.
6 6 Le sezione di modello e di dati possono essere incluse nello stesso file oppure in due file separati. Di solito conviene avere due file separati in modo da poter definire più istanze di uno stesso modello matematico, riutilizzando la stessa sezione di modello.
7 7 2 Codifica della descrizione di un modello La descrizione di un modello è codificata in semplice formato testo usando solo alcuni caratteri ASCII. I caratteri che possono essere usati nella descrizione di un modello sono i seguenti: i caratteri dell alfabeto (inglese): A B... Z a b... z _ i caratteri numerici: i caratteri speciali:! " # & ( ) * +, -. / : ; < = > [ ] ^ { } i caratteri di spaziatura (white-spaces): SP HT CR NL VT FF All interno dei commenti si può usare qualsiasi carattere ASCII (a parte i caratteri di controllo). I caratteri di spaziatura vengono ignorati, ma possono essere usati liberamente per migliorare la leggibilità della descrizione di un modello. Sintatticamente la descrizione di un modello è una sequenza di unità lessicali appartenenti ad una delle seguenti categorie: nomi simbolici; stringhe numeriche; stringhe alfabetiche; parole chiavi; delimitatori; commenti. Le unità lessicali del linguaggio sono descritte nei prossimi paragrafi. 2.1 Nomi simbolici I nomi simbolici consistono di stringhe di caratteri alfabetici e numerici, in cui il primo carattere deve essere obbligatoriamente alfabetico. Tutti i nomi simbolici sono diversi e case sensitive. alpha123 This_is_a_name _P123_abc_321 I nomi simbolici sono usati per identificare gli oggetti di modello (insiemi, parametri, variabili, vincoli, funzione obiettivo) e gli indici dummy. Tutti i nomi simbolici (eccetto gli indici dummy) devono essere unici, cioè la descrizione di un modello non deve avere oggetti con lo stesso nome. I nomi simbolici e gli indici dummy devono essere unici all interno della loro visibilità, ossia dove rimangono validi. 2.2 Stringhe numeriche Una stringa numerica ha la forma xxesyy, dove xx è un numero reale con eventualmente il punto per i decimali, s è il segno + oppure -, yy è un intero per l esponente decimale. La lettera E non è case sensitive e alternativamente può essere usata la e E+5.78
8 e-7 Le stringhe numeriche rappresentano quantità numeriche, ed hanno il loro ovvio significato matematico. 2.3 Stringhe alfabetiche Una stringa alfabetica è una sequenza di caratteri racchiusa tra virgolette singole o doppie. L uso di virgolette singole o doppie è equivalente. Se un virgoletta singola è parte di una stringa alfabetica racchiusa da virgolette singole, allora deve essere inserita due volte. Analogamente, se una virgoletta doppia è parte di una stringa alfabetica racchiusa da virgolette doppie, allora deve essere inserita due volte. This is a string "This is another string" = 3 That s all "She said: ""No""" Le stringhe alfabetiche sono usate per rappresentare quantità simboliche. 2.4 Parole-chiave Una parola-chiave è una sequenza di caratteri alfabetici ed eventualmente di qualche carattere speciale. Tutte le parole chiavi ricadono in due categorie: parole chiavi riservate, che non possono essere usate come nomi simbolici, e parole chiavi non riservate, le quali se riconosciute dal contesto possono essere usate come nomi simbolici. Le parole chiavi sono: and diff if less or union by div in mod symdiff within cross else inter not then Le parole chiavi non riservate sono descritte nelle sezioni seguenti. Tutte la parole chiavi hanno un significato ben preciso, che sarà spiegato quando verrano discussi i relativi costrutti sintattici, dove le parole chiavi sono usate. 2.5 Delimitatori Un delimitatore può essere sia un singolo carattere speciale, che una sequenza di due caratteri speciali: + ^ ==! : ) - & >= && ; [ * < > := ] / <= <>... { ** =!=, ( } Se un delimitatore consiste di due caratteri, non ci può essere nessuno spazio tra i due caratteri. Tutti i delimitatori hanno un significato preciso, che sarà spiegato quando verrano discussi i costrutti sintattici in cui sono usati.
9 9 2.6 Commenti Al fine di documentare la descrizione codificata di un modello matematico si possono inserire dei commenti in due possibili forme. La prima forma è quella di un commento su di una singola linea, che comincia con il carattere # e continua sino alla fine della linea. La seconda forma è una sequenza di commenti, la quale è una sequenza qualsiasi di caratteri racchiusa tra /* e */. set s{1..10}; # This is a comment /* This is another comment */ I commenti sono ignorati dal traduttore di modello e possono apparire in qualsiasi punto della descrizione di un modello, in cui sono consentiti i caratteri di spaziatura.
10 10 3 Espressioni Un espressione è una regola per calcolare un valore. Le espressioni nella descrizione di un modello sono usate come componenti di alcune asserzioni. Nel caso più generale le espressioni consistono di operandi e operatori. Le espressioni sono classificate in base al loro valore di ritorno nel modo seguente: espressioni numeriche; espressioni simboliche; espressioni di indicizzazione; espressioni di insiemi; espressioni logiche; espressioni lineari. 3.1 Espressioni numeriche Un espressione numerica è una regola per calcolare un singolo valore numerico rappresentato come numero in virgola mobile. L espressione numerica primaria può essere una stringa numerica, un indice dummy, un parametro non indicizzato (uno scalare), un parametro con indici, un riferimento ad una funzione interna, un espressione numerica iterata, un espressione numerica condizionale, oppure un altra espressione numerica racchiusa tra parentesi stringa numerica j indice dummy time parametro non indicizzato a[ May 2003,j+1] parametro con pedice (indice) abs(b[i,j]) riferimento a funzione interna sum{i in S diff T} alpha[i] * b[i,j] espressione iterata if i in I and p >= 1 then 2 * p else q[i+1] espressione condizionale (b[i,j] +.5 * c) espressione tra parentesi Espressioni numeriche più generali contenenti due o più espressioni numeriche primarie possono essere costruite usando degli opportuni operatori aritmetici. j+1 2 * a[i-1,j+1] - b[i,j] sum{j in J} a[i,j] * x[j] + sum{k in K} b[i,k] * x[k] (if i in I and p >= 1 then 2 * p else q[i+1]) / (a[i,j] + 1.5) Stringhe numeriche. Se l espressione numerica primaria è una stringa numerica, il valore risultante è ovvio. Indici dummy. Se l espressione numerica primaria è un indice dummy, il valore risultante è il valore corrente assegnato all indice dummy. Parametri senza indici. Se l espressione numerica primaria è un parametro senza indice (che deve essere 0-dimensionale), il valore risultante è il valore del parametro.
11 11 Parametri indicizzati. L espressione numerica primaria, che si riferisce ad un parametro indicizzato, ha la seguente forma sintattica: nome[i 1,i 2,...,i n ] dove nome è il nome simbolico di un parametro, e i 1, i 2,..., i n sono indici (pedici). Ogni indice deve essere un espressione numerica o simbolica. Il numero di indici n deve essere uguale alla dimensione del parametro alla quale la lista di indici è associato. I valori delle espressioni indice sono usati per identificare un particolare membro del parametro che determina il valore risultante dell espressione primaria. Riferimenti a funzioni. In MathProg esistono le seguenti funzioni interne che possono essere utilizzate in espressioni numeriche: abs(x) valore assoluto atan(x) arctan x (in radianti) atan(y,x) arctan y/x (in radianti) card(x) cardinalità (numero di elementi) di un insieme x ceil(x) il più piccolo intero non minore di x ( ceiling of x ) cos(x) cos x (in radianti) floor(x) il più grande intero non maggiore di x ( floor of x ) exp(x) esponenziale base-e: e x length(x) lunghezza della stringa di caratteri x log(x) logaritmo naturale log x log10(x) logaritmo decimale log 10 x max(x 1,x 2,...,x n ) il massimo tra x 1,x 2,...,x n min(x 1,x 2,...,x n ) il minimo tra x 1,x 2,...,x n round(x) arrotondamento di x all intero più vicino round(x,n) arrotondamento di x a n cifre decimali sin(x) sin x (in radianti) sqrt(x) radice quadrata x trunc(x) x arrotondato all intero più vicino trunc(x,n) x arrotondato alla n-essima cifra decimale Irand224() numero intero pseudo-casuale uniformemente distribuito in [0,2 24 ) Uniform01() numero pseudo-casuale uniformemente distribuito in [0,1) Uniform(a,b) numero pseudo-casuale uniformemente distribuito in [a,b) Normal01() numero pseudo-casuale con distribuzione gaussiana µ = 0 e σ = 1 Normal(µ,σ) numero pseudo-casuale con distribuzione gaussiana µ e σ Gli argomenti di queste funzioni (ad eccezione di card e length) devono essere espressioni numeriche. L argomento di card deve essere un espressione di insiemi. L argomento di length deve essere un espressione simbolica. Il valore risultante di un espressione numerica costituita da un riferimento ad una funzione è il risultato dell applicazione della funzione ai suoi argomenti. Si consideri che ogni funzione che genera un numero pseudo-casuale ha un argomento nascosto (un suo proprio stato interno), il quale viene modificato ogni volta che viene applicata la funzione stessa. Quindi, se la funzione è applicata ripetutamente anche con argomenti identici, il valore risultante cambia ogni volta.
12 12 Espressioni iterate. un espressione numerica iterata è un espressione primaria con la seguente forma sintattica: operatore-di-iterazione espressione-di-indici integrando dove operatore-di-iterazione è il nome simbolico dell operatore di iterazione da eseguire, espressione-di-indici è un espressione la quale introduce degli indici dummy e controlla le iterazioni, l integrando è un espressione numerica che partecipa nell operazizone. In MathProg ci sono quattro operatori di iterazione che possono essere usati in espressioni numeriche: sum sommatoria (i 1,...,i x(i n) 1,...,i n ) prod produttoria (i 1,...,i x(i n) 1,...,i n ) min minimo min (i1,...,i n) x(i 1,...,i n ) max massimo max (i1,...,i n) x(i 1,...,i n ) dove i 1,...,i n sono gli indici dummy introdotti dall espressione di indici; è il domino, un insieme di n-tuple specificate dall espressione indicizzante la quale definisce particolare valori assegnati agli indici dummy durante ogni singola iterazione; e x(i 1,...,i n ) è l integrando, un espressione numerica il cui valore risultante dipende dagli indici dummy. Il valore risultante di un espressione numerica iterata è il risultato dell applicazione di un operatore di iterazione ai suoi integrandi appartenenti a tutte le n-tuple contenute nel dominio. Espressioni condizionali. un espressione numerica condizionale è un espressione numerica primaria avente la seguente forma sintattica: if b then x else y if b then x dove b è un espressione logica, ed x e y sono espressioni numeriche. Il valore risultante di un espressione condizionale dipende dal valore dell espressione logica che segue la parola-chiave if. Se il suo valore è true, il valore dell espressione condizionale è il valore dell espressione che segue la parola-chiave then. Altrimenti, se il suo valore è false, il valore dell espressione condizionale è il valore dell espressione che segue la parola-chiave else. Se si usa la forma abbreviata dell espressione condizionale e il valore dell espressione logica è false, allora il valore risultante è zero. Espressioni tra parentesi. Qualsiasi espressione numerica può essere racchiusa tra parentesi che sintatticamente la rendono un espressione numerica primaria. Le parentesi possono essere usate in espressioni numeriche, come in algebra, per specificare l ordine desiderato con il quale le operazioni devono essere eseguite. Quando si usano le parentesi, l espressione tra parentesi viene valutata prima che il suo valore di ritorno sia utilizzato. Il valore di ritorno di un espressione tra parentesi è lo stesso dell espressione racchiusa tra parentesi.
13 13 Operazioni aritmetiche. In MathProg esistono le seguenti operazioni aritmetiche, le quali possono essere usate all interno di espressioni numeriche: x + y addizione x - y sottrazione + x addizione unaria (equivalente a 0+x) - x sottrazione unaria (equiavalente a 0-x) x less y differenza positiva (i.e., if x < y then 0 else x y) x * y moltiplicazione x / y divisione x div y quoziente di una divisione esatta x mod y resto di una divisione esatta x ** y, x ^ y esponenziale (elevazione a potenza) dove x e y sono espressioni numeriche. Se l espressione ha più di un operatore aritmetico, tutte le operazione sono calcolate da sinistra a destra secondo delle regole precise di precedenza (vedi sotto) con la sola eccezzione dell esponenziale che viene eseguito da destra verso sinistra. Il valore risultante di un espressione cha ha degli operatori aritmetici, è il risultato dell applicazione degli operatori ai suoi operandi. Regole di precedenza degli operatori aritmetici. La lista seguente definisce le regole di precedenza degli operatori aritmetici: Operazione Precedenza Valutazione di funzioni (abs, ceil, etc.) 1 Esponenziale (**, ^) 2 Addizione e sottrazione unaria (+, -) 3 Moltiplicazione e sottrazzione (*, /, div, mod) 4 Operatori di iterazioni (sum, prod, min, max) 5 Adddizione e sottrazione (+, -, less) 6 Espressioni condizionali (if...then...else) 7 Queste regole di precedenza definiscono quale tra due operazioni consecutive deve essere eseguita per prima. Se il primo operatore ha una precedenza maggiore o uguale al secondo, viene valutato per primo. Altrimenti, il secondo operatore è confrontato con il terzo, e cosi via. Quando si raggiunge la fine dell espressione, tutte le operazioni rimanenti sono eseguite in ordine inverso. 3.2 Espressioni simboliche Un espressione simbolica è una regola per calcolare un singolo valore simbolico rappresentato come stringa alfabetica. L espressione simbolica primaria può essere una stringa di carattei, un indice dummy, un parametro non indicizzato (una costante), un parametro indicizzato, un riferimento ad funzione interna, un espressione condizionale simbolica, oppure un altra espressione racchiusa tra parentesi. È anche possibile usare un espressione numerica come espressione primaria simbolica, in qual caso il valore risultante di un espressione numerica è automaticamente convertita nel suo tipo simbolico.
14 14 May 2003 stringa alfabetica j indice dummy p parametro non indicizzato s[ abc,j+1] parametro indicizzato substr(name[i],k+1,3) riferimento a funzione if i in I then s[i,j] & "..." else t[i+1] espressione condizionale ((10 * b[i,j]) &.bis ) espressione tra parentesi Espressioni simboliche più generali contenenti due o più espressioni primarie simboliche possono essere costruite utilizzanto degli operatori di concatenazione. abc[ & i &, & j & ] "from " & city[i] & " to " & city[j] I principi di valutazione di espressioni simboliche sono completamente analoghi a quelli dati per le espressioni numeriche (vedi sopra). Riferimenti a funzione. In MathProg ci sono le seguenti funzioni interne che possono essere utilizzate in espressioni simboliche: substr(x,y) substr(x,y,z) sottostringa di x che inizia alla posizione y sottostringa di x che inizia alla posizione y avendo lunghezza z Il primo argomento di substr deve essere un espressione numerica, mentre gli altri due devono essere delle espressioni numeriche. Il valore risultante di un espressioni simbolica costituita da un riferimento ad una funzione, è il risultato di appplicare la funzione ai suoi argomenti. Operatori simbolici. Attualmente in MathProg ci sono gli operatori simbolici seguenti: x & y dove x e y sono espressioni simboliche. Questo operatore concatena i suoi due operandi simbolici, che possono essere delle stringhe alfabetiche. Regole di precedenza delle operazioni La lista seguente definisce le regole di precedenza degli operatori simbolici: Operazione Precedenza Valutazione delle espressioni numeriche 1 7 Concatenazione (&) 8 Valutazione condizionale (if...then...else) 9 Queste regole di precedenza hanno lo stesso significato di quelle definite nella sottosezione Espressioni numeriche.
15 Espressioni indicizzanti e indici dummy Un espressione indicizzante è una costruzione ausiliaria che specifica un insieme di n-tuple e introduce degli indici dummy, e ha due forme sintattiche: {entry 1, entry 2,..., entry m } {entry 1, entry 2,..., entry m : predicato} (5) dove entry 1, entry 2,..., entry m sono entries di indici, e predicato è un espressione logica che specifica un predicato opzionale. Ogni entries di indici può avere una delle tre forme seguenti: t in S (t 1,t 2,...,t k ) in S S (6) dove t,t 1,t 2,...,t k sono indici, ed S è un espressione-insieme (discussa nella sezione seguente) che specifica gli elementi di un insieme. Il numero di indici nella entry indicizzante deve essere lo stesso della dimensione dell insieme base S, cioè se S consiste di 1-tuple, deve essere usate la prima forma, e se S consiste di n-tuple con n > 1 deve essere usata la seconda forma. Se si utilizza la prima forma, l indice t può solo essere un indice dummy. Se invece si usa la seconda forma, gli indici t 1,t 2,...,t k possono essere degli indici dummy o delle espressioni numeriche o simboliche, dove almeno un indice deve essere un indice dummy. La terza forma indicizzante ha lo stesso effetto come se ci fossero t (se S è 1-dimensionale) o t 1,t 2,...,t k (se S è n-dimensionale) elementi tutti specificati come indici dummy. Un indice dummy è un oggetto di modello ausiliare che agisce come una singola variable. I valori assegnati agli indici dummy sono compenenti di n-tuple di insiemi base, cioè sono quantità numeriche o simboliche. A scopi di riferimento, agli indici dummy possono essere dati dei nomi simbolici. Comunque, diversamente dagli oggetti di modello (insiemi, parametri,...) non devono essere esplicitamente dichiarati. Ogni nome simbolico non dichiarato, e usato come indice, è riconosciuto come nome simbolico del corrispondente indice dummy. I nomi simbolici di indici dummy sono validi solo all interno della visibilità delle espressioni indicizzanti, dove gli indici dummy sono introdotti. Al di fuori della loro visibilità gli indici dummy sono completamente inaccesibili, cosi che gli stessi nomi simbolici posson essere usati per altri scopi, in particolare per rappresentare indici dummy di altre espressioni indicizzanti. La visibilità di espressioni indicizzanti, dove la dicharazione implicita di indici dummy rimane valida, dipende dal contesto nel quale l espressione indicizzante è usata: 1. Se l espressione indicizzante è usata in operator di iterazione, la sua visibilità si estende sino alla fine dell integrando. 2. Se l espressione indicizzante è usata come espressione di insiemi primaria, la sua visibilità si estende sino alla fine della stessa espressione indicizzante. 3. Se l espressione indicizzante è usata per definire il dominio degli indici nella dichiarazione di qualche oggetto di modello, la sua visibilità si estende sino alla fine dell asserzione corrispondente. Il meccanismo di indicizzazione realizzato tramite le espressioni indicizzanti è spiegato meglio attraverso gli esempi mostrati sotto
16 16 Supponiamo di avere tre insiemi: A = {4,7,9} B = {(1,Jan),(1,Feb),(2,Mar),(2,Apr),(3, May),(3,Jun)} C = {a,b,c} (7) dove A e C consistono di 1-tuple (singoli valori), B consiste di 2-tuple (coppie). Considera la seguente espressione indicizzante: {i in A, (j,k) in B, l in C} (8) dove i, j, k, e l sono indici dummy. Anche se MathProg non è un linguaggio procedurale, per ogni espressione indicizzante può essere date una descrizione algoritmica-procedurale. In particolare, la descrizione algoritmica dell espressione indicizzante (8) è la seguente: for all i A do for all (j,k) B do for all l C do azione; dove agli indici dummy i, j, k, l sono assegnati consecutivamente gli elementi corrispondenti delle n-tuple dagli insiemi base A, B, C, e azione è una qualche azione che dipende dal contesto in cui l espressione indicizzante è usata. Per esempio, se l azione fosse la stampa a video dei valori correnti degli indici dummy, vedremmo: i = 4 j = 1 k = Jan l = a i = 4 j = 1 k = Jan l = b i = 4 j = 1 k = Jan l = c i = 4 j = 1 k = Feb l = a i = 4 j = 1 k = Feb l = b i = 9 j = 3 k = Jun l = b i = 9 j = 3 k = Jun l = c Suppponiamo di usare l espressione indicizzante (8) nella seguente operazione di iterazione: sum{i in A, (j,k) in B, l in C} p[i,j,k,l] ** 2 (9) dove p[i, j, k, l] può essere un parametro numerico 4-dimensionale oppure qualche espressione numerica il cui valore risultante dipende da i, j, k, e l. In questo caso l azione è una somma, e il valore risultante dell espressione numerica primaria (9) è : i A,(j,k) B,l C (p ijkl ) 2. Ora supponiamo che l espressione indicizzante (8) sia utilizzata come espressione primaria di insieme. In questo caso l azione è di raccogliere tutte le 4-tuple (quadruple) della forma (i, j, k, l) in un singolo insieme, il cui valore risulatante è semplicemente il prodotto cartesiano: A B C = {(i,j,k,l) i A,(j,k) B,l C}.
17 17 Si noti che in questo caso la stessa espressione indicizzante può essere scritta nella forma ridotta: {A, B, C} perchè gli indici dummy i,j,k,l non sono utilizzati e quindi il loro nome simbolico non è necessario. Infine, supponiamo che l espressione indicizzante (8) sia usata come il dominio di indici nella dichiarazione di un oggetto di modello 4-dimensionale, per esempio, di un parametro numerico: par p{i in A, (j,k) in B, l in C}... ; In questo caso l azione è di generare i membri del parametro, dove ogni membro ha la forma p[i, j, k, l]. Come detto prima, alcuni indici in (6) possono essere espressioni numeriche o simboliche, ma non indici dummy. In questo caso il valore risultante di tale espressione gioca il ruolo di qualche condizione logica di selezionare solo le n-tuple dal prodotto Cartesiano degli insiemi base, le quali soddisfano queste condizioni. Considera, per esempio, l espressione indicizzante seguente: {i in A, (i-1,k) in B, l in C} (10) dove i, k, l sono indici dummy, e i 1 è un espressione numerica. La descrizione algoritmica dell espressione indicizzante (10) è la seguente: for all i A do for all (j,k) B and j = i 1 do for all l C do action; Quindi, se l espressione indicizzante (10) è usata come set primario di base, il valore risultante è il seguente: {(4,May,a),(4,May,b),(4,May,c), (4,Jun,a),(4,Jun,b),(4,Jun,c)} Si noti che in questo caso l insieme risultante consiste di triple, e non di quadruple, perchè nell espressione indicizante (10) non c è un indice dummy che corrisponde al primo elemento delle coppie appartenenti all insieme B. La regola generale è : il numero di componenti di n-tuple definito da un espressione indicizzante è lo stesso del numero di indici dummy introdotti da quell espressione indicizzante, dove la corrispondenza tra indici dummy e componenti nelle n-tuple nell insieme risultante è posizionale, cioè il primo indice dummy corrisponde al primo elemento, il secondo indice dummy corrisponde al secondo elemento, e cosi via. In molti casi è necessario selezionare un sottoinsieme del prodotto Cartesiano di alcuni insiemi. Questo può essere ottenuto usando un predicato logico opzionale, il quale è specificato nell espressione indicizzante dopo l ultima o l unica entry indicizzante. Considera, per esempio, la seguente espressione indicizzante: {i in A, (j,k) in B, l in C: i <= 5 and k <> Mar } (11) dove l espressione logica che segue i due punti è un predicato. La descrizione algoritmica di questa espressione indicizzante è la seguente:
18 18 for all i A do for all (j,k) B do for all l C do if i 5 and k Mar then action; Quindi, se l espressione indicizzante (11) è usata come espressione primaria di un insieme, l insieme risultante è il seguente: {(4,1,Jan,a),(4,1,Feb,a),(4,2,Apr,a),...,(4,3,Jun,c)}. Se nessun predicato è specificato nell espressione indicizzante, ne è presente uno implicito di valore true. 3.4 Espressioni di insiemi Un espressione di insiemi è una regola per calcolare un insieme di elementi, ossia una collezione di n-tuple, dove i componenti delle n-tuple sono quantità numeriche o simboliche. L espressione primaria di insieme può essere un insieme alfa-numerico, un insieme non indicizzato, un insieme indicizzato, un insieme aritmetico, un espressione indicizzante, un espressione di insieme iterata, un espressione di insieme condizionale, o un altra espressione di insieme racchiusa tra parentesi. {(123, aaa ), (i+1, bbb ), (j-1, ccc )} insieme alfa-numerico I insieme non indicizzato S[i-1,j+1] insieme indicizzato 1..t-1 by 2 insieme aritmetico {t in 1..T, (t+1,j) in S: (t,j) in F} espressione indicizzante setof{i in I, j in J}(i+1,j-1) espressione iterata di insieme if i < j then S[i,j] else F diff S[i,j] espressione di insiemi condizionale (1..10 union ) espressione di insiemi tra parentesi Espressioni di insiemi più generali contenti due o più espressione primari di insiemi possono essere costruite usando alcuni operatori su insiemi. (A union B) inter (I cross J) cross (if i < j then { a, b, c } else { d, e, f }) Insiemi alfa-numerici. Un insieme alfa-numerico è un espressione primaria di insieme, la quale ha una delle due seguenti forme sintattiche: {e 1,e 2,...,e m } {(e 11,...,e 1n ),(e 21,...,e 2n ),...,(e m1,...,e mn )} dove e 1,..., e m, e 11,..., e mn sono espressioni numeriche o simboliche. Se si usa la prima forma, l insieme risultante consiste di 1-tuple enumerate all interno delle parentesi graffe. Si può specificare un insieme vuoto non avente 1-tuple. Se si usa la seconda forma, l insieme risultante consiste di n-tuple enumerate all interno delle parentesi graffe, dove una particolare n-tupla consiste degli elementi corrispondenti enumerati tra parentesi. Tutte le n-tuple devono avere lo stesso numero di componenti.
19 19 Insiemi non indicizzati. Se l espressione primaria di insieme è un insieme non indicizzato (il quale deve essere 0-dimensionale), l insieme risultante è un insieme di elementi associato con il corrispondente oggetto insieme. Insieme indicizzato. L espressione primaria di insieme, che si riferisce ad un insieme indicizzato, ha la seguente forma sintattica: nome[i 1,i 2,...,i n ] dove nome è un nome simbolico dell oggetto insieme, e i 1, i 2,..., i n sono i pedici (indici). Ogni pedice deve essere un espressione numerica o simbolica. Il numero di pedici nella lista di pedici deve essere della stessa dimensione dell oggetto insieme alla quale la lista è associata. I valori correnti delle espressioni di pedici sono usate per identificare un particolare membro dell insieme oggetto che determina l insieme risultante. Insiemi aritmetici. L espressione primaria di insieme, che costituisce un insieme aritmetico, ha una delle due seguenti forme sintattiche: t 0.. t f by δt t 0.. t f dove t 0, t 1, e δt sono espressioni numeriche (il valore di δt deve essere diverso da zero). La seconda forma è equivalente alla prima con δt = 1. Se δt > 0, l insieme risultante è determinato nel modo seguente: {t : k Z(t = t 0 + kδt, t 0 t t f )} Se δt < 0, l insieme risultante è determinato come segue: {t : k Z(t = t 0 + kδt, t f t t 0 )} Espressioni indicizzanti. Se l espressioni primaria di insieme è un espressione indicizzante, l insieme risultante è determinato come descritto nella sezione Espressioni indicizzanti e indici dummy (vedi sopra). Espressioni di iterazione. un espressione di insieme di iterazione è un espressione primaria di insieme avente una delle due forme seguenti: setof espressione-indicizzante integrando dove l espressione-indicizzante introduce gli indici dummy e controlla le iterazioni, l integrando è o un singolo valore numerico o simbolica, oppure una lista di espressioni numeriche o simboliche separate da virgole e racchiuse tra parentesi. Se l integrando è una singola espressione numerica o simbolica, l insieme risultante è costituito da 1-tuple ed è calcolato come segue: {x : (i 1,...,i n ) },
20 20 dove x è una valore dell integrando, i 1,...,i n sono indici dummy introdotti nell espressione indicizzante, è il dominio, un insieme di n-tuple specificato dall espressione indicizzante che definisce i valori specifici assegnati agli indici dummy durante l eseguzione dell operazione di iterazione. Se l integrando è una lista contente m espressioni numeriche o simboliche, l insieme risultante consiste di m-tuple ed è determinata come segue: {(x 1,...,x m ) : (i 1,...,i n ) }, dove x 1,...,x m sono valori di espressioni nella lista degli integrandi, i 1,...,i n e hanno lo stesso significato visto prima. Espressioni condizionali. Un espressione condizionale di insieme è un espressione primaria di insieme avente la seguente forma sintattica: if b then X else Y dove b è un espressione logica, X e Y sono espressioni di insieme, le quali devono definire insiemi della stessa dimensione. Il valore risultante delle espressione condizionale dipende dal valore dell espressione logica dell espressione condizionale che segue la parola-chiave if. Se il valore è true, l insieme risultante è il valore dell espressione che segue la parola-chiave then. Altrimenti, se l espressione logica assume il valore false, l insieme risultante è il valore dell espressione che segue la parola-chiave else. Espressioni tra parentesi. Qualsiasi espressione di insieme può essere racchiusa tra parentesi e diventare un espressione primaria di insieme. Le parentesi possono essere usate in espressioni di insiemi, come in algebra, per specificare l ordine desiderato in cui le operazioni deveno essere esguite. Dove le parentesi sono usate, l espressioni tra parentesi sono valutate prima di usare il valore di ritorno. Il valore risultante di un espressione tra parentesi è lo stesso del valore dell espressione racchiusa tra parentesi. Operatori di insieme. In MathProg ci sono i seguenti operatori di insieme che possono essere usati in espressioni di insiemi: X union Y X diff Y X symdiff Y X inter Y X cross Y unione X Y differenza X\Y differenenza simmetrica X Y intersezione X Y prodotto Cartesiano X Y dove X e Y sono espressioni di insiemi, i quali devono definire insiemi della stessa dimensione (ad eccezione del prodotto cartesiano). Se l espressione ha più di un operatore di insieme, tutti gli operatori sono eseguiti da sinistra verso destro secondo le regole di precedenza definite nel prossimo paragrafo (vedi sotto). Il valore risultante dell espressione, contenente degli operatori di insieme, è il risultato dell applicazione degli operatori ai loro operandi.
Rappresentazione dei numeri in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliLezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DettagliSistemi di Numerazione
Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema
DettagliMATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c
Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliAlessandro Pellegrini
Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione
DettagliCorso di Laurea in INFORMATICA
Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica
DettagliSISTEMI DI NUMERAZIONE DECIMALE E BINARIO
SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono
Dettaglila scienza della rappresentazione e della elaborazione dell informazione
Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione
DettagliOperazioni sui database
Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
DettagliInformatica. Rappresentazione dei numeri Numerazione binaria
Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione
DettagliElementi di informatica
Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni
DettagliLE FUNZIONI A DUE VARIABILI
Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre
Dettagli(anno accademico 2008-09)
Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato
DettagliI sistemi di numerazione
I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono
DettagliIntroduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari
Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro 6 Giugno 2007 Felice Iavernaro (Univ.
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliRichiesta pagina PHP (es: index.php)
PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con
DettagliSISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
DettagliAPPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)
ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,
DettagliGli algoritmi: definizioni e proprietà
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da
DettagliCalcolatori: Algebra Booleana e Reti Logiche
Calcolatori: Algebra Booleana e Reti Logiche 1 Algebra Booleana e Variabili Logiche I fondamenti dell Algebra Booleana (o Algebra di Boole) furono delineati dal matematico George Boole, in un lavoro pubblicato
DettagliFORMULE: Operatori matematici
Formule e funzioni FORMULE Le formule sono necessarie per eseguire calcoli utilizzando i valori presenti nelle celle di un foglio di lavoro. Una formula inizia col segno uguale (=). La formula deve essere
DettagliSistemi di Numerazione Binaria NB.1
Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato
DettagliAlgebra Booleana ed Espressioni Booleane
Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale
DettagliIl Modello Relazionale
Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981
Dettagli2. Codifica dell informazione
2. Codifica dell informazione Codifica Una codifica è una regola per associare in modo univoco i valori di un dato da codificare con sequenze di simboli. La corrispondenza definita dalla codifica è arbitraria,
DettagliCos è un Calcolatore?
Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per
DettagliInformazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
DettagliSISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
Dettagli1 Breve introduzione ad AMPL
1 Breve introduzione ad AMPL Il primo passo per risolvere un problema reale attraverso strumenti matematici consiste nel passare dalla descrizione a parole del problema al modello matematico dello stesso.
DettagliI database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:
Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare
DettagliAppunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio
Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento
DettagliOperazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013
Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.
DettagliAlgebra di Boole ed Elementi di Logica
Algebra di Boole ed Elementi di Logica 53 Cenni all algebra di Boole L algebra di Boole (inventata da G. Boole, britannico, seconda metà 8), o algebra della logica, si basa su operazioni logiche Le operazioni
DettagliCorrispondenze e funzioni
Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei
DettagliCONCETTO DI LIMITE DI UNA FUNZIONE REALE
CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
Dettagli+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice
Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica
DettagliCorso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici. I dati nei linguaggi di programmazione. Dati. Dott.
Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/49
DettagliCodifica binaria dei numeri relativi
Codifica binaria dei numeri relativi Introduzione All interno di un calcolatore, è possibile utilizzare solo 0 e 1 per codificare qualsiasi informazione. Nel caso dei numeri, non solo il modulo ma anche
DettagliAPPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Dettaglirisulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
DettagliProgettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
DettagliLogica e codifica binaria dell informazione
Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni
DettagliCapitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
Dettagli1 Giochi a due, con informazione perfetta e somma zero
1 Giochi a due, con informazione perfetta e somma zero Nel gioco del Nim, se semplificato all estremo, ci sono due giocatori I, II e una pila di 6 pedine identiche In ogni turno di gioco I rimuove una
DettagliRISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
DettagliESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2
DettagliAlgebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE
Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica
DettagliRegione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da
ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario
DettagliCorso di Matematica per la Chimica
Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano
DettagliAlcune nozioni di base di Logica Matematica
Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Dettagli(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896
2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo
DettagliComparatori. Comparatori di uguaglianza
Comparatori Scopo di un circuito comparatore é il confronto tra due codifiche binarie. Il confronto può essere effettuato per verificare l'uguaglianza oppure una relazione d'ordine del tipo "maggiore",
DettagliLaboratorio di Informatica
Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
DettagliDispensa 3. 1.1 YACC: generalità
Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un
DettagliSISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE
SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo
DettagliRAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI
RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI Diagramma di flusso L algoritmo può essere rappresentato in vari modi, grafici o testuali. Uno dei metodi grafici più usati e conosciuti è il cosiddetto diagramma
DettagliDatabase. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliAlgoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
DettagliSommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
DettagliLA NOTAZIONE SCIENTIFICA
LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo
DettagliLibrerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video
Video Librerie digitali Gestione di video Ogni filmato è composto da più parti Video Audio Gestito come visto in precedenza Trascrizione del testo, identificazione di informazioni di interesse Testo Utile
DettagliTSP con eliminazione di sottocicli
TSP con eliminazione di sottocicli Un commesso viaggiatore deve visitare 7 clienti in modo da minimizzare la distanza percorsa. Le distanze (in Km) tra ognuno dei clienti sono come segue: 7-8 9 7 9-8 79
DettagliObiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico
M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.
Dettagli3 GRAFICI DI FUNZIONI
3 GRAFICI DI FUNZIONI Particolari sottoinsiemi di R che noi studieremo sono i grafici di funzioni. Il grafico di una funzione f (se non è specificato il dominio di definizione) è dato da {(x, y) : x dom
DettagliCapitolo 2. Operazione di limite
Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A
DettagliAppunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
DettagliSQL/OLAP. Estensioni OLAP in SQL
SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
Dettaglila scienza della rappresentazione e della elaborazione dell informazione
Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione
DettagliLE FUNZIONI E LE LORO PROPRIETÀ
LE FUNZIONI E LE LORO PROPRIETÀ LE FUNZIONI REALI DI VARIABILE REALE COSA SONO LE FUNZIONI Dati due sottoinsiemi A e B non vuoti di R, una FUNZIONE da A a B è una relazione che associa ad ogni numero reale
DettagliModellazione dei dati in UML
Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):
DettagliProgetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore
ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliLa selezione binaria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per
DettagliJoin in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a
Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono
DettagliSommario. Addizione naturale
Sommario Introduzione Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Operazioni aritmetiche Modulo e segno Addizione e sottrazione urale Addizione e sottrazione in complemento
DettagliI NUMERI DECIMALI. che cosa sono, come si rappresentano
I NUMERI DECIMALI che cosa sono, come si rappresentano NUMERI NATURALI per contare bastano i numeri naturali N i numeri naturali cominciano con il numero uno e vanno avanti con la regola del +1 fino all
DettagliVettori ed assegnamenti in R
Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Vettori ed assegnamenti in R Giorgio Valentini e
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
DettagliArchitettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri
Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente
DettagliDescrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
DettagliVerifica della correttezza formale del numero di partita IVA
Verifica della correttezza formale del numero di partita IVA A tutti i soggetti che intraprendono un attività rilevante ai fini Iva (impresa, arte, professione), al momento della presentazione della dichiarazione
DettagliTest Excel conoscenze di Base
Test Excel conoscenze di Base 1)Che tipo di barra ha un foglio di calcolo, che un elaboratore testi non ha? a. La barra dei menu b. La barra della formula c. La barra del titolo d. La barra della formattazione
DettagliCapitolo 5. Funzioni. Grafici.
Capitolo 5 Funzioni. Grafici. Definizione: Una funzione f di una variabile reale,, è una corrispondenza che associa ad ogni numero reale appartenente ad un insieme D f R un unico numero reale, y R, denotato
DettagliIntroduzione. Rappresentazione di numeri in macchina, condizion
Introduzione. Rappresentazione di numeri in macchina, condizionamento e stabilità Dipartimento di Matematica tel. 011 0907503 stefano.berrone@polito.it http://calvino.polito.it/~sberrone Laboratorio di
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliFunzioni. Funzioni /2
Funzioni Una funzione f è una corrispondenza tra due insiemi A e B che a ciascun elemento di A associa un unico elemento di B. Si scrive: f : A B l'insieme A si chiama il dominio della funzione f, l'insieme
DettagliAPPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL
APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione
DettagliMODELLO RELAZIONALE. Introduzione
MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)
Dettagli