Hopp til innhald
Øving

Bryting og overlagring – programmering

I denne oppgåva skal vi sjå på bølgefenomena bryting og overlagring. Vi skal prøve å lage nokre program som reknar ut vinklar og simulerer bølger.

Bryting

Bryting vi seie at bølger endrar vinkel når dei går frå eit medium til eit anna. Dette kjem av at bølga endrar fart. I det første programmet vårt skal vi sjå på lysbølger som kjem frå luft og går inn i eit valt medium.

For dei aller fleste media vil lyset gå litt saktare, og lyset vil då bli brote inn mot innfallsloddet. Innfallsloddet er ei tenkt linje som står vinkelrett på flata mellom mediet (til dømes vinkelrett på vassflata eller glasvindauget).

Storleiken på denne vinkelen er gitt av formelen

sin(u)=sin(v)n

der u er brytingsvinkelen, v er innfallsvinkelen og n er brytingsindeksen til mediet som lyset går inn i. n er eit tal vi må finne eksperimentelt for kvart medium, men du kan òg finne n for mange stoff på internett.

Vi lagar no eit program for å rekne ut denne vinkelen:

Sjå kode og resultat samtidig

I menyen til venstre kan du velje vising i fullbreidde viss du vil sjå kode og resultat samtidig. Det same oppnår du ved å kopiere koden inn i eit Pythonprogram, som til dømes Spyder.

Brytingsvinkel

Forklaring til koden over

I koden over har vi brukt biblioteket NumPy til å rekne med vinklar.

Det er ikkje sikkert du veit kva sin eller arcsin er. Kort fortalt er sin, som eigentleg heiter , forholdet mellom motståande katet og hypotenusen, eit nyttig tal som blir ofte brukt i matematikk. Omgrepet arcsin (invers sinus) blir brukt til å rekne om sinus-verdien til ein vinkel tilbake til vinkelen.

Du har kanskje òg lagt merke til at tala 180 og pi blir brukte. Dette er fordi ein i meir avansert matematikk ofte bruker 2 pi som omkrinsen av ein sirkel – og ikkje 360 grader, slik vi er vande med. Dette er eit vinkelmål som blir kalla radianar. Grunnen til at vi må bruke det her, er at NumPy har valt det. Vi må derfor legge inn ei omrekning, slik at vi kan bruke vanlege grader.

Vel ulike medium (materiale) med ulik brytingsindeks

Utfordring: I programmet vårt kjem alltid lyset frå luft og går til eit anna medium. Men det kan jo tenkast at det kjem frå eit anna medium enn luft. Prøv å lage eit program der brukaren vel både kvar lyset kjem frå, og kvar det går til.

Formelen er nesten den same som tidlegare:

sin(u)=n1·sin(v)n2

  • n1 er brytingsindeksen til mediet lyset kjem frå
  • n2 er brytingsindeksen mediet går til
  • u er brytingsvinkelen
  • v er innfallsvinkelen

Viss du vil ha med luft som eit val, er brytingsindeksen til luft lik 1.

Ei løysing kan vere slik:

Brytingsvinkel mellom ulike medium

I løysingsforslaget over har vi valt å endre litt på if- og elif-setningane, sidan begge vala må gjerast før noko blir skrive ut. Viss du legg inn veldig mange ulike medium, kan det bli litt tungvint å måtte legge til to elif-setningar for kvart av dei. Då kan det kanskje vere lurare å legge verdiane inn i ei liste og hente dei ut igjen på indeksnummer.

Overlagring

I avsnittet om bryting forklarte vi kva sinus er. Noko av det sinus kan brukast til, er å teikne bølger. Det skal vi gjere når vi no skal sjå på bølgefenomenet overlagring.

Ute på ope hav er ikkje overlagring noko vi treng å tenke på, men når vi nærmar oss land, holmar eller skjer, har du sikkert lagt merke til at bølgene endrar karakter og tilsynelatande blir meir kaotiske og ofte kraftige. Grunnen til dette er overlagring. Det betyr at bølger som møtest, vil "legge seg oppå kvarandre". Sagt på ein meir matematisk måte vil amplituden til bølgene bli addert.

Det er fleire tilfelle der dette vil skje, til dømes når bølger slår mot eit høgt skjer og blir sende tilbake til havet, eller når dei blir bøygde mellom klipper eller tronge sund. I slike tilfelle kan bølger få så store bølgedalar at dei får skip til å gå på grunn.

