For Pi Day, beregne Pi selv ved hjelp av to sammenkollende baller


Dette er på minst mitt niende år med å skrive om Pi Day – her er innlegget mitt fra 2010. Selvfølgelig kalles det Pi Day fordi datoen, 3/14, ligner de tre første sifrene i pi (3.1415 …). På dette tidspunktet har jeg bygget opp et helt bibliotek med morsomme ting til ære for Pi Day.

Her er en ny. Du kan beregne tallene i pi ved hjelp av elastiske kollisjoner mellom to objekter av forskjellige masser og en vegg. La meg forklare med dette diagrammet.

Rhett Allain

Det er to baller, A og B. Ball A har en større masse og beveger seg i begynnelsen. Det kolliderer med ball B slik at ballen B øker og ball A bremser bare litt (dette er en perfekt elastisk kollisjon). Etter dette begynner ball B å bevege seg mot veggen og til slutt hopper den tilbake mot ball A for en annen kollisjon. Dette fortsetter til ballen A beveger seg vekk fra veggen i stedet for mot den, og det er ikke lenger noen kollisjoner.

Nå for pi-delen. Hvis du vet at massen av ball A er 100 ganger større enn for ball B, vil det være 31 kollisjoner. Hvis masseforholdet er 10.000 til 1, vil det være 314 kollisjoner. Ja, det er de 3 første sifrene i pi. Hvis du hadde et masseforhold på 1 million til 1, ville du få 3.141 kollisjoner. (Husk at de første par sifrene i pi er 3.1415 …) Generelt, hvis du vil ha "d" siffer på pi, trenger du masse A delt med masse B som skal heves 100 til d-1-effekten.

Dette er ikke en veldig effektiv metode for å beregne sifrene i pi, men det ser ut til å fungere. Her er en flott video fra 3Brown1Blue som forklarer denne situasjonen. Også her er en eldre video fra Numberphile som også går over dette problemet.

Dette er gal, fantastisk. Jeg forstår ikke engang hvordan det fungerer. Men det er ikke derfor jeg er her. I stedet skal jeg vise deg hvordan du kan modellere dette fenomenet med en numerisk beregning. Det kommer til å bli gøy.

Jeg antar at det første du må ta opp er: Hva er en elastisk kollisjon? Det er virkelig to ting å vurdere i en kollisjon. Det er momentum i objektene, hvor momentum er produktet av masse og hastighet. Hvis det ikke er noen eksterne krefter på de to objektene som kolliderer (eller kollisjonen skjer over en veldig kort tidsramme), er den totale vektormomentet for objektene før kollisjonen lik fart etter kollisjonen. Vi kaller denne bevaring av momentum.

Den andre mengden å vurdere i en kollisjon er kinetisk energi. Som momentum, avhenger dette også av objektets masse og hastighet. Men det er to viktige forskjeller. For det første er den kinetiske energien proporsjonal med masseproduktet og hastigheten kvadrert. For det andre er momentum en vektor og har dermed retning, men kinetisk energi er en skalar uten retning.

I de fleste kollisjoner er momentum bevaret, men kinetisk energi er ikke. Imidlertid, i spesielle kollisjoner, kalt elastiske kollisjoner, blir både momentum og kinetisk energi bevart. Dette er kollisjonene vi trenger for å beregne pi.

Selv om det faktisk er mulig å bruke momentum og kinetisk energi for å finne ut hvor mange ganger to baller kolliderer, skal jeg ikke gjøre det. I stedet skal jeg gjøre dette som en numerisk modell. I en numerisk modell gjør du noen grunnleggende beregninger, og deretter bryter du bare problemet inn i en rekke små trinn. I dette tilfellet vil de små trinnene være korte tidsintervaller over hvilke jeg antar at ting er konstant. Stol på meg, dette fungerer.

Men hvordan modellerer du en kollisjon? En måte er å late som at ballene har fjærer inne i dem (som ikke er helt feil). Hvis radiusen til to baller overlapper, vil det være en fjærkraft som skyver dem fra hverandre. Størrelsen på denne fjærkraften er proporsjonal med mengden de to gjenstandene overlapper. Fordi denne vårstyrken vil være den eneste kraften som virker på de to gjenstandene, vil momentet bli bevaret. Og fordi energien som er lagret på våren, ikke har noe energitap, vil kinetisk energi også bli bevart. Det er en perfekt elastisk kollisjon.

Hva med kollisjonen med veggen? I så fall er det akkurat som kollisjon mellom to baller, men med en forskjell. Jeg lar ikke veggen endre sin posisjon eller fart – du vet … fordi det er en vegg.

Nå for den numeriske beregningen. Her er en kollisjon mellom to baller med et 100 masseforhold. Hvis du vil kjøre den igjen, klikker du bare på Play-knappen. Hvis du vil se og redigere koden, klikker du på blyanten.

Det fungerer. Det er 31 kollisjoner i denne modellen – som er de to første sifrene i pi. Hva om du vil ha tre sifre? Du kan prøve å bytte massene, men det virker ikke. Problemet er at når den store massen kommer svært nær veggen med den lille massen mellom dem, skjer det ikke slik du har tenkt. Du kan faktisk få den lille massen til å interagere med både veggen og den store massen samtidig. Selv om dette er realistisk, gir det oss ikke den beste beregningen av pi.

Så, hvordan fikser du det? Jeg har et par valgmuligheter (og du kan prøve dette som hjemmearbeidet ditt). Den første metoden ville være å fikse denne numeriske vårbaserte modellen. Jeg tror at hvis du endrer tidstrinnet (dt) og vårekonstanten (k) når ballene kolliderer, kan du få et bedre svar. Her er hva du ville gjøre. Når ballene kommer nærmere, gjør du et mindre tidstrinn og en større fjærkonstant. Dette ville gjøre ballbollskollisjonen mer nøyaktig i de tilfeller der den mindre ballen blir knust.

Det neste alternativet er å bare forlate våren-basert kollisjonsmodell. I stedet kan du beregne ballens hastigheter analytisk etter hver kollisjon. Overraskende er en en-dimensjonal, perfekt elastisk kollisjon ikke et så enkelt problem å løse. Men ikke bekymre deg, jeg gjorde det for deg og dekket alle detaljene. Jeg har til og med laget en pythonfunksjon som tar de to objektene med starthastighetene og returnerer hastighetene etter kollisjonen. Ja, jeg ga deg virkelig en start på dette siste problemet. Kanskje jeg vil lagre dette for neste års Pi Day.


Flere flotte WIRED-historier