Njuike sisdollui
Fágaartihkal

Modellering og analyse av trigonometriske funksjoner

Mange periodiske fenomener i naturen kan modelleres med sinusfunksjoner.

Svingninger i naturen

Eksempler på naturfenomener som har eller kan ha harmoniske svingninger, og som derfor kan modelleres med trigonometriske funksjoner:

  • tidevann – vannstand i sjøen som varierer på grunn av månens og solas gravitasjonspåvirkning og gir det vi kaller flo og fjære (høyvann og lavvann)

  • bølger på vann

  • hvor høyt sola står på himmelen

  • temperaturen gjennom et døgn

  • gjennomsnittlig døgntemperatur gjennom et år

  • hvor stor del av månen som lyser

Modellering betyr å komme fram til en matematisk modell som beskriver naturfenomenet. Når det gjelder modellering av harmoniske svingninger, kan vi noen ganger gjøre det med regresjon dersom vi har måledata som viser hvordan utslaget varierer med tid eller sted. Andre ganger har vi ikke måledata, men andre opplysninger om svingningene som gjør at vi kan komme fram til den matematiske modellen uten regresjon.

Modellering uten bruk av regresjon

Kort repetisjon av den generelle sinusfunksjonen

Vi har fra siden "Periode, amplitude, likevektslinje og faseforskyvning" at en generell sinusfunksjon f kan skrives på formen

fx=Asin(kx+φ)+d

der vi har disse størrelsene (se også figuren nedenfor):

  • Perioden p=2πk er den korteste avstanden mellom to punkter i samme svingetilstand, for eksempel to skjæringspunkter med likevektslinja der grafen er stigende, slik som markert på figuren. Vi kan også for eksempel lese av avstanden mellom to nabobølgetopper.

  • Likevektslinja y=d er den linja som grafen til funksjonen svinger rundt.

  • Amplituden A er maksimalt utslag fra likevektslinja.

  • Faseforskyvningen xf=-φk er x-koordinaten til det skjæringspunktet mellom stigende graf og likevektslinja som ligger nærmest y-aksen.

Hvis vi kan bestemme de fire størrelsene periode, likevektslinje, amplitude og faseforskyvning til et periodisk fenomen, kan vi alltid finne en sinusfunksjon som passer.

Finn funksjonsuttrykket fx som passer til grafen i figuren over ved å bestemme disse fire størrelsene.

Funksjonsuttrykket til grafen

Likevektslinja er y=1, så vi får at d=1.

Vi leser av perioden som avstanden mellom to punkter på grafen i samme svingetilstand. For eksempel kan vi lese av avstanden mellom de to stiplede linjene på figuren. Avstanden, og dermed perioden, er p=5π4-π4=4π4=π. Det betyr at k=2πp=2ππ=2.

y-koordinaten til toppunktene er 3, så amplituden til funksjonen er A=3-d=3-1=2.

Det skjæringspunktet mellom stigende graf og likevektslinja som ligger nærmest y-aksen, har koordinatene π4,1. Vi får derfor at xf=π4. Det betyr at 𝜑=-xf·k=-π4·2=-π2.

Funksjonen blir

fx=2sin2x-π2+1

Eksempel: tidevann

Tidsrommet mellom to høyvann eller to lavvann i Norge er omtrent 12 timer og 25 minutter, eller 12,4 timer (Store norske leksikon, 2022). I eksempelet her betyr derfor x et tidspunkt målt i timer og ikke en lengde. Høyvann er definert som høyeste vannstand (vannivå) og lavvann som laveste vannstand.

Opplysningen om avstanden mellom to høyvann eller to lavvann gir oss en av de fire størrelsene periode, likevektslinje, amplitude og faseforskyvning. Hvilken av disse størrelsene får vi oppgitt?

Oppgitt størrelse

Da har vi fått oppgitt perioden, p. Vi får at p=12,4 h.

Bestem konstanten k ut fra dette.

Konstanten 𝑘

Vi har at

p = 2πkk = 2πp= 2π12,4 h= 0,51 h-1

Siden p er målt i timer (h), blir måleenheten for k h-1.

Forklar hvorfor vi kan sette d=0.

Forklaring