Filmen under viser eit døme på overlagring av lydbølger som kjem frå to høgtalarar, mens avstanden mellom dei aukar.

Film som viser døme på overlagring av lydbølger. Video: Christian Koch / CC BY-NC 4.0

Vi skal no lage eit program som simulerer dette ved at brukaren legg inn to bølger. Deretter set programmet dei saman og gir oss resultatet av overlagringa. Men først må vi introdusere nokre fleire omgrep om bølger:

Amplitude

Maksimal høgde av ei bølge (rekna frå midten, den såkalla likevektslinja).

Frekvens og bølgelengde

Kor ofte bølga går frå maksimal høgd, ned og tilbake til maksimal høgde igjen, kallar vi frekvens. Med andre ord er frekvens talet på svingingar per tidseining. frekvens=svingingartid

Avstanden mellom bølgetoppane kallar vi bølgelengde. Viss du bruker x-aksen som sekund, vil talet på bølgetoppar mellom kvar x-verdi gi frekvensen. Men viss du i staden bruker x-aksen som lengd, vil avstanden mellom bølgetoppane vere bølgelengda.

Faseforskyving

Begge bølgene treffer kvarandre ikkje nødvendigvis i same stadium av bølgebevegelsen. Viss den eine bølga er på topp samtidig som den andre er på botn, vil det gi eit heilt anna utslag enn om bølgetopp treffer bølgetopp.

Alle desse eigenskapane er representerte i formelen vi bruker:

f(x) = A·sin(k·x + c)

Teikne bølger

Vi begynner med å lage eit program som kan teikne bølger. Deretter skal vi legge inn ei bølge til. Prøv å lage eit program med den gitte formelen som ein funksjon. Brukaren skal kunne skrive inn A-, k- og c-verdiar, og programmet skal så teikne ein graf som viser bølga (lat programmet bruke 1000 x-verdiar mellom 0 og 25 til å teikne bølga).

Kva er A, k og c?

Når du har fått programmet til å verke, prøver du å køyre det nokre gonger med ulike verdiar for A, k og c, heilt til du har fått ei forståing av kva som styrer amplitude, frekvens/bølgelengde og faseforskyving.

Utvide programmet til to bølger

Prøv no å utvide programmet slik at det lagar to bølger som det først teiknar kvar for seg, og deretter saman som ei overlagra bølge.

Køyr programmet nokre gonger, og sjå kva bølger du klarer å lage.

Kommentarar til løysingsforslaget

Sluttverdien til x er sett til 8·pi  (8·π), og ikkje 25. Grunnen til det er som tidlegare nemnt at NumPy bruker radianar, og ikkje grader. Kort fortalt angir radianar kor langt rundt ein sirkel med radius 1 du flyttar deg, altså lengda av sirkelbogen. Går du heile vegen rundt, er lengda 2 pi (2π). Ved å setje sluttverdien til åtte pi veit vi at vi går fire rundar, og det gir oss litt meir kontroll over kor mange bølgetoppar programmet kjem til å teikne (fire viss k=1, åtte viss k=2, osb.).

plt.ylim(-10, 10) er lagt til denne gongen. Vanlegvis vel Python sjølv kvar y-aksen startar og stoppar, basert på verdiane som skal plottast, men det er ikkje så føremålstenleg for oss. Vi vil gjerne sjå korleis bølgene ser ut både før og etter overlagring, og då er det greitt å sjå dei i same storleiksforhold. Ver merksam på at dette set nokre avgrensingar for kva brukaren kan velje som amplitude (A).

Nokre utfordringar

  1. Lag to bølger som begge har amplitude større enn 1, men som ved overlagring gir eit heilt stille hav.
  2. Lag to bølger der bølgetopp alltid møter bølgetopp, men der bølgene har ulik verdi for c.
  3. Lag to bølger som saman gir ei bølge der den fjerde bølgebotnen er djupare enn dei første tre når dei to bølgene er overlagra.

Relatert innhald

Fagstoff
Bølgefenomen

I ei bølge er det sjølve forstyrringa som breier seg, ikkje materialet. På denne sida kan du sjå fleire spesielle eigenskapar ved bølger.

Fagstoff
Kjenneteikn på ei bølge

Bølgerørsle: Kvart av punkta på tauet svingar rett opp og ned utan å bli med i den retninga bølga breier seg i, men rørsla blir overført til nabopunktet.

CC BY-SA 4.0Skrive av Eirik Farestveit Erstad og Kristin Bøhle.
Sist fagleg oppdatert 15.06.2020