Garraio fenomenoak |
Difusioa Difusioa Nola neurtu difusio koefizientea Difusioaren simulazioa
Jalkiera Boltzmann-en konstantea |
![]()
|
|
Higidura browndarra bi dimentsiotanPartikula txiki-txiki bat, esaterako polen ale bat, likido batean murgiltzean, ausazko higiduraz mugitzen da, etengabe. Horrelako higidura mota behatu zuen lehena Robert Brown izan zen, botanikari eskoziarra, XIX mendean. Higidura browndarrak erakusten du oreka termikoan dagoen sistema batek fluktuazio estatistikoak dauzkala. Oso interesgarria da, zeren neurketa fisiko delikatuenek izan dezaketen zehaztasuna mugatzen baitu. Higidura browndarra eskala mikroskopikoan uler daiteke, partikula txiki horrek etengabeko talkak jasaten dituelako inguruko likidoko molekulekin (partikula "termiko" deiturikoekin). SaiakuntzaAukeran idatz daitezke:
Partikula termikoen masa unitatetzat hartzen da (mt=1) eta beraz, partikula browndarraren masa haiekiko erlatiboa da. Partikula browndarra pausagunetik abiatzen da. Hasi botoian klikatu.Beha ezazu partikula browndarraren higidura, polen aleak mikroskopioan egiten duena bezalakoxea. |
Higidura browndarra dimentsio bakarrean. Difusioaren simulazioaAurreko kapituluan difusioaren simulazioa burutzen da, non, N partikula browndar koordenatuen jatorrian kokatzen diren eta inguruetara eboluzionatzen duten. Kapitulu horretako applet-ean partikulen banaketa aurki daiteke askatu ondorengo edozein aldiunetan n(x,t), X ardatzean zehar hartu diren kutxa bakoitzaren partikula kopuruak zenbatuz. Simulazioak erakusten du nola sakabanatzen diren partikula browndarrak X ardatzean zehar denbora pasa ahala. Erabilitako eredu matematikoaren arabera (ikus bedi erreferentzietan aipatutako azken artikulua) denbora luzeetarako, desplazamenduen karratuen bataz bestekoa (desplazamendu koadratikoa) t denborarekiko proportzionala da: eta hemen D difusio koefizientea da SaiakuntzaHasi botoian klik egin simulazioa abiatzeko.Programak kalkulu-urratsak egiten ditu eta urrats-kopurua goiko eta eskumako erpinaren inguruan erakusten du (denbora). Kutxa-segida osoaren partikula kopuruen distribuzioa bi modutan erakuts daiteke:
Azpialdean kutxa segida ikusten da eta partikula higikorrak puntu gorriz adierazita. Gaineko grafikoan kutxa bakoitzaren populazioa marra urdinaz adierazten da. Leihatilaren goiko eta ezkerreko erpinean erakusten da, desplazamenduen karratuen batez besteko balioa zati denbora: <x2>/t. Ikus daitekeenez, hazi egiten da balio finko baterantz baina gero fluktuatu egiten du balio horren inguruan. |
Mishima N., Yamakoshi Petrosky T., Minowa H., Goto S. Model experiment of two-dimensional Brownian motion by microcomputer. Am. J. Phys. 48 (12) December 1980, pp. 1050-1055
Anger C. D., Prescott J. R., A Monte Carlo simulation of Brownian motion in the freshman laboratory. Am. J. Phys. 38 (6) June 1970, pp. 716-719
Gunther L., Weaver D. L., Monte Carlo simulation of Brownian motion with viscous drag. Am. J. Phys. 46 (5) May 1978, pp. 543-545
import java.util.*; public class Sistema { final int nParticulas=500; //posición double[] x; //velocidad double[] v; //tiempo int t; //números aleatorios Random rnd=new Random(); public Sistema() { x=new double[nParticulas]; v=new double[nParticulas]; for(int i=0; i<nParticulas; i++){ x[i]=0.0; v[i]=0.0; } t=0; } public void evolucion(){ for(int i=0; i<nParticulas; i++){ x[i]+=v[i]; if((int)(10*rnd.nextDouble())!=9){ v[i]*=0.9; if(rnd.nextDouble()>0.5){ v[i]-=0.25; }else{ v[i]+=0.25; } } } t++; } } |
import java.util.*; public class Sistema { //masa de las partículas térmicas final double Mt=1.0; //masa de las partículas brownianas double Mb; //velocidad de las partículas térmicas double Vt; //Posición de las partícula browniana public double X, Y; //Velocidad de la partícula browniana double Vx, Vy; //números al azar Random rnd=new Random(); public Sistema(double Vt, double Mb) { this.Vt=Vt; this.Mb=Mb; //estado inicial X=0; Y=0; Vx=0; Vy=0; } public void evolucion(){ double Ux, Uy, angulo, Wx, Wy; angulo=2*Math.PI*rnd.nextDouble(); Ux=Vt*Math.cos(angulo); Uy=Vt*Math.sin(angulo); Wx=Vx-Ux; Wy=Vy-Uy; angulo=2*Math.PI*rnd.nextDouble(); Vy+=(Mt/(Mt+Mb))*(Wy*(Math.cos(angulo)-1)+Wx*Math.sin(angulo)); Vx+=(Mt/(Mt+Mb))*(Wx*(Math.cos(angulo)-1)-Wy*Math.sin(angulo)); X+=Vx; Y+=Vy; } } |