def Rf(h,f,a,b):
f = derivative(f(x),x)
g = derivative(f,x)
p = derivative(g,x)
q = derivative(p,x)
maximum = list()
v = find_maximum_on_interval(q,a,b)
return (b - a)/2880*h*h*h*h*v
def fass(f,n,a,b):
# import math
h = (b-a)/n
# summands1 = []
# for j in range(n-1):
# summands1.append(f(a+j*h))
#
#
# summands2 = []
# for j in range(n-1):
# summands2.append(f((a+j*h + a+(j-1)*h)/2))
#
# sum1 = math.fsum(summands1)
# sum2 = math.fsum(summands2)
sum1 = 0
for j in range(n-1):
sum1 = sum1 + f(a+j*h)
sum2 = 0
for j in range(n):
sum2 = sum2 + f((a+j*h + a+(j-1)*h)/2)
return h/3*( (f(a)+f(b))/2 + sum1 + sum2 + sum2)
def f(x):
return 1/(1+(x/(1-x))^2) # substituted x/(1-x) for x
def gy(x):
return 1/((x-2)*x+1) # dx = dy g(y)
def fg(x):
return 1/(2*x^2-2*x+1) # fgy
plot(fg)
#for i in range(1, 100000, 100):
# h = (1-0)/i
# if Rf(h, fg, 0, 1) < 10^-11:
# N = i
# print N
# break
fass(fg, 100000, 0, 1)