Algoritmi in C++ (prima parte)
|
|
|
- Giorgia Manca
- 9 anni fa
- Visualizzazioni
Transcript
1 Algoritmi in C++ (prima parte)
2 Alcuni algoritmi in C++ Far risolvere al calcolatore, in modo approssimato, problemi analitici Diverse tipologie di problemi generazione di sequenze di numeri casuali ricerca degli zeri di una funzione integrazione numerica di una funzione ricerca degli estremanti di una funzione Si lavora in condizioni semplici Scrivere gli algoritmi in modo più comodo possibile dal punto di vista del programma Qualche funzionalità di ROOT (librerie di analisi dati) LabInfoII - Lezione3 2
3 generazione di sequenze di numeri casuali LabInfoII Lezione3 3
4 Numeri casuali Una sequenza di numeri casuali e' una successione di elementi non correlati storicamente Il C++ fornisce sequenze di numeri pseudocasuali I numeri casuali seguono una distribuzione di probabilità (pdf) Pdf gaussiana: frequenza di generazione dei numeri casuali Numeri casuali Numeri pseudocasuali Pdf = probability density function x LabInfoII - Lezione3 4
5 Generazione in C++ La funzione rand genera numeri interi fra 0 e RAND_MAX E' necessario includere la libreria Genera una sequenza di 10 numeri casuali distribuiti uniformemente, con la funzione rand La funzione time restituisce il tempo in secondi dal 1 gennaio La funzione non ha argomenti e ritorna i numeri casuali Cambio l'intervallo di generazione dei numeri casuali con una traslazione (min +) ed uno zoom: ( (max-min)/rand_max ) x [0, RAND_MAX] x' [min, max] Provare a rieseguire il programma: i numeri generati sono sempre gli stessi? Riprovare inizializzando il seme usando la funzione srand() prima di generare i numeri casuali. LabInfoII - Lezione3 5
6 come fare il disegno disegniamo a schermo tanti # quanti sono i conteggi per ogni bin (oppure un numero proporzionale) LabInfoII - Lezione3 6
7 Disegno una distribuzione ROOT permette di disegnare istogrammi in modo veloce ed efficace TH1F e' un istogramma definito da -1 ad 1 con 100 intervalli (bin) sull'asse x L'oggetto pdf e' di tipo TH1F L'istogramma viene riempito con la funzione Fill, che viene chiamata sull'istogramma: e' un oggetto di C++! Il disegno e' fatto su una tavolozza (TCanvas), che stampa (print) su un file (pdf.gif) la pdf (l'istogramma) L'oggetto c1 e' di tipo TCanvas Le funzioni sono chiamate sugli oggetti Bisogna includere le librerie di ROOT necessarie LabInfoII - Lezione3 7
8 Documentazione di ROOT User's guide all'indirizzo: Reference guide: Se sono interessato alla classe TH1, digito su google TH1 root e trovo direttamente il link che mi interessa: Istruzioni sui parametri che è necessario inserire per costruire un oggetto, nel nostro esempio un istogramma 1D LabInfoII - Lezione3 8
9 La distribuzione risultante Il disegno di pdf visualizza il risultato della generazione di numeri casuali Per compilare il C++ deve trovare le librerie di ROOT, il programma root-config scrive automaticamente dove sono Ogni bin riporta il numero di volte in cui un evento casuale ha avuto valore fra il suo minimo e massimo (sull'asse x!) La funzione rand quindi genera in maniera uniforme, perché i conteggi nei diversi bin sono circa uguali LabInfoII - Lezione3 9
10 statistiche di un sample Su un sample di numeri casuali posso calcolare le statistiche che lo caratterizzano La media e la varianza si calcolano a partire dalla somma degli elementi e dalla somma dei quadrati degli elementi di un insieme Le statistiche si possono calcolare anche nota la pdf sotto forma di istogramma Gli istogrammi di ROOT hanno funzioni che fanno il calcolo per noi LabInfoII - Lezione3 10
11 Try and catch Generare un insieme di numeri casuali distribuiti non uniformemente y1 Il metodo del try and catch genera coppie di numeri casuali sull'asse x ed y con distribuzione uniforme y2 x1 x2 Se la coppia di punti si trova sotto la linea (x, f(x)) il numero x e' il numero cercato, altrimenti si continua la generazione La frazione di x presi in un certo intervallo dipende dall'area di f(x) i quell'intervallo L'algoritmo si può scrivere così, sfruttando una funzione (rand_range) che genera numeri casuali uniformemente LabInfoII - Lezione3 11
12 In dettaglio Nel main viene chiamata rand_tac, che chiama rand_range e si generano dati secondo f_gaus Deve essere noto il massimo di f_gaus Le funzioni possono essere messe in una libreria, da includere nel main LabInfoII - Lezione3 12
13 Teorema centrale del limite Per generare numeri secondo una gaussiana si può utilizzare il teorema centrale del limite La somma di N distribuzioni uniformi da' una gaussiana Nel main viene chiamata questa volta rand_clt, che chiama rand_range per la generazione di numeri casuali secondo una distribuzione piatta Per mantenere l'intervallo di interesse, bisogna dividere per il numero di tentativi LabInfoII - Lezione3 13
14 La funzione inversa y = f(x) E' nota la forma funzionale della pdf secondo la quale vogliamo generare i numeri casuali, f(x) Si calcola la primitiva della pdf, F(x) E' definita su R E' monotona crescente dx 2 dx 1 x Ha valori compresi fra 0 ed 1 y 1 dy 1 y = F(x) Generando uniformemente y in [0,1) osserveremo più frequentemente valori di y nell intervallo dy 1 che in dy 2 dy 2 0 y dx 2 dx 1 x Applicando l inversa, verranno generati più frequentemente valori in dx 1 che in dx 2 dy = df(x) = (df/dx) dx = f(x) dx LabInfoII - Lezione3 14
15 Distribuzione esponenziale Voglio generare numeri casuali distribuiti come f x = e x / / x [0, ] Calcolo la funzione cumulativa x F x = 0 f s ds = e x / 1 Invertendo la F(x), si trova y = F x x = F 1 y = log 1 y Riassumendo: si generano numeri casuali uniformi y tra [0,1] e si calcola x dalla formula precedente: x risulta avere distribuzione esponenziale, con media μ LabInfoII - Lezione3 15
16 in dettaglio Nel MAIN (file.cpp) f x = e x / / x [0, ] Funzioni (file.cc) LabInfoII - Lezione3 16
17 esercizi Esercizio 1: Stimare la media e la varianza di una distribuzione uniforme sull'intervallo [a,b] e verificare che la varianza è uguale a: Esercizio 2: Scrivere un programma che generi numeri casuali distribuiti secondo una gaussiana con le tecniche di try and catch e del teorema centrale del limite Esercizio 3: verificare il teorema centrale del limite con una distribuzione esponenziale invece di una distribuzione uniforme quale è la larghezza della gaussiana prodotta con la tecnica del teorema centrale del limite? scrivere gli algoritmi che generano i numeri casuali come funzioni del C++ LabInfoII - Lezione3 17
18 una semplice visualizzazione un istogramma conta il numero di eventi che cascano in un singolo bin dell'asse di definizione, quindi e' una pdf integrata a tratti su ogni singolo bin per rappresentare un istogramma utilizziamo un vettore di interi (i conteggi in ogni bin) per riempire l'istogramma, per ogni numero casuale decidiamo quale bin incrementare LabInfoII - Lezione3 18
19 Larghezza di una gaussiana LabInfoII - Lezione3 19
Algoritmi in C++ (seconda parte)
Algoritmi in C++ (seconda parte) Introduzione Obiettivo: imparare a risolvere problemi analitici con semplici programmi in C++. Nella prima parte abbiamo imparato: generazione di sequenze di numeri casuali
Probabilità e Statistica
Probabilità e Statistica Non faremo una trattazione sistematica di probabilità e statistica (si veda in proposito il corso di Esperimentazioni III) Richiameremo alcuni argomenti che avete già visto quando
Probabilità e Statistica
Probabilità e Statistica Non faremo una trattazione sistematica di probabilità e statistica (si veda in proposito il corso di Esperimentazioni III) Richiameremo alcuni argomenti che avete già visto quando
Generazione di numeri pseudo-casuali
Generazione di numeri pseudo-casuali Perchè è difficile? Il computer esegue deterministacamente le istruzioni fornite dal programma Questo comporta che è molto difficile ottenere vera casualità (ossia
Laboratorio di Calcolo I. Applicazioni : Metodo Monte Carlo
Laboratorio di Calcolo I Applicazioni : Metodo Monte Carlo 1 Monte Carlo Il metodo di Monte Carlo è un metodo per la risoluzione numerica di problemi matematici che utilizza numeri casuali. Si applica
NUMERI CASUALI E SIMULAZIONE
NUMERI CASUALI E SIMULAZIONE NUMERI CASUALI Usati in: statistica programmi di simulazione... Strumenti: - tabelle di numeri casuali - generatori hardware - generatori software DESCRIZIONE DEL PROBLEMA
Introduzione a ROOT (II parte)
Introduzione a ROOT (II parte) Analisi dati con ROOT Pacchetto di analisi dati scritto in C++ (object-oriented) È nato al CERN! LabInfoII 2 Fino ad ora Oggetti incontrati: TH1F, TH2F, TF1 TGraph, TGraphErrors
Università del Piemonte Orientale. Corso di Laurea Triennale di Infermieristica Pediatrica ed Ostetricia. Corso di Statistica Medica
Università del Piemonte Orientale Corso di Laurea Triennale di Infermieristica Pediatrica ed Ostetricia Corso di Statistica Medica Le distribuzioni teoriche di probabilità La distribuzione Normale (o di
Numeri Random. D.E.I.S. Università di Bologna DEISNet
Numeri Random D.E.I.S. Università di Bologna DEISNet http://deisnet.deis.unibo.it/ Introduzione Può sembrare assurdo usare un computer per generare numeri casuali: Il computer è una macchina deterministica
Il metodo Monte Carlo. Esempio di transizione al caos. Numeri (pseudo)casuali. λ 1. Analisi dati in Fisica Subnucleare
Analisi dati in Fisica Subnucleare Introduzione al metodo Monte Carlo (N.B. parte di queste trasparenze sono riciclate da un seminario di L. Lista) Il metodo Monte Carlo È una tecnica numerica che si basa
Simulazione dei dati
Simulazione dei dati Scopo della simulazione Fasi della simulazione Generazione di numeri casuali Esempi Simulazione con Montecarlo 0 Scopo della simulazione Le distribuzioni di riferimento usate per determinare
- noise di conteggio ; f[m] è un numero intero che è la realizzazione di una variabile aleatoria con valor medio (valore atteso) f 0 [m].
Segnali con noise Sia f [m], m,,..., N-, il campionamento del segnale in arrivo sul rivelatore; il segnale campionato in uscita f[m] differisce da f [m] per quantità che variano in modo casuale. Si hanno
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 9 Novembre 2015
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 9 Novembre 2015 1 Generazione di numeri casuali Numeri casuali: valore assunto da una variabile aleatoria, il cui valore è per definizione impredicibile
Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni
Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni ANALISI NUMERICA - Primo Parziale - TEMA A (Prof. A.M.Perdon)
CALCOLO NUMERICO. Prof. Di Capua Giuseppe. Appunti di Informatica - Prof. Di Capua 1
CALCOLO NUMERICO Prof. Di Capua Giuseppe Appunti di Informatica - Prof. Di Capua 1 INTRODUZIONE Quando algoritmi algebrici non determinano la soluzione di un problema o il loro «costo» è molto alto, allora
Teoria dei Fenomeni Aleatori AA 2012/13
Simulazione al Calcolatore La simulazione al calcolatore (computer simulation), (nel caso qui considerato simulazione stocastica) si basa sulla generazione, mediante calcolatore, di sequenze di numeri
LABORATORIO DI INFORMATICA ESERCITAZIONE VIII
LABORATORIO DI INFORMATICA ESERCITAZIONE VIII Cercate di eseguire gli esercizi da soli. Se non ci riuscite, cercate di capire i messaggi di errore. Se non ci riuscite, provateci di nuovo. Poi chiamate
ANALISI DEI DATI con EXCEL
ANALISI DEI DATI con EXCEL Distribuzione della frequenza per variabili qualitative 1) conteggio del numero delle osservazioni della variabile (funzione CONTA.VALORI) 2) definizione delle CATEGORIE (tramite
Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica
Corso di Fondamenti di Informatica Ingegneria Clinica Esercitazione 6 Raffaele Nicolussi Esercizio 1 Si scriva una funzione in linguaggio C che riceve in ingresso un numero intero A letto da tastiera,
Introduzione alla probabilità. Renato Mainetti
Introduzione alla probabilità Renato Mainetti Esperimenti sulla probabilità: Vedremo come utilizzare semplici funzioni di matlab per avvicinarci al mondo della probabilità, iniziando così ad introdurre
LEZIONI IN LABORATORIO Corso di MARKETING L. Baldi Università degli Studi di Milano. Strumenti statistici in Excell
LEZIONI IN LABORATORIO Corso di MARKETING L. Baldi Università degli Studi di Milano Strumenti statistici in Excell Pacchetto Analisi di dati Strumenti di analisi: Analisi varianza: ad un fattore Analisi
Variabili aleatorie scalari
Metodi di Analisi dei Dati Sperimentali AA /2010 Pier Luca Maffettone Variabili aleatorie scalari Sommario della Introduzione CDF e PDF: definizione CDF e PDF: proprietà Distribuzioni uniforme e Gaussiana
Teoria dei Fenomeni Aleatori AA 2012/13
Simulazione al Calcolatore La simulazione al calcolatore (computer simulation), (nel caso qui considerato simulazione stocastica) si basa sulla generazione, mediante calcolatore, di sequenze di numeri
2.3.1 Generazione di numeri pseudocasuali con distribuzione uniforme
GENERAZIONE DI OSSERVAZIONI CASUALI 145 2.3 GENERAZIONE DI OSSERVAZIONI CASUALI Una volta determinate le distribuzioni di input, la simulazione dovrà generare durante ogni esecuzione osservazioni casuali
Generazione di numeri random. Distribuzioni uniformi
Generazione di numeri random Distribuzioni uniformi I numeri random Per numero random (o numero casuale) si intende una variabile aleatoria distribuita in modo uniforme tra 0 e 1. Le proprietà statistiche
Analisi dati con ROOT
Introduzione a ROOT Analisi dati con ROOT Pacchetto di analisi dati scritto in C++ (object-oriented) È nato al CERN! LabInfoII 2 Dove lo trovo? Si trova tutto su web: sia l'ultima versione del programma
ISTOGRAMMI E DISTRIBUZIONI:
ISTOGRAMMI E DISTRIBUZIONI: i 3 4 5 6 7 8 9 0 i 0. 8.5 3 0 9.5 7 9.8 8.6 8. bin (=.) 5-7. 7.-9.4 n k 3 n k 6 5 n=0 =. 9.4-.6 5 4.6-3.8 3 Numero di misure nell intervallo 0 0 4 6 8 0 4 6 8 30 ISTOGRAMMI
Parte 1: tipi primitivi e istruzioni C
Parte 1: tipi primitivi e istruzioni C Esercizio 1 Scrivere un programma che stampa la somma di una sequenza di N numeri inseriti dall utente. Esercizio 2 Scrivere un programma che stampa la somma di una
Distribuzione esponenziale. f(x) = 0 x < 0
Distribuzione esponenziale Funzione densità f(x) = λe λx x 0 0 x < 0 Funzione parametrica (λ) 72 Funzione di densità della distribuzione esponenziale 1 0.9 0.8 0.7 λ=1 0.6 f(x) 0.5 0.4 0.3 λ=1/2 0.2 0.1
Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
IL CRITERIO DELLA MASSIMA VEROSIMIGLIANZA
Metodi per l Analisi dei Dati Sperimentali AA009/010 IL CRITERIO DELLA MASSIMA VEROSIMIGLIANZA Sommario Massima Verosimiglianza Introduzione La Massima Verosimiglianza Esempio 1: una sola misura sperimentale
Lezione VIII: Montecarlo
Lezione VIII: Montecarlo Laboratorio di Fisica Computazionale 2 (216/217) November 16, 216 Fabrizio Parodi Lezione VIII: Montecarlo November 16, 216 1 / 26 Metodo di Monte Carlo Metodo di Monte Carlo Il
Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013
Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013 Damiano Macedonio Giochi d Azzardo Note Iniziali Per generare un numero casuale basta includere la libreria stdlib.h e utilizzare
Le Funzioni. Modulo Esponenziali Logaritmiche. Prof.ssa Maddalena Dominijanni
Le Funzioni Modulo Esponenziali Logaritmiche Definizione di modulo o valore assoluto Se x è un generico numero reale, il suo modulo o valore assoluto è: x = x se x 0 -x se x
1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso
Domanda 1 1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso x n+1 = x n f(x n), n = 0, 1, 2,... K dove x 0 è il punto iniziale, f(x) = x 3 cos(x) e K è una costante assegnata.
Densità di probabilità del prodotto di due variabili casuali distribuite uniformemente
Firenze - Dip. di Fisica 2 agosto 2008 Densità di probabilità del prodotto di due variabili casuali distribuite uniformemente In questa dispensa, che presentiamo a semplice titolo di esercizio e applicazione
Generazione di numeri casuali
Generazione di numeri casuali Abbiamo già accennato all idea che le tecniche statistiche possano essere utili per risolvere problemi di simulazione di processi fisici e di calcoli numerici. Dobbiamo però
CP110 Probabilità: Esame 13 settembre Testo e soluzione
Dipartimento di Matematica, Roma Tre Pietro Caputo 2011-12, II semestre 13 settembre, 2012 CP110 Probabilità: Esame 13 settembre 2012 Testo e soluzione 1. (6 pts) Una scatola contiene 10 palline, 8 bianche
