Laboratorio di Calcolo Numerico Prof. Lorenzo Pareschi http://utenti.unife.it/lorenzo.pareschi/ Università di Ferrara - Dipartimento di Matematica Programma del corso Algoritmi e calcolatori Software computazionale. Matlab. Numeri macchina. Analisi dell'errore Elementi di algebra lineare. Il metodo di eliminazione di Gauss e applicazioni. Grafica al calcolatore. Approssimazione di dati e funzioni. Minimi quadrati. Equazioni non lineari e metodi iterativi. Integrazione numerica Metodi probabilistici. 2 Contatti e Orario Web Page Corso http://utenti.unife.it/lorenzo.pareschi/laboratorio Prof. Lorenzo Pareschi ([email protected]) Dott. Giacomo Dimarco ([email protected]) Lunedi, Mercoledi 10.30-12.30 Giovedi (Laboratorio)14.00-16.00 Testi Consigliati: G.Naldi, L.Pareschi, G.Russo, Introduzione al Calcolo Scientifico, McGraw-Hill, 2004 G.Naldi, L.Pareschi, Matlab: Concetti e Progetti, Apogeo, 2003 3 Algoritmi e Calcolatori Premessa Cosa è un computer ? Un insieme di microchip, circuiti integrati e altri componenti elettronici e meccanici. Un primo passo verso un’intelligenza artificiale. Uno schermo con tastiera che fornisce dati e informazioni di cui abbiamo bisogno. Un elettrodomestico con cui navigare in Internet e giocare con i videogiochi. Il computer è un insieme di circuiti elettronici e dispositivi meccanici che non è in grado di funzionare autonomamente. ) Ha però la capacità di “ricordare” sequenze di istruzioni e di “obbedire” ad esse. 5 Programmi e Algoritmi Una sequenza di istruzioni è chiamata programma. I programmi consentono di tradurre nel linguaggio del calcolatore un opportuno algoritmo. Un algoritmo consente di automatizzare la soluzione di un problema. La costruzione di algoritmi rappresenta quindi un aspetto fondamentale delle nostre capacità di fornire istruzioni ai calcolatori. ESEMPI: Istruzioni per il montaggio di un mobile, indicazioni per raggiungere un luogo, determinazione del massimo comune divisore tra due interi positivi…. NOTA: Il linguaggio deve essere comprensibile 6 dall’esecutore. Linguaggi Primi calcolatori (anni ‘40) potevano essere programmati, istruiti ad eseguire una certa azione, utilizzando un codice costituito solo da 0 e 1, dette cifre binarie o bit (da binary digit). ) Esempio: 0100010111010… Tale codice macchina binario, differisce da calcolatore a calcolatore poiché vi è stretta corrispondenza tra i valori 1 e 0 ed il concetto di circuito acceso e spento in memoria. Successivamente sono stati introdotti linguaggi di tipo assembler (assemblatori) basati su semplici forme mnemoniche per programmare i diversi circuiti del computer. ) Esempio: LDA 2 X 7 Linguaggi di alto livello I linguaggi di programmazione si sono poi evoluti in direzione dell’utente con la nascita di linguaggi detti ad alto livello basati sulla lingua inglese. Esempi: Fortran, Cobol, C/C++, Basic, Pascal, Ada, … Si sono definiti degli standard in modo che un programma potesse essere eseguito su diversi tipi di calcolatore senza cambiamenti significativi. Tali linguaggi necessitano quindi di traduttori in grado di convertire il linguaggio di alto livello in linguaggio macchina. 8 Compilatori e Interpreti La traduzione viene effettuata da opportuni programmi in linguaggio macchina. Compilatori La traduzione viene eseguita una volta sola ed è permanente. Interpreti La traduzione è necessaria ogni volta che intendiamo usare un programma. Entrambi controllano la sintassi e consentono di correggere eventuali errori di programmazione. La traduzione comporterà in generale un rallentamento nell’esecuzione del programma Ciò che cambierà da computer a computer sarà il compilatore o l’interprete e non quindi il 9 programma. Architettura Possiamo identificare alcuni elementi funzionali presenti in ogni elaboratore anche se con caratteristiche diverse ed in numero diverso (Modello di Von Neumann). Unità di elaborazione centrale o microprocessore (CPU: Central Processing Unit): ) svolge tutte le elaborazioni e coordina il trasferimento dei dati all'interno del sistema. Al suo interno si identificano l’unità di controllo (UC) e l’unità logico aritmetica (ALU). Esistono calcolatori con più CPU (calcolatori paralleli). Memoria principale o a breve termine (RAM: Random Access Memory): ) memorizza i dati ed i programmi. Ha capacità limitata ed è volatile (perde il suo contenuto in assenza di alimentazione) ma l'accesso alle informazioni è molto rapido. 10 Memoria principale e Unità di elaborazione costituiscono la parte fondamentale di un calcolatore. Memoria secondaria o a lungo termine (memoria di massa): ) ) Unità di ingresso e uscita (periferiche I/O): ) ) utilizzata per memorizzare grandi quantità di dati e programmi. L'informazione è persistente ma l'accesso è meno rapido. Esempi: floppy disks, hard disks, masterizzatori di CD e DVD, penne USB, multimedia card (CF, SD,...) utilizzate per far comunicare il calcolatore con l'esterno. Esempi: tastiera, mouse, video, stampanti, scanner, modem, web cam, ... Bus di sistema: ) collega tutti gli elementi funzionali e consente lo scambio dei dati. 11 Struttura di un calcolatore Memoria primaria Dispositivi Unità di Dispositivi in ingresso elaborazione in uscita Memoria secondaria ) Nella regione tratteggiata si hanno solo componenti elettronici. Le periferiche I/O e la memoria secondaria contengono anche componenti meccanici. Sono quindi soggette ad una forte riduzione di velocità. 12 Memoria e suo funzionamento Possiamo immaginare un certo numero di scatole di vetro etichettate in modo univoco contenenti ciascuna una pallina con un numero o una parola. Per sapere cosa contiene una scatola è sufficiente guardare all’interno eventualmente dopo averla identificata grazie all’etichetta. Per cambiare valore in una scatola dobbiamo rimuovere la pallina vecchia ed inserirne una nuova. La vecchia pallina viene quindi 13 distrutta. La memoria in un calcolatore funziona in modo simile. All’etichetta corrisponde un indirizzo di memoria che identifica una particolare locazione di memoria non il valore del contenuto. Le scatole rappresentano delle variabili in quanto il loro contenuto può variare. Alcune scatole sono sigillate per cui non è possibile cambiarne il contenuto. Sono dette costanti. I numeri o le parole delle palline sono rappresentate in memoria sotto forma di bit. 14 Misurare la memoria Un insieme di 8 bit è detto byte ) Capacità della memoria è il numero di byte che può contenere. Si utilizzano generalmente il Kilobyte (Kb) uguale a 1024 byte, il Megabyte (Mb) uguale a 1024 Kb ed il Gigabyte uguale a 1024 Mb. L’informazione è trasmessa e elaborata in multipli interi di byte. Una Word è il numero di bit che l’unità centrale può elaborare nell'unità di tempo. ) Esempio: 01001101 Esempi: Intel 286 16 bit, 386 e 486 32 bit, Pentium, Centrino 32 bit, Xeon 64 bit, AMD Athlon, Sempron 32 bit, Athlon/Opteron 64 bit. Un file identifica un insieme di locazioni di memoria in cui sono memorizzati dati omogenei e programmi. Importante è il tempo di accesso della memoria, che indica il tempo necessario a leggere/scrivere un dato in memoria (in nanosecondi per la memoria primaria e millisecondi per la memoria secondaria). 15 Generazioni di Computer Valvole - 1946-1957 Transistor - 1958-1964 Small scale integration – dal 1965 Medium scale integration – fino al 1971 3,000 - 100,000 dispositivi su un chip Very large scale integration - 1978 ad oggi 100-3,000 dispositivi su un chip Large scale integration - 1971-1977 Fino 100 dispositivi su un chip 100,000 - 100,000,000 dispositivi su un chip Ultra large scale integration (futuro prossimo) Over 100,000,000 dispositivi su un chip 16 Microelettronica Transitor sostituiscono le valvole Più piccoli, più economici, minore dissipazione di calore, meno fragili Realizzati dal silicio (sabbia) Inventati nel 1947 alla Bell Labs da William Shockley et al. Literally - “small electronics” Una CPU è composta da transitor, porte, celle di memoria e connessioni Queste possono essere realizzate su un semiconduttore, ad esempio un “wafer” di silicio Oggi la tecnolgia ha raggiunto i 90 nanometri nelle CPU Pentium IV (oltre 42 milioni di transitors) 17 386 Pentium Pro Pentium III Pentium IV 275.000 transitors (1985) 5.5 milioni di transitors (1995) 9.5 milioni di transistors, tecnologia 0.25 micron (1999) 42 milioni di transistors, tecnologia 0.18 micron (2000) Pentium III 18 Legge di Moore Gordon Moore – cofondatore di Intel Il numero di transitor su un chip raddoppierà ogni anno Dal 1970 lo sviluppo ha rallentato un pò Il numero di transistor raddoppia ogni 18 mesi Il costo di un chip è rimasto quasi inalterato Una maggiore densità di transitor significa circuiti elettrici più brevi e maggiore efficienza Dimensioni più piccole aumentano la flessibilità Richieste di raffreddamento e di bassa consumo Meno connessioni aumentano l’affidabilità 19 Crescita del numero di transitor 20 Introduzione alle reti Una rete consiste di un gruppo di computer connessi tra loro oppure ad un server centrale in modo da poter condividere risorse quali documenti e stampanti. ) ) ) ) Utilizzo di programmi e documenti su altri computer Utilizzo di stampanti e fax collegati ad altri computer Accesso a Internet 21 Utilizzare la posta elettronica Tipi di reti Reti locali (LAN: Local Area Network) Connettono elaboratori fisicamente vicini (nello stesso ufficio o stabilimento). Si condividono alcuni servizi (stampanti, dischi…). ) Trasmissione veloce Reti geografiche (WAN: World Area Network) Collegano elaboratori medio grandi che sono a grande distanza tra loro. Servono per attivare e controllare l'esecuzione di programmi remoti (applicazioni distribuite). ) Trasmissione più lenta 22 Internet Internet è un insieme di reti informatiche collegate tra loro in tutto il mondo. Tramite una connessione a Internet è quindi possibile comunicare con altri computer ovunque si trovino nel mondo. Internet consente di accedere a informazioni di vario genere, quali messaggi di posta elettronica, newsgroup e il World Wide Web. ) Posta elettronica. Necessari programmi di posta elettronica. Inviare e ricevere documenti e messaggi (Outlook, Eudora, Pine, …). ) Newsgroup. Necessari lettori di news. Leggere messaggi relativi ad argomenti di vario genere. ) World Wide Web. Necessari Browser Web. Leggere documenti, ascoltare musica, riprodurre video, effettuare acquisti, partecipare a sondaggi, pubblicizzare prodotti, eseguire ricerche, condividere interessi e scaricare file (Explorer, Netscape, ...). 23 WWW Il World Wide Web rappresenta la parte grafica e multimediale di Internet. Per visualizzare le informazioni sul Web, è necessario un apposito software denominato browser Web. Tale software consente di accedere in modo semplice e rapido a documenti denominati pagine Web. Un sito Web è in genere costituito da più pagine. La pagina iniziale di un sito Web è denominata home page. Ogni pagina Web è identificata da un indirizzo, Internet univoco, denominato anche URL (Uniform Resource Locator). L'indirizzo Internet della Home Page del Corso, ad esempio, è il seguente: • http://utenti.unife.it/lorenzo.pareschi/laboratorio/ ) http (Hyper Text Transfer Protocol). 24 Elaborazione dell’informazione La soluzione di un problema passa attraverso al costruzione di un opportuno algoritmo. Esempi: ) ) Acquisizione di dati dall’esterno ) ) Distanza, velocità, strada, clima,... Costo, collocazione, dimensioni, mercati,... Dati preesistenti all’interno ) ) Guidare un auto a grande velocità richiede decisioni in frazioni di secondo. Acquistare una nuova casa richiede generalmente lunghi tempi di riflessione. Stanchezza, gomme, carburante,… Gusti, necessità, disponibilità, ... Elaborazione e risultato ) ) Frenare, accelerare, suonare il clacson, … Scelta principale, scelte alternative, ... 25 Automatizzazione Acquisizione dati Elaborazione L’elaborazione è finalizzata ad un risultato che cerchiamo di perseguire ) ) Produzione risultato Evitare incidenti e giungere a destinazione Avere una casa che ci soddisfi Problema principale: individuare un procedimento risolutivo del problema o algoritmo risolutivo, cioè un insieme di regole che se eseguite ordinatamente permettono di calcolare il risultato a partire dai dati acquisiti e da quelli già noti. Non è detto che esista. Automatizzare l’elaborazione ) ) Problema difficile: difficoltà di acquisizione dati, poco tempo per elaborare, scelte dipendenti, ... Problema affrontabile: dati facilmente disponibili, 26 tempo a disposizione, scelte indipendenti, ... Diagramma riassuntivo Acquisizione dati Dati preesistenti Memoria primaria Unità di Elaborazione Produzione risultato elaborazione Dispositivi di ingresso e uscita NOTA: Nei dispositivi di ingresso e uscita è stata inclusa anche la memoria secondaria. 27 Caratteristiche di un algoritmo Non ambiguità ) Generalità ) Possibilità di essere applicato ad una classe di problemi più ampi. Finitezza ) Problema Le istruzioni devono essere univocamente interpretabili. Deve potere essere eseguito con un numero finito di passi. Algoritmo Programma Questa fase avviene prima del processo di elaborazione che utilizzerà il programma così sviluppato per comunicare con l’unità centrale. 28