import numpy as np
import matplotlib.pyplot as plt
a,b = 0.,1.
riktig = 1.-np.cos(1.)
eL = []
tL = []
dxL = []
print((np.sin(b)-np.sin(a))/2)
for dx in 10.**(-np.arange(1,8)):
x = np.arange(0,1,dx)
integral = sum(np.sin(x))*dx
# trapesmetoden
trapes = integral + (np.sin(b)-np.sin(a))*dx/2
print(f"{dx:e} {integral:e} {integral-riktig:e}" )
eL.append(integral)
tL.append(trapes)
dxL.append(dx)
#Plotter feilen ved Eulers metode (rektangler)
plt.loglog(dxL,np.abs(eL-riktig),"o")
# For sammenlikning, feil proporsjonal med Delta x
plt.loglog(dxL,dxL)
#Plotter feilen ved trapesmetoden
plt.loglog(dxL,np.abs(tL-riktig),"o")
# For sammenlikning, feil proporsjonal med (Delta x)^2
plt.loglog(dxL,[dx**2 for dx in dxL])
plt.show()