Anteprima
Vedrai una selezione di 1 pagina su 2
Programma C ++ - Il decadimento radioattivo Pag. 1
1 su 2
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Il decadimento radioattivo



Il decadimento radioattivo segue una legge esponenziale: ovvero, se a t=0 sono presenti N nuclei radioattivi instabili che possono decadere in nuclei stabili, al tempo t ne sono rimasti N(t) = N * exp(-r*t) dove r e' l'inverso della vita media T, definita come il tempo necessario perche' un campione radioattivo si riduca di e volte.Tale legge pero' e' risultato di un processo stocastico: infatti, la probabilita'che un nucleo decada, oltre ad essere scorrelata dagli altri nuclei, e' scorrelata istante per istante.
Estratto del documento

#include <iostream>

#include <cstdlib>

#include <ctime>

#include <math.h>

using namespace std;

bool uno_su_N(int);

int main(){

srand(time(0));

// parametri della simulazione:

const unsigned long int NUM_PARTICELLE = 800;

const unsigned long int PASSI = 1000;

// (quando prima di avere finito i passi non ci

// sono piu' particelle ci si ferma...)

// questa e' l'inverso della probabilita' che nell'unita' di tempo

// (= in un passo) una particella decada...

const int PROB_INVERSA = 40;

bool part_attive[NUM_PARTICELLE];

unsigned long int i,j;

// questo contatore, inizialmente al massimo, tiene conto via

// via dei "decadimenti" che hanno luogo...

unsigned long quante_attive = NUM_PARTICELLE;

// si impostano inizialmente tutte le particelle su "ancora presente"

(true)

for (j=0;j<NUM_PARTICELLE;j++) part_attive[j]=true;

cout << "Passo" << "\t" << "N_sp" << "\t" << "N_th" << endl;

cout << "------------------------" << endl;

for (i=1;i<=PASSI;i++){

// particella per particella, se e' il caso (calcolato

probabilisticamente)

// la si fa decadere. Se e' gia' svanita, la si salta.

for (j=0;j<NUM_PARTICELLE;j++)

if (part_attive[j])

if (uno_su_N(PROB_INVERSA)){

part_attive[j]=false;

quante_attive--;

}

// stampa del numero di particelle attive

cout << i << "\t" << quante_attive << "\t" << (unsigned long int)

(NUM_PARTICELLE*exp(-(i*1.0/PROB_INVERSA))) << endl;

// si verifica se le particelle sono decadute tutte...

if (quante_attive<=0) break;

}

}

bool uno_su_N(int N){

int numero=rand() % N;

return (numero == 0);

// un numero sara' zero (modulo N) in un caso su N...

}

Dettagli
Publisher
2 pagine
57 download