Hopp til innhald
Øving

Bryting og overlagring – programmering

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

Bryting

Bryting vi seie at bølgjer endrar vinkel når dei går frå eit medium til eit anna. Dette kjem av at bølgja endrar fart. I det første programmet vårt skal vi sjå på lysbølgjer 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 leggje 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 tenkjast 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 leggje til to elif-setningar for kvart av dei. Då kan det kanskje vere lurare å leggje 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ølgjer. Det skal vi gjere når vi no skal sjå på bølgjefenomenet overlagring.

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

Det er fleire tilfelle der dette vil skje, til dømes når bølgjer 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ølgjer få så store bølgjedalar at dei får skip til å gå på grunn.

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

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

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

Amplitude

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

Frekvens og bølgjelengd

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

Avstanden mellom bølgjetoppane kallar vi bølgjelengd. Viss du bruker x-aksen som sekund, vil talet på bølgjetoppar mellom kvar x-verdi gi frekvensen. Men viss du i staden bruker x-aksen som lengd, vil avstanden mellom bølgjetoppane vere bølgjelengda.

Faseforskyving

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

Alle desse eigenskapane er representerte i formelen vi bruker:

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

Teikne bølgjer

Vi begynner med å lage eit program som kan teikne bølgjer. Deretter skal vi leggje inn ei bølgje 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ølgja (lat programmet bruke 1000 x-verdiar mellom 0 og 25 til å teikne bølgja).

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ølgjelengd og faseforskyving.

Utvide programmet til to bølgjer

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

Køyr programmet nokre gonger, og sjå kva bølgjer 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ølgjetoppar 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ølgjene 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ølgjer som begge har amplitude større enn 1, men som ved overlagring gir eit heilt stille hav.
  2. Lag to bølgjer der bølgjetopp alltid møter bølgjetopp, men der bølgjene har ulik verdi for c.
  3. Lag to bølgjer som saman gir ei bølgje der den fjerde bølgjebotnen er djupare enn dei første tre når dei to bølgjene 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.