-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathBisection Method.py
30 lines (29 loc) · 1.06 KB
/
Bisection Method.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100):
if square_target < 0:
raise ValueError("Square root of negative number is not defined in real numbers")
if square_target == 1:
root = 1
print(f"The square root of {square_target} is 1")
elif square_target == 0:
root = 0
print(f"The square root of {square_target} is 0")
else:
low = 0
high = max(1,square_target)
root = None
for _ in range(max_iterations):
mid = ( (low+high) / 2)
square_mid = mid**2
if abs(square_mid - square_target) < tolerance:
root = mid
break
elif square_mid < square_target:
low = mid
else:
high = mid
if root is None:
print(f"Failed to converge within {max_iterations} iterations.")
else:
print(f"The square root of {square_target} is approximately {root}")
return root
square_root_bisection(int(input("Enter the number: ")))