111
This commit is contained in:
51
159-3.py
51
159-3.py
@@ -1,43 +1,40 @@
|
||||
def fd1(x):
|
||||
def f1(x):
|
||||
return 1+1/x**2
|
||||
|
||||
def fd2(x):
|
||||
return 1/(x-1)**0.5
|
||||
def f2(x):
|
||||
return 1/((x-1)**0.5)
|
||||
|
||||
def Renew(x,fd,err):
|
||||
def diedai(x,fd,err):
|
||||
count=0
|
||||
i = 0
|
||||
try:
|
||||
while True:
|
||||
xk = fd(x)
|
||||
if abs(i) < (xk-x):
|
||||
count += 1
|
||||
else:
|
||||
count = 0
|
||||
if count > 10:
|
||||
print("不收敛")
|
||||
break
|
||||
if abs(xk-x) < err:
|
||||
return xk
|
||||
i = xk-x
|
||||
x = xk
|
||||
except Exception as e:
|
||||
print(f"发生错误: {e}")
|
||||
return None
|
||||
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 = Renew(x0, fd1, 1e-5)
|
||||
result = diedai(x0, f1, 1e-5)
|
||||
if result is not None:
|
||||
print(f"1式收敛 解为: {result:.5f}")
|
||||
print(f"(1)收敛 解为: {result:.5f}")
|
||||
else:
|
||||
print("1式不收敛")
|
||||
print("(1)不收敛")
|
||||
|
||||
result = Renew(x0, fd2, 1e-5)
|
||||
result = diedai(x0, f2, 1e-5)
|
||||
if result is not None:
|
||||
print(f"2式收敛 解为: {result:.5f}")
|
||||
print(f"(2)收敛 解为: {result:.5f}")
|
||||
else:
|
||||
print("2式不收敛")
|
||||
print("(2)不收敛")
|
||||
|
||||
Reference in New Issue
Block a user