Uso di librerie preconfezionate. pezzi di programma già scritto da altri; di solito ben collaudati;

Documenti analoghi
pezzi di programma già scritto da altri; di solito ben collaudati; comprendono le definizioni delle funzioni e il codice eseguibile;

Uso di librerie preconfezionate. pezzi di programma già scritto da altri; di solito ben collaudati;

Documentazione in Linux Mi serve qualcosa che faccia vedere il contenuto di un file senza modificarlo. Che comando uso? A che serve il comando

Introduzione a Matlab (e al Calcolo Numerico)

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Passaggio dei parametri

CALCOLO NUMERICO. Prof. Di Capua Giuseppe. Appunti di Informatica - Prof. Di Capua 1

Introduzione a Matlab

Preprocessore, linker e libreria standard

Librerie Stringhe. Librerie e stringhe. Lezione 9. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. 2015/2016

Passaggio dei parametri. Passaggio dei parametri

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

Corso di Architettura (Prof. Scarano) 10/05/2002

Funzioni, Stack e Visibilità delle Variabili in C

Applicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:

Linguaggio di Riferimento: C

Introduzione al linguaggio C Primi programmi

Esercitazione 1: Introduzione a MATLAB

Introduzione alla programmazione in linguaggio C

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Il linguaggio C funzioni e puntatori

0 Richiami di algebra lineare e geometria analitica Distanza, coordinate e vettori Sistemi lineari e matrici...

Prefazione. 0 Programmare per calcolare 1. I Programmazione di base in linguaggio C 5

Introduzione al MATLAB c Parte 2

Soluzione. (a) L insieme F 1 e linearmente indipendente; gli insiemi F 2 ed F 3 sono linearmente

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

Caratteri e stringhe

Preprocessore, linker e libreria standard

Il linguaggio C. Notate che...

Funzioni, Stack e Visibilità delle Variabili in C

Introduzione alla STL

L'allocazione dinamica della memoria

MATLAB - Introduzione. Antonino Polimeno

Programmazione modulare nel linguaggio C

Architetture dei Calcolatori

L'allocazione dinamica della memoria

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Introduzione al Simulink

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Parte 3. Puntatori. [S. Dalí The temptation of St. Anthony, 1946] - AA. 2015/16 3.1

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Fondamenti di di A utomatica Automatica Prof. Bruno Picasso Introduzione all all uso di di S imulink Simulink

Analisi Numerica: Introduzione

Introduzione al C. Tipi derivati

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Introduzione al linguaggio C Puntatori

4 Analisi nel dominio del tempo delle rappresentazioni in

Breve Ripasso del linguaggio C

Fondamenti di Programmazione

f2.obj compilatore compilatore linker f3.obj compilatore

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Strategie di programmazione

Liste concatenate e allocazione dinamica

Indice. Introduzione al problema dell acquisizione e dell analisi dei dati: definizione dei termini

Classi di memorizzazione

Perché il linguaggio C?

Capitolo 10 - Strutture

INTRODUZIONE A MATLAB

File binari e file di testo

Strutture Dati. Luca Abeni

Introduzione al C++ (continua)

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 08/02/2017/ Foglio delle domande / VERSIONE 1

Interpolazione e Approssimazione

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Università degli Studi di Cagliari

Primi passi col linguaggio C

Componenti software. Obiettivi

Laboratorio di Programmazione e Calcolo

Concetto di Funzione e Procedura METODI in Java

Programmazione Procedurale

Librerie matematiche. Introduzione al calcolo parallelo

Breve Ripasso del linguaggio C

Primi programmi in C

STRUTTURA DI UN PROGRAMMA!

C: panoramica. Violetta Lonati

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

L'Allocazione Dinamica della Memoria nel linguaggio C

Il linguaggio C. Puntatori e dintorni

La classe std::vector della Standard Template Library del C++

Fondamenti di Informatica T-1. Introduzione al linguaggio Java Input/output, variabili, tipi

Gestione dinamica della memoria

Qualsiasi programma in C++ segue lo schema: Variabili

Transcript:

Uso di librerie preconfezionate Cosa sono: pezzi di programma già scritto da altri; di solito ben collaudati; comprendono le definizioni delle funzioni e il codice eseguibile; per librerie di pubblico dominio è disponibile anche il sorgente;

Diponibili pubblicamente sono GNU scientific libreries (GSL) CERNLIB Netlib LAPACK (matrici) fftw (trasformate di Fourier) e molto altro ancora...

Cosa calcolano costanti fondamentali funzioni speciali polinomi radici matrici trasformate di Fourier etc. etc.

