Sähköstatiikan demonstraatio, ohjeet

Ideaa on hiukan työstetty VB:n puitteissa mm. NEWGAL-projektin jutussa #321. Tämä on JavaScript-versio samasta teemasta.

Tavoitteena on simuloida elektronien liikettä tyhjiössä sähkövarausten muodostamassa sähkökentässä. Yksinkertaistamme tilannetta niin että kaikki tapahtuu samassa tasossa. Kun elektronit liikkuvat samassa tasossa kuin missä varaukset ovat, niin 2D-esitys riittää. Elektronit eivät lennä tasosta ulos. Elektronit tulevat vasemmalta tietyllä alkunopeudella. Negatiiviset varaukset työntävät elektroneita poispäin ja positiiviset varaukset vetävät niitä puoleensa.

Tämä käsittely on liian yksinkertainen, mutta jonkinlaisia tuloksia sekin voi tuottaa. Periaatteessa ratkaisemme differentiaaliyhtälön. Tiedämme elektronin varauksen ja massan sekä alkunopeuden. Coulombin lain perusteella voimme laskea kiinteiden sähkövarausten elektroniin aiheuttamat voimat kun tiedämme elektronin paikan.

Sähköisten voimien resultantti aiheuttaa elektronin massalle tietyn suuruisen kiihtyvyyden joka tarkoittaa nopeuden muutosta. Tällä perusteella voimme pienin aika-askelin laskea komponenteittain likiarvon elektronin nopeudelle aika-askeleen lopussa. Ja sitten tulee ehkä kaikkein epäilyttävin kohta : käytämme aika-askeleen aikana elektronin nopeutena sen aiemman nopeuden ja uuden nopeuden keskiarvoa uuden sijainnin laskennassa.

Varsinaisesti pitäisi kiihtyvyyden perusteella integoida elektronin paikkaa. Kiihtyvyys on nopeuden ensimmäinen aikaderivaatta ja paikan toinen aikaderivaatta. Niinpä tässä pitäisi oikeasti ratkaista numeerisesti toisen asteen differentiaaliyhtälö. Ratkaisemme vain ensimmäisen asteen differentiaaliyhtälön ja laskemme muina miehinä komponenteittain nopeuksien keskiarvot sekä nopeuksien keskiarvojen perusteella uudet sijainnit. Epäilemättä tämä on matemaattisesti täysin väärin ja kiellettyä. Älkää tehkö niinkuin minä olen tehnyt, vaan tehkää niinkuin minä käsken!

Olen tehnyt tämän hirmuteon täysin tietoisena toisen asteen differentiaaliyhtälön hyvästä numeerisesta ratkaisusta (Runge-Kutta på svenska). Jotenkin vain tuntui että tällaistakin pitää joskus kokeilla. Suurta tulevaisuutta tälle tyylille ei voi ennustaa. Onhan tämä kyllä jonkin verran yksinkertaisempi ja yksinkertaisuus on sikäli siunauksellista kun täytyy käsitellä kahta ulottuvuutta.

Ohjelmassa on muutenkin heikosti käsiteltyä problemattiikkaa, mutta haluan säilyttää tämän eräänlaisena sormiharjoituksena ja henkilökohtaisen rohkeuden osoittavana trofeena, voiton merkkinä. Silti on tunnustettava suuria syntejä:

Perusteiden problematiikasta johtuen tuskin tätä proggista tältä pohjalta paljoakaan kehitän eteenpäin.

Ohjelma toimii uusissa selaimissa jotka hanskaavat HTML5 Canvas-elementin ja JavaScript täytyy olla sallittuna. Ja se siis on TÄSÄ.


Takaisin