Gymnasieopgave : Solhøjde.
> | restart;with(plots):with(linalg): |
Warning, the name changecoords has been redefined
Warning, the protected names norm and trace have been redefined and unprotected
Omregning fra grader til radianer
> | fak:=evalf(Pi)/180.0; |
Spørgsmål 1 . Solens deklination
(n)
> | delta:=n->23.45*fak*cos((n-174.0)/365.0*2*Pi); |
> | plot(delta(n)/fak,n=0..365); |
Spørgsmål 2 . Normalvektoren n_sol til solen i solplanen.
Her indsætter vi dagens nummer n = 253 for den 10. september
> | n:=253; |
> | n_sol:=[cos(delta(n)),0,sin(delta(n))]; |
Spørgsmål 3 . Normalvektoren n1_zenit til zenit i Sisimiut udtrykt i X1 Y1 Z-systemet.
Sisimiuts breddegrad
= 66 grader 56 min 6,62433 sekunder nordlig bredde
> | phi:=(66.0+56.0/60.0+6.62433/60.0/60.0)*fak; |
Koordinatvektorerne til normalvektoren n1 i X1 Y1 Z -systemet.
> | n1_zenit:=[cos(phi),0,sin(phi)]; |
Spørgsmål 4 . Normalvektoren n_zenit til zenit i Sisimiut udtrykt i X Y Z-systemet.
Kooordinaterne vektoren fås ved at dreje vektoren n1's projektion i XY-planen timevinklen
.Timevinklen
<=
<=
svarer til kl. 0 h til 24 h
> | n_zenit:=[cos(phi)*cos(omega),cos(phi)*sin(omega),sin(phi)]; |
Spørgsmål 5. Solenhøjden
er komplementvinklen til vinklen imellem enhedsnormalerne n_zenit og n_sol.
NB! Her bruger vi biblioteket linalg , der indeholder funktionen dotprod , der kan beregne prikproduktet eller det skalære produkt imellem 2 vektorer.
> | theta:=arccos(dotprod(n_zenit,n_sol)); |
> | plot(90.0-theta/fak,omega=-Pi..Pi,0..30); |
I stedet for timevinklen
kan vi indføre klokken t :
> | n_zenit:=[cos(phi)*cos((t-12)/12*Pi),cos(phi)*sin((t-12)/12*Pi),sin(phi)]; |
> | theta:=arccos(dotprod(n_zenit,n_sol)); |
Vi bruger nu kommandoerne textplot og display
> | s:=textplot([12,40,"Solhøjden i Sisimiut den 10. september 2001"],align={left,above}): |
> | p:=plot(90.0-theta(250)/fak,t=0..24,0..50): |
> | display(s,p); |
> |
Stemmer det ????. Hvorfor ikke???