41 lines
776 B
Python
41 lines
776 B
Python
def f1(x):
|
|
return 1+1/x**2
|
|
|
|
def f2(x):
|
|
return 1/((x-1)**0.5)
|
|
|
|
def diedai(x,fd,err):
|
|
count=0
|
|
i = 0
|
|
while True:
|
|
xk = fd(x)
|
|
if complex(xk).imag != 0:
|
|
break
|
|
if (i) < abs(xk-x):
|
|
count += 1
|
|
else:
|
|
count = 0
|
|
if count > 10:
|
|
break
|
|
if abs(xk-x) < err:
|
|
return xk
|
|
i = abs(xk-x)
|
|
x = xk
|
|
return None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
x0 = 1.5
|
|
|
|
result = diedai(x0, f1, 1e-5)
|
|
if result is not None:
|
|
print(f"(1)收敛 解为: {result:.5f}")
|
|
else:
|
|
print("(1)不收敛")
|
|
|
|
result = diedai(x0, f2, 1e-5)
|
|
if result is not None:
|
|
print(f"(2)收敛 解为: {result:.5f}")
|
|
else:
|
|
print("(2)不收敛")
|