#! /usr/bin/env python3
# -*- coding: UTF-8 -*- 

# FY1001/TFY4145 Mekanisk fysikk hosten 2015.
# Oving 7, oppg. 2: Matematisk pendel

from numpy import sin,cos,pi,fmod,zeros
from matplotlib.pyplot import figure,title,xlabel,ylabel,plot,legend,show,hold

# Funksjon som løser N2 for en matematisk pendel, som starter i theta0
# med hastighet v0, ved Eulermetoden for N tidssteg(dt). 
def mat_pendel(L,v0,theta0,dt,N,tilfelle):
    g=9.81
    dtL=dt/L
    # Initialisere tabeller for hastighet, vinkel, energi og tid
    v=zeros(N)
    v[0]=...
    theta=zeros(N)
    theta[0]=theta0
    E=zeros(N)
    E[0]=...
    tid=zeros(N)
    tid[0]=0.0
    # Starter iterasjonen i 0'te tidssteg
    t=0
    # Øvre grense for iterasjonen
    t_max=N-1
    while (t < t_max):
        v[t+1]=v[t]-g*sin(theta[t])*dt
        theta[t+1]=theta[t]+v[t]*dtL
        E[t+1]=...
        tid[t+1]=t*dt
        t+=1
    # Vinkler større enn 2*pi flyttes til intervallet (-2*pi,2*pi)
    theta=fmod(theta,2*pi)
    # Plotte Hastigheten
    figure('Figur 1')
    hold(True)
    title('Hastighet, tilfelle '+tilfelle+' med ' + r'$v_0=%.4f$'%(v0))
    plot(tid,v,label=r'$v$')
    # Merke aksene
    xlabel(...)
    ylabel(...)
    # Plotte vinkelen
    ...
    # Plotte energien
    ...
    # Vise plottene
    show()

if __name__=="__main__":
    # # Definere parametre
    # # For tilfelle A:
    tilfelle='A'
    dt=...          # Størrelsen på tidssteg
    T=...           # Periode
    v0=...          # Starthastighet

    # # For tilfelle B:
    #tilfelle='B'
    #dt=...         # Størrelsen på tidssteg
    #T=...          # Periode
    #v0=...         # Starthastighet

    # # For tilfelle C:
    #tilfelle='C'
    #dt=...         # Størrelsen på tidssteg
    #T=...          # Periode
    #v0=...         # Starthastighet
    
    theta0=0.0      # Startvinkel
    L=1.0           # Pendelens lengde
    N=int(2.0*T/dt) # Antall tidssteg for to perioder
    # # Kjør funksjonen
    mat_pendel(L,v0,theta0,dt,N,tilfelle)
if __name__=="__main__":
    # # Definere parametre
    # Velg tilfelle ='A', 'B' eller 'C'
    tilfelle='A'
    # # For tilfelle A:
    dt=...             # Størrelsen på tidssteg
    T=...               # Periode
    v0=...              # Starthastighet

    # # For tilfelle B:
    if(tilfelle=='B'):
        dt=...         # Størrelsen på tidssteg
        T=...        # Periode
        v0=...       # Starthastighet

    # # For tilfelle C:
    if(tilfelle=='C'):
        dt=...         # Størrelsen på tidssteg
        T=...           # Periode
        v0=...          # Starthastighet
    
    theta0=0.0      # Startvinkel
    L=1.0           # Pendelens lengde
    N=int(2.0*T/dt) # Antall tidssteg
    # # Kjør funksjonen
    mat_pendel(L,v0,theta0,dt,N,tilfelle)
