Files
CalWay_Python/按方法整理/非线性方程-迭代法.py
2025-06-16 20:44:29 +08:00

47 lines
1.1 KiB
Python

def fd1(x):
return 1+1/x**2
def fd2(x):
return 1/(x-1)**0.5
# 迭代法求解方程
def Renew(x,fd,err):
count=0
i = 0
try:
while True:
xk = fd(x)
print(f"当前迭代值: {xk}, 上一次迭代值: {x}, 误差: {abs(xk-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
return None
# 定义迭代公式 x = fd(x) ###############################
def fd(x):
return 1+1/x**2
if __name__ == "__main__":
##############################################################################################################
x0 = 1.5 # 初始值
err = 1e-5 # 精度要求 P136
result = Renew(x0, fd, err)
if result is not None:
print(f"收敛 解为: {result:.5f}")
else:
print("不收敛")