Vannstanden har i utgangspunktet ikke noe absolutt nullnivå, så vi kan velge fritt hvilket nivå vannstanden skal svinge rundt. Det enkleste er derfor å velge d=0.

På den samme nettsiden om tidevann står det at tidevannsforskjellen i Mandal er 35 cm i november. Hvilken av konstantene kan vi bestemme ut ifra denne opplysningen? Bestem den.

Bestemmelse av konstant

Opplysningen gir oss forskjellen mellom maksimalverdien og minimalverdien til den sinusfunksjonen vi skal fram til. Siden amplituden A er halve denne forskjellen, får vi at amplituden er

A=35 cm2=17,5 cm

Hvilken betydning har faseforskyvningen xf her?

Betydning av faseforskyvningen

Faseforskyvningen forteller her hvor langt det er fra origo til det første nullpunktet hvor grafen er stigende. Grunnen til at vi her kan bruke nullpunktet, er at likevektslinja ligger på y=0.

Bestem konstanten 𝜑 dersom vi antar at det var høyvann ved midnatt.

Bestemmelse av 𝜑

Høyvann betyr at vannstanden er A på dette tidspunktet. Dette skal skje ved midnatt, altså når x=0. Vilkåret betyr derfor at

f(0) = AAsink·0+𝜑 = Asin𝜑 = 1𝜑 = π2+n·2π,   n

Her kan vi velge n=0 siden et tillegg på et helt antall 2π ikke gjør noe fra eller til for en sinusfunksjon. Vi kan derfor sette

𝜑=π2

Funksjonen, eller den matematiske modellen, for vannstanden blir derfor

fx=17,5sin0,51x+π2

Modellering med regresjon

Dersom vi hadde hatt målinger for hver time av vannstanden i Mandal på den aktuelle dagen i november, kunne disse sett slik ut (fiktive tall):

x, timer etter midnatt0123456789
fx, cm17,815,28,91,1-7,9-14,7-16,9-16,4-10,2-2,8
x, timer etter midnatt10111213141516171819
fx, cm6,813,117,116,311,74-5,1-13,2-17-17,1

For å komme fram til en matematisk modell for variasjonen i vannstand kan vi gjøre en sinusregresjon med disse tallene.

Sinusregresjon med GeoGebra

Vi legger tallene inn i regnearkdelen i GeoGebra på vanlig måte, markerer tallene og velger regresjonsanalyseverktøyet. Nedenfor kan du laste ned et GeoGebra-ark der tallene er lagt inn.

Regresjonsmodellen "Sin" gir regresjon med sinusfunksjon.

Resultatet av regresjonen blir fx=17,5sin0,51x+1,56-0,07.

Hvorfor fikk vi d=-0,07 i stedet for d=0?

Forklaring

Målingene og dermed utregningene i regresjonen vil være avhengige av målenøyaktighet. Forskjellen mellom lavvann og høyvann er oppgitt i hele cm, målingene er oppgitt med 1 desimals nøyaktighet, og konstantene i modellen er oppgitt med to desimaler. I tillegg kan målingene det bestemte døgnet avvike noe fra det gjennomsnittsdøgnet forskjellen i lavvann og høyvann er oppgitt ut fra.

Sinusregresjon med Python

Regresjon med Python kan gjøres på flere måter. Her har vi valgt å bruke metoden curve_fit fra scipy.optimize selv om den gir oss mer data enn vi skal bruke her.

Metoden er basert på at vi angir i koden hva slags type funksjon som skal brukes i den matematiske modellen. Dette gjøres ved å definere modellen som en pythonfunksjon i koden. I vårt tilfelle ønsker vi å tilpasse målingene til en sinusfunksjon. Starten på programmet kan se slik ut:

python
1        # importerer nødvendige bibliotek
2from scipy.optimize import curve_fit
3import numpy as np
4import matplotlib.pyplot as plt
5        # lager funksjonen som beskriver modellen
6def modell(x,A,k,fi,d):
7  return A*np.sin(k*x + fi) + d