D. Perché non l ha detto dall inizio? Non avrei frequentato questo corso! R. Avete mai provato a far benzina se l auto è elettrica? Anche chi non vuole diventare meccanico deve conoscere un poco le automobili. Questo corso è un introduzione alla Fisica Computazionale, non un trattato! D. Io però voglio occuparmi di fisica e non di programmazione. Ho già progettato di scoprire il settimo quark R. Per gli esperimenti di fisica delle alte energie è necessario avere dei buoni programmi di simulazione Montecarlo. Sono di solito nonstandard, e ve li dovete quindi scrivere da soli. D. Nel mio gruppo di ricerca fanno calcoli perturbativi all ordine 3/2. Nel corso non ne ho sentito parlare R. Ora che conoscete i rudimenti del mestiere, potete studiare da soli le equazioni differenziali stocastiche o i problemi che più vi interessano

Cosa richiedono: inclusione di un file d intestazione. Se la libreria ci chiama gsl si includerà gsl.h e/o altri file d intestazione all interno del file sorgente, per definire le funzioni che usiamo; link con opportune librerie extra -lgsl. il corrispondente file si chiamerà libgsl.la o libgsl.so Importante: leggete molto attentamente la documentazione con: gnome-help info://gsl-ref.

Un esempio: le librerie gsl GNU Scientific Library (GNU s Not Unix); includono sempre gsl.h; link sempre -lgsl e spesso -lgslcblas; a seconda della particolare routine che si usa si devono includere altri file d intestazione: ad esempio, se si usano generatori di numeri pseudocasuali può essere necessario includere anche gsl/gsl rng.h mentre se faccio un integrale gsl/gsl integration.h; i file d intestazione definiscono i prototipi delle funzioni ma anche alcune costanti e molti tipi di dati.

Programmi con le librerie gsl Per programmare con le librerie gsl occorre ricordare bene tre cose 1. includere gli opportuni file d intestazione: per esempio, per le costanti numeriche, oltre a gsl.h andrà incluso anche gsl math.h 2. linkare con le librerie opportune: per molti funzioni sarà necessario non solo -lgsl ma anche -lgslcblas (attenzione al linking: statico o dinamico?) 3. attenersi alla struttura dei dati usata dalla libreria: i vettori e le matrici possono essere immagazzinati in modi particolari, che bisogna necessariamente utilizzare per usufruire delle librerie gsl.

Esempi costanti matematiche M PI = π funzioni elementari e funzioni speciali hypot(3, 4) gsl pow 4(2) potenza gsl sf bessel J0 funzione di Bessel cilindrica valutazione di polinomi p(x) = c 0 + c 1x + + c n 1x n 1 gsl poly eval(c, n, x) ordinamento di un vettore gsl sort(v, k, n) v(0), v(k), v(2k),... per un vettore di n elementi

In pratica Includo i file header #include < gsl/gsl xxx.h > xxx = math, poly, sort vector Linking gcc -lgsl -lgslcblas programma.c (-static) BLAS = Basic Linear Algebra Subroutines Documentazione Mi documento con info gsl guardando soprattutto gli esempi.

Quattro esempi 1. Integrazione Il file da includere è gsl/gsl integration.h è necessario fornire dello spazio extra di lavoro usato dalla routine la funzione da integrare è parte di una struttura la funzione può dipendere da altri parametri oltre alla variabile su cui integro. Devo passare questa informazione alla funzione in qualche modo: in pratica si mettono tutti i parametri in un vettore e si passa un puntatore ad esso.

2. Sorting È il più semplice: occorre solo passare la funzione che fa il confronto tra elementi da ordinare (vedi anche qsort nella libreria standard). Il file da includere è gsl/gsl sort double.h 3. Generazione di numeri pseudocasuali Il file da includere è gsl/gsl rng.h. il programma fornisce una funzione che ritorna un numero pseudorandom tra zero e uno. Il metodo da usare è determinato dall utente che deve fornire il tipo con la chiamata ad una opportuna funzione di i- nizializzazione. come per i numeri Fibonacci lagged, e necessario avere a disposizione della memoria extra. Un apposita funzione si occupa di allocarla: chiaramente la quantità di memoria allocata dipenderà dal tipo di generatore usato.

4. Autovalori e autovettori Il file da includere è gsl/gsl eigen.h ; è molto importante qui il modo scelto dai programmatori delle gsl per memorizzare vettori e matrici; si usano strutture in linguaggio C dove, se m è la matrice, m data punta all array che contiene gli elementi dell array. Allo stesso modo per un vettore v si ha che v data punta agli elementi dell array. Altri elementi della struttura contengono la dimensione dell array, etc. anche qui occorre allocare memoria sia per il workspace che per vettori e matrici. Per gli uni e le altre ci sono funzioni dedicate che tengono conto della loro struttura particolare. Alla fine del programma è naturalmente possibile deallocare questa memoria con altre funzioni dedicate.