?import time from math import * # Funksjonen som skal integreres def f(x): return cos(x) # Integrasjonsfunksjon som bruker trapesmetoden ved aa dele [a,b] i 1, 2, 4, 8, ... # Det hele stopper naar vi kommer til 2^M oppdelinger eller estimert relativ feil er mindre enn eps # Relativ feil estimeres slik som beskrevet i kompendiet def iterativ_trapes(f,a,b,eps,M): n = 1; h = (b-a)/n; I = 0.5*h*(f(a)+f(b)) abserr = abs(I) j = 1 while j=eps*abs(I): j = j + 1 Ip = I n = 2*n; h = (b-a)/n sum = 0.0 for i in range(1,n): x = a + i*h sum = sum + f(x) I = 0.5*h*(f(a)+f(b)+2*sum) abserr = abs(I-Ip) return(I, abserr, j) # Et kort hovedprogram som setter i gang det hele a = 0.0; b = 1.0 eps = 1.0e-12 [I,err,K] = iterativ_trapes(f,a,b,eps,40) # Vi skriver ut resultatene og tidsforbruket. print "Integral: %1.14f, estimert relativ feil: %e, iterasjoner: %i" %(I, err, K) print "\nEksakt verdi=%1.14f, eksakt feil=%e" %(sin(b),abs(sin(b)-I)/abs(sin(b))) print "Det hele tok %1.2f sekunder" %time.clock()