Parametrene til pythonfunksjonen modell er først den frie variabelen x, deretter de vanlige konstantene som brukes i den generelle sinusfunksjonen. Funksjonen modell brukes av metoden curve_fit sammen med ei liste med x-verdiene og ei liste med y-verdiene i målingene. curve_fit gir tilbake to lister. Den ene inneholder de fire konstantene A, k, fi og d (i vårt tilfelle) som gjør at den matematiske funksjonen vi definerte i pythonfunksjonen modell, passer mest mulig med måledataene. Den andre lista inneholder de såkalte kovariansene, som vi ikke skal bruke her.

Koden videre kan se slik ut:

python
1        # legger inn måledataene i lister
2x_verdier = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
3y_verdier = [17.8,15.2,8.9,1.1,-7.9,-14.7,-16.9,-16.4,-10.2,-2.8,\
4        6.8,13.1,17.1,16.3,11.7,4,-5.1,-13.2,-17,-17.1]
5        # bruker metoden curve_fit og legger resultatene i to lister
6konstanter,kovarians = curve_fit(modell,x_verdier,y_verdier)
7        # henter ut konstantene fra lista konstanter
8A, k, fi, d = konstanter
9
10        # lager utskrift av funksjonen
11print(f"Funksjonen blir f(x) = {A:.2f}sin({k:.2f}x{fi:+.2f}){d:+.2f}")
12        # plotter data og modell som en kontroll
13        # plotter data
14plt.plot(x_verdier,y_verdier,'+') 
15        # plotter modell
16x_array = np.linspace(min(x_verdier),max(x_verdier),300)
17y_array = modell(x_array,A, k, fi, d)
18plt.plot(x_array,y_array,"brown")
19plt.show()

Kjør koden og se om du får det samme resultatet som regresjonsverktøyet i GeoGebra.

Kommentarer til koden i den andre kodeblokka

I linje 8 bruker vi éi linje på å legge verdiene fra lista konstanter over til de fire variablene.

Lista kovarians bruker vi ikke i programmet. Vi har vurdert dette med kovarians til å være utenfor det som kreves i R2. Kovariansen sier noe om hvor godt dataene passer til modellen.

I linje 11 har vi brukt formatsymbolet + som gjør at fortegnet til variabelen skrives ut enten det er pluss eller minus.

I linje 14 bruker vi et plusstegn i plot-kommandoen for at grafen skal bli punkter (som plusstegn) og ikke en sammenhengende graf. Vi kunne også ha brukt kommandoen scatter i stedet for plot her.

Du trenger kanskje ikke kommandoen plt.show() for å få se plottet.

Vi har ikke lagt vekt på å lage et pent plott med aksetitler og rutenett her.

Analyse av modellen

Vi antar nå at vi kun har hatt måledataene av vannstanden og har brukt regresjon til å komme fram til funksjonen

fx=17,5sin0,51x+1,56

for vannstanden der vi har satt d=0 siden nullnivået ikke er så interessant, i tillegg til at verdien vi kom fram til for d, var veldig liten. Vi kjenner ikke informasjonen om tidevann som står på Store norske leksikon nå. Aktuelle spørsmål vi kan finne svaret på, er:

  1. Når blir det høyvann, og når blir det lavvann?

  2. Hvor lang tid er det mellom høyvann og lavvann?

  3. Hvor stor er nivåforskjellen på høyvann og lavvann?

  4. Når stiger vannstanden raskest, og hvor raskt stiger den da?

  5. Hva er gjennomsnittsvannstanden?

Hva må vi finne ut om funksjonen f for å kunne svare på disse spørsmålene?

Vi må finne ut:

De tre første spørsmålene har med topp- og bunnpunktene til funksjonen f å gjøre. Det fjerde har med vendepunktene til funksjonen å gjøre. For å finne svaret på det siste spørsmålet må vi finne gjennomsnittsverdien til funksjonen.

Tenk over: Må vi bruke derivasjon for å gjennomføre analysen?

Om måten å analysere på

Siden vi vet det meste om hvordan den generelle sinusfunksjonen oppfører seg, trenger vi ikke bruke derivasjon til analysen. Det går raskere uten.

Vi starter med å finne forskjellen mellom høyeste høyvann og laveste lavvann (det fjerde spørsmålet). Den er avstanden mellom største og minste verdi for sinusfunksjonen, som er det dobbelte av amplituden A.

2A=2·17,5 cm=35,0 cm

Toppunktene finner vi ved å finne ut når argumentet til sinusfunksjonen er π2+n·2π og n. Vi bruker CAS i GeoGebra.

Vi får at vi har toppunkt når x=12,32n+0,0212,32n. Vi tillater oss å runde av her og fjerne tillegget på 0,02 siden det er veldig lite sammenliknet med 12,32.

Resultatet gir oss også at perioden p til sinusfunksjonen er 12,32 h, som betyr at det er 12 timer og 19 minutter mellom hver gang det er høyvann. Tidsforskjellen mellom høyvann og lavvann blir derfor halvparten av 12,32 h, som er 6,16 h eller 6 timer og 10 minutter.

Hvordan kan du kontrollere på en annen måte at p=12,32 h?

Kontrollregning av perioden

Vi har at

p=2πk=2π0,51=12,32

Vi kan bruke resultatet til å lage en liten tabell med tidspunktene for når det er høyvann det nærmeste døgnet.

I linje 5 har vi gjort om desimalene av timene til minutter.

Vi får at det er høyvann klokka 00.00 og klokka 12.19. Neste høyvann er klokka 00.40 neste natt.

Lavvann kommer midt imellom to høyvann. Siden vi har høyvann klokka 00.00, kommer det første lavvannet en halv periode etter dette. Deretter blir det lavvann for hver 12,32 h. Vi kan derfor lage oss en tilsvarende funksjon bn for tidspunktene for lavvann som tn ved å legge til en halv periode til funksjonen.

Vi får at det er lavvann klokka 06.10 og klokka 18.29.

Vendepunktene til en sinusfunksjon er der funksjonen er brattest og der grafen krysser likevektslinja. Vendepunktene ligger derfor midt mellom to naboekstremalpunkter og kommer med en halv periodes mellomrom. Disse punktene vil være der vannstanden stiger eller synker raskest.

Vi kan lage oss en funksjon vn for hvor vi finner vendepunktene ut ifra tn ved å legge til en kvart periode og erstatte 12,32n med 12,322n siden vendepunktene kommer dobbelt så ofte som toppunktene. Siden vi har et toppunkt for x=0, vil det første vendepunktet være et punkt der grafen er synkende. Vi får derfor vendepunkter der grafen er stigende når n=1 og n=3.

Vi bruker igjen CAS til å finne tidspunktene når vannstanden stiger mest.

Svaret på det fjerde spørsmålet blir derfor at vannstanden stiger mest klokka 09.14 og klokka 21.34 det nærmeste døgnet.

Svaret på det siste spørsmålet om hva gjennomsnittsvannstanden er, er konstanten d, altså nivået til likevektslinja. Den satte vi lik 0. I gjennomsnitt er altså vannstanden midt imellom nivået for høyvann og nivået for lavvann.

Normalt ville vi måtte brukt formelen f=1b-aabfxdx til å finne gjennomsnittsverdien, men siden vi vet at en sinusfunksjon svinger like mye over som under likevektslinja, trenger vi ikke det – så lenge det er snakk om å finne gjennomsnittet på et helt antall perioder. Og det er det som gir mening i de fleste tilfeller.

Hvorfor har vi ikke brydd oss om nullpunktene til f i denne analysen?

Forklaring

Siden vi satte d=0 i modellen, vil nullpunktene være midt imellom tidspunktene for høyvann og lavvann – og dermed det samme som infleksjonspunktene, som vi fant over.

Nedenfor kan du se virkelige målinger av vannstanden ved Mandal fra 3. og 4. november 2022 sammen med modellen vår der x=0 betyr klokka 00.00 den 3. november.

Vi ser at de ekte målingene bare til en viss grad passer med modellen vår. Høyvannet som vi beregnet til klokka 12.19, ble nesten ikke noe av. Her kan det ha vært et væromslag som har påvirket resultatene. Perioden mellom to høyvann stemmer ellers ganske bra, ser det ut til.

Det mest naturlige ville ha vært å bruke tallene fra Kartverket i regresjonen. Det skal du få gjøre i en av oppgavene.

Kilde

Sælen, O. H. & Weber, J. E. (2022, 9. juni). Tidevann. I Store norske leksikon. https://snl.no/tidevann