For this question, you will be required to use the binary search to find the root of some function f(x)f(x) on the domain x∈[a,b]x∈[a,b] by continuously bisecting the domain. In our case, the root of the function can be defined as the x-values where the function will return 0, i.e. f(x)=0f(x)=0 For example, for the function: f(x)=sin2(x)x2−2f(x)=sin2(x)x2−2 on the domain [0,2][0,2], the root can be found at x≈1.43x≈1.43
For this question, you will be required to use the binary search to find the root of some function f(x)f(x) on the domain x∈[a,b]x∈[a,b] by continuously bisecting the domain. In our case, the root of the function can be defined as the x-values where the function will return 0, i.e. f(x)=0f(x)=0
For example, for the function: f(x)=sin2(x)x2−2f(x)=sin2(x)x2−2 on the domain [0,2][0,2], the root can be found at x≈1.43x≈1.43
Constraints
- Stopping criteria: ∣∣f(root)∣∣<0.0001|f(root)|<0.0001 or you reach a maximum of 1000 iterations.
- Round your answer to two decimal places.
Function specifications
Argument(s):
- f (function) →→ mathematical expression in the form of a lambda function.
- domain (tuple) →→ the domain of the function given a set of two integers.
- MAX (int) →→ the maximum number of iterations that will be performed by the function.
Return:
- root (float) →→ return the root (rounded to two decimals) of the given function.
START FUNCTION
def binary_search(f,domain, MAX = 1000):
f = lambda x:(np.sin(x)**2)*(x**2)-2
domain = (0,2)
x=binary_search(f,domain)
x
test
binary_search(lambda x:(np.sin(x)**2)*(x**2)-2,(0,2))==1.43
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 2 images