deftrapezoid(f, N, a, b):
h= (b-a)/Nresult=0forkinrange(1, N+1):
result+= (f(a+(k-1)*h) +f(a+k*h))
result=result* (0.5*h)
returnresult
deff(x):
#Correct integral from 0 to 2 is 4.4returnx**4-2*x+1
a=0b=2actualIntegral=4.4N=10calculated1=trapezoid(f, N, a, b)
N=100calculated2=trapezoid(f, N, a, b)
N=1000calculated3=trapezoid(f, N, a, b)
print("Integrating x**4-2*x+1 from 0 to 2")
print(f"Actual value of integral: {actualIntegral}")
print()
print("N = 10")
print(f"Calculated Value: {calculated1} with % error {abs((actualIntegral-calculated1)/actualIntegral*100)}")
print()
print("N = 100")
print(f"Calculated Value: {calculated2} with % error {abs((actualIntegral-calculated2)/actualIntegral*100)}")
print()
print("N = 1000")
print(f"Calculated Value: {calculated3} with % error {abs((actualIntegral-calculated3)/actualIntegral*100)}")
Integrating x**4-2*x+1 from 0 to 2
Actual value of integral: 4.4
N = 10
Calculated Value: 4.50656 with % error 2.4218181818181814
N = 100
Calculated Value: 4.401066656 with % error 0.024242181818179272
N = 1000
Calculated Value: 4.400010666665602 with % error 0.0002424242182148943
#This examples uses data points rather than functions to evaluate integral#Exercise 5.1time= []
distance= [0]
velocity= []
withopen("velocities.txt") asf:
forlineinf:
row=line.split()
time.append(float(row[0]))
velocity.append(float(row[1]))
dis=0h=1assertlen(time) ==len(velocity)
foriinrange(1, len(velocity)):
dis+= (velocity[i-1] +velocity[i])
distance.append(dis*0.5*h)