# +----------------------------------------------------+
# |                  Lekce 5 - demo 1                  |
# +----------------------------------------------------+
#  Reseni ronice  u'(t)= f(u,t),  na int t in (0,a)
#     poc. podm.  u (0)= u0
#  reseni ulozeno ve v[0]..v[N]
#  VERZE PRO EXPLICITNI FORMULE - fixni h

from math import exp

# Prava strana
def f(u,t):
    return u

# 1 krok ruznych metod: vezme v[0]..v[n] a vyrobi v[n+1]
def Step_EU(h,t):
   v.append(v[-1]+h*f(v[-1],t))

def Step_AB2(h,t):
   v.append(v[-1]+h*(1.5*f(v[-1],t)-0.5*f(v[-2],t-h)))

def Step_T2(h,t):
   v.append(-4*v[-1]+5*v[-2]+h*(4*f(v[-1],t)+2*f(v[-2],t-h)))

# HLAVNI PROGRAM:
file=open("reseni_AB2.txt","w")
N=10    # pocet kroku na intervalu
a=1.0   # t in (0,a)
h=a/N   # delka kroku
s=2     # kolikakrokova metoda?
#POCATECNI PODMINKA -> potreba tolik hodnot kolikakrokova metoda
v=[exp(i*h) for i in range(s)]
#cyklus 
for i in range(s-1,N):
   Step_AB2(h,i*h)
   file.write(str((i+1)*h)+"  "+str(v[-1])+"\n")
   
file.close()   


