# let approximate the 4th root of 3 f(x) = x^4-3 g(x) = 4*x^3 #bisection a=1 b=1.5 errBi=[] c=1.5 while abs(a-b)>.0000001: c = (a+b)/2 if f(c)*f(a)>0: a=c else: b=c errBi+=[3^.25-c] print('ans is ',c) print('error = ',errBi) print('error ratio(d=1) = ',[abs(errBi[j+1])/abs(errBi[j])^1 for j in range(len(errBi)-1)]) print('error ratio(d=1.5) = ',[abs(errBi[j+1])/abs(errBi[j])^1.5 for j in range(len(errBi)-1)]) print('error ratio(d=2) = ',[abs(errBi[j+1])/abs(errBi[j])^2 for j in range(len(errBi)-1)]) # secant a=1 b=1.5 errBi=[] c=1.5 while abs(a-b)>.0000001: c = (a*f(b)-b*f(a))/(f(b)-f(a)) a=b b=c errBi+=[3^.25-c] print('ans is ',c) print('error = ',errBi) print('error ratio(d=1) = ',[abs(errBi[j+1])/abs(errBi[j])^1 for j in range(len(errBi)-1)]) print('error ratio(d=1.5) = ',[abs(errBi[j+1])/abs(errBi[j])^1.5 for j in range(len(errBi)-1)]) print('error ratio(d=2) = ',[abs(errBi[j+1])/abs(errBi[j])^2 for j in range(len(errBi)-1)]) # secant a=1 b=1.5 errBi=[] c=1.5 while abs(a-b)>.0000001: c = b-f(b)/g(b) a=b b=c errBi+=[3^.25-c] print('ans is ',c) print('error = ',errBi) print('error ratio(d=1) = ',[abs(errBi[j+1])/abs(errBi[j])^1 for j in range(len(errBi)-1)]) print('error ratio(d=1.5) = ',[abs(errBi[j+1])/abs(errBi[j])^1.5 for j in range(len(errBi)-1)]) print('error ratio(d=2) = ',[abs(errBi[j+1])/abs(errBi[j])^2 for j in range(len(errBi)-1)]) # conclusion: Bisection has order 1, secant method has order >=1.5, <2, #NR has order >=2