Hopp til innhald
Fagartikkel

Modellering og analyse av trigonometriske funksjonar

Mange periodiske fenomen i naturen kan modellerast med sinusfunksjonar.

Svingingar i naturen

Døme på naturfenomen som har eller kan ha harmoniske svingingar, og som derfor kan modellerast med trigonometriske funksjonar:

  • tidvatn – vasstand i sjøen som varierer på grunn av gravitasjonspåverknaden frå månen og sola og gir det vi kallar flo og fjære (høgvatn og lågvatn)

  • bølger på vatn

  • kor høgt sola står på himmelen

  • temperaturen gjennom eit døgn

  • gjennomsnittleg døgntemperatur gjennom eit år

  • kor stor del av månen som lyser

Modellering betyr å komme fram til ein matematisk modell som beskriv naturfenomenet. Når det gjeld modellering av harmoniske svingingar, kan vi nokre gonger gjere det med regresjon dersom vi har måledata som viser korleis utslaget varierer med tid eller stad. Andre gonger har vi ikkje måledata, men andre opplysningar om svingingane som gjer at vi kan komme fram til den matematiske modellen utan regresjon.

Modellering utan bruk av regresjon

Kort repetisjon av den generelle sinusfunksjonen

Vi har frå sida "Periode, amplitude, likevektslinje og faseforskyving" at ein generell sinusfunksjon f kan skrivast på forma

fx=Asin(kx+φ)+d

der vi har desse storleikane (sjå i tillegg figuren nedanfor):

  • Perioden p=2πk er den kortaste avstanden mellom to punkt i same svingetilstand, til dømes to skjeringspunkt med likevektslinja der grafen er stigande, slik som markert på figuren. Vi kan òg til dømes lese av avstanden mellom to nabobølgetoppar.

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

  • Amplituden A er maksimalt utslag frå likevektslinja.

  • Faseforskyvinga xf=-φk er x-koordinaten til det skjeringspunktet mellom stigande graf og likevektslinja som ligg nærast y-aksen.

Dersom vi kan bestemme dei fire storleikane periode, likevektslinje, amplitude og faseforskyving til eit periodisk fenomen, kan vi alltid finne ein sinusfunksjon som passar.

Finn funksjonsuttrykket fx som passar til grafen i figuren over ved å bestemme desse fire storleikane.

Funksjonsuttrykket til grafen

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

Vi les av perioden som avstanden mellom to punkt på grafen i same svingetilstand. Til dømes kan vi lese av avstanden mellom dei to stipla 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 toppunkta er 3, så amplituden til funksjonen er A=3-d=3-1=2.

Det skjeringspunktet mellom stigande graf og likevektslinja som ligg nærast y-aksen, har koordinatane π4,1. Vi får derfor at xf=π4. Det betyr at 𝜑=-xf·k=-π4·2=-π2.

Funksjonen blir

fx=2sin2x-π2+1

Døme: tidvatn

Tidsrommet mellom to høgvatn eller to lågvatn i Noreg er omtrent 12 timar og 25 minutt, eller 12,4 timar (Store norske leksikon, 2022). I dømet her betyr derfor x eit tidspunkt målt i timar og ikkje ei lengde. Høgvatn er definert som høgaste vasstand (vannivå) og lågvatn som lågaste vasstand.

Opplysninga om avstanden mellom to høgvatn eller to lågvatn gir oss ein av dei fire storleikane periode, likevektslinje, amplitude og faseforskyving. Kva for ein av desse storleikane får vi gitt?

Gitt storleik

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

Bestem konstanten k ut frå dette.

Konstanten 𝑘

Vi har at

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

Sidan p er målt i timar (h), blir måleininga for k h-1.

Forklar kvifor vi kan setje d=0.

Forklaring

Vasstanden har i utgangspunktet ikkje noko absolutt nullnivå, så vi kan velje fritt kva nivå vasstanden skal svinge rundt. Det enklaste er derfor å velje d=0.

På den same nettsida om tidvatn står det at tidvassforskjellen i Mandal er 35 cm i november. Kva for ein av konstantane kan vi bestemme ut frå denne opplysninga? Bestem denne konstanten.

Bestemming av konstant

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

A=35 cm2=17,5 cm

Kva betydning har faseforskyvinga xf her?

Betydning av faseforskyvinga

Faseforskyvinga fortel her kor langt det er frå origo til det første nullpunktet der grafen er stigande. Grunnen til at vi her kan bruke nullpunktet, er at likevektslinja ligg på y=0.

Bestem konstanten 𝜑 dersom vi går ut frå at det var høgvatn ved midnatt.

Bestemming av 𝜑

Høgvatn betyr at vasstanden 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 velje n=0 sidan eit tillegg på eit heilt tal 2π ikkje gjer noko frå eller til for ein sinusfunksjon. Vi kan derfor setje

𝜑=π2

Funksjonen, eller den matematiske modellen, for vasstanden blir derfor

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

Modellering med regresjon

Dersom vi hadde hatt målingar for kvar time av vasstanden i Mandal på den aktuelle dagen i november, kunne desse sett slik ut (fiktive tal):

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

For å komme fram til ein matematisk modell for variasjonen i vasstand kan vi gjere ein sinusregresjon med desse tala.

Sinusregresjon med GeoGebra

Vi legg tala inn i reknearkdelen i GeoGebra på vanleg måte, markerer tala og vel regresjonsanalyseverktøyet. Nedanfor kan du laste ned eit GeoGebra-ark der tala er lagde inn.

Regresjonsmodellen "Sin" gir regresjon med sinusfunksjon.

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

Kvifor fekk vi d=-0,07 i staden for d=0?

Forklaring

Målingane og dermed utrekningane i regresjonen vil vere avhengige av målenøyaktigheit. Forskjellen mellom lågvatn og høgvatn er gitt i heile cm, målingane er gitt med ei nøyaktigheit på 1 desimal, og konstantane i modellen er gitt med to desimalar. I tillegg kan målingane det bestemte døgnet avvike noko frå det gjennomsnittsdøgnet forskjellen i lågvatn og høgvatn er gitt ut frå.

Sinusregresjon med Python

Regresjon med Python kan gjerast på fleire måtar. Her har vi valt å bruke metoden curve_fit frå scipy.optimize sjølv om han gir oss meir data enn vi skal bruke her.

Metoden er basert på at vi skriv i koden kva slags type funksjon som skal brukast i den matematiske modellen. Dette gjer vi ved å definere modellen som ein pythonfunksjon i koden. I dette tilfellet ønsker vi å tilpasse målingane til ein sinusfunksjon. Starten på programmet kan sjå slik ut:

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

Parameterane til pythonfunksjonen modell er først den frie variabelen x, deretter dei vanlege konstantane som blir brukte i den generelle sinusfunksjonen. Funksjonen modell blir brukt av metoden curve_fit saman med ei liste med x-verdiane og ei liste med y-verdiane i målingane. curve_fit gir tilbake to lister. Den eine inneheld dei fire konstantane A, k, fi og d (i dette tilfellet) som gjer at den matematiske funksjonen vi definerte i pythonfunksjonen modell, passar mest mogleg med måledataa. Den andre lista inneheld dei såkalla kovariansane, som vi ikkje skal bruke her.

Koden vidare kan sjå slik ut:

python
1        # legg inn måledataa i lister
2x_verdiar = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
3y_verdiar = [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 legg resultata i to lister
6konstantar,kovarians = curve_fit(modell,x_verdiar,y_verdiar)
7        # hentar ut konstantane frå lista konstantar
8A, k, fi, d = konstanter
9
10        # lagar utskrift av funksjonen
11print(f"Funksjonen blir f(x) = {A:.2f}sin({k:.2f}x{fi:+.2f}){d:+.2f}")
12        # plottar data og modell som ein kontroll
13        # plottar data
14plt.plot(x_verdiar,y_verdiar,'+') 
15        # plottar modell
16x_array = np.linspace(min(x_verdiar),max(x_verdiar),300)
17y_array = modell(x_array,A, k, fi, d)
18plt.plot(x_array,y_array,"brown")
19plt.show()

Køyr koden og sjå om du får det same resultatet som regresjonsverktøyet i GeoGebra.

Kommentarar til koden i den andre kodeblokka

I linje 8 bruk vi éi linje på å legge verdiane frå lista konstantar over til dei fire variablane.

Lista kovarians bruker vi ikkje i programmet. Vi har vurdert dette med kovarians til å vere utanfor det som blir kravd i R2. Kovariansen seier noko om kor godt dataa passar til modellen.

I linje 11 har vi brukt formatsymbolet + som gjer at forteiknet til variabelen blir skrive ut anten det er pluss eller minus.

I linje 14 bruker vi eit plussteikn i plot-kommandoen for at grafen skal bli punkt (som plussteikn) og ikkje ein samanhengande graf. Vi kunne òg ha brukt kommandoen scatter i staden for plot her.

Du treng kanskje ikkje kommandoen plt.show() for å få sjå plottet.

Vi har ikkje lagt vekt på å lage eit fint plott med aksetitlar og rutenett her.

Analyse av modellen

Vi går no ut frå at vi berre har hatt måledataa av vasstanden og har brukt regresjon til å komme fram til funksjonen

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

for vasstanden der vi har sett d=0 sidan nullnivået ikkje er så interessant, i tillegg til at verdien vi kom fram til for d, var veldig liten. Vi kjenner ikkje informasjonen om tidvatn som står på Store norske leksikon no. Aktuelle spørsmål vi kan finne svaret på, er:

  1. Når blir det høgvatn, og når blir det lågvatn?

  2. Kor lang tid er det mellom høgvatn og lågvatn?

  3. Kor stor er nivåforskjellen på høgvatn og lågvatn?

  4. Når stig vasstanden raskast, og kor raskt stig han då?

  5. Kva er gjennomsnittsvasstanden?

Kva må vi finne ut om funksjonen f for å kunne svare på desse spørsmåla?

Vi må finne ut:

Dei tre første spørsmåla har med topp- og botnpunkta til funksjonen f å gjere. Det fjerde har med vendepunkta til funksjonen å gjere. 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å

Sidan vi veit det meste om korleis den generelle sinusfunksjonen oppfører seg, treng vi ikkje bruke derivasjon til analysen. Det går raskare utan.

Vi startar med å finne forskjellen mellom høgaste høgvatn og lågaste lågvatn (det fjerde spørsmålet). Det 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

Toppunkta finn 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 tillét oss å runde av her og fjerne tillegget på 0,02 sidan det er veldig lite samanlikna med 12,32.

Resultatet gir oss òg at perioden p til sinusfunksjonen er 12,32 h, som betyr at det er 12 timar og 19 minutt mellom kvar gong det er høgvatn. Tidsforskjellen mellom høgvatn og lågvatn blir derfor halvparten av 12,32 h, som er 6,16 h eller 6 timar og 10 minutt.

Korleis kan du kontrollere på ein annan måte at p=12,32 h?

Kontrollrekning av perioden

Vi har at

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

Vi kan bruke resultatet til å lage ein liten tabell med tidspunkta for når det er høgvatn det næraste døgnet.

I linje 5 har vi gjort om desimalane av timane til minutt.

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

Lågvatn kjem midt imellom to høgvatn. Sidan vi har høgvatn klokka 00.00, kjem det første lågvatnet ein halv periode etter dette. Deretter blir det lågvatn for kvar 12,32 h. Vi kan derfor lage oss ein tilsvarande funksjon bn for tidspunkta for lågvatn som tn ved å legge til ein halv periode til funksjonen.

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

Vendepunkta til ein sinusfunksjon er der funksjonen er brattast og der grafen kryssar likevektslinja. Vendepunkta ligg derfor midt mellom to naboekstremalpunkt og kjem med mellomrom på ein halv periode. Desse punkta vil vere der vasstanden stig eller søkk raskast.

Vi kan lage oss ein funksjon vn for der vi finn vendepunkta ut ifrå tn ved å legge til ein kvart periode og erstatte 12,32n med 12,322n sidan vendepunkta kjem dobbelt så ofte som toppunkta. Sidan vi har eit toppunkt for x=0, vil det første vendepunktet vere eit punkt der grafen er søkkande. Vi får derfor vendepunkt der grafen er stigande når n=1 og n=3.

Vi bruker igjen CAS til å finne tidspunkta når vasstanden stig mest.

Svaret på det fjerde spørsmålet blir derfor at vasstanden stig mest klokka 09.14 og klokka 21.34 det næraste døgnet.

Svaret på det siste spørsmålet om kva gjennomsnittsvasstanden er, er konstanten d, altså nivået til likevektslinja. Den sette vi lik 0. I gjennomsnitt er altså vasstanden midt imellom nivået for høgvatn og nivået for lågvatn.

Normalt ville vi måtte brukt formelen f=1b-aabfxdx til å finne gjennomsnittsverdien, men sidan vi veit at ein sinusfunksjon svingar like mykje over som under likevektslinja, treng vi ikkje det – så lenge det er snakk om å finne gjennomsnittet på eit heilt tal på periodar. Og det er det som gir meining i dei fleste tilfelle.

Kvifor har vi ikkje brydd oss om nullpunkta til f i denne analysen?

Forklaring

Sidan vi sette d=0 i modellen, vil nullpunkta vere midt imellom tidspunkta for høgvatn og lågvatn – og dermed det same som infleksjonspunkta, som vi fann over.

Nedanfor kan du sjå verkelege målingar av vasstanden ved Mandal frå 3. og 4. november 2022 saman med modellen vår der x=0 betyr klokka 00.00 den 3. november.

Vi ser at dei ekte målingane berre til ein viss grad passar med modellen vår. Høgvatnet som vi berekna til klokka 12.19, vart nesten ikkje noko av. Her kan det ha vore eit vêromslag som har påverka resultata. Perioden mellom to høgvatn stemmer elles ganske bra, ser det ut til.

Det mest naturlege ville ha vore å bruke tala frå Kartverket i regresjonen. Det skal du få gjere i ei av oppgåvene.

Kjelde

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