Guan_yiqiang 2024-10-29 14:48 采纳率: 42.9%
浏览 4

Python求解迭代问题无法迭代出结果

img


例题取自《化工热力学》(通用型) 第二版

def Z_func(h):  
    Z = 1 / (1 - h) - 5.496 * (h / (1 + h))  
    return Z  
  
def h_func(Z):  
    h = 1.954 * 10**-2 / Z  
    return h  
  
Z1 = 1  
tolerance = 1e-5 
while True:  
    h1 = h_func(Z1)  
    Z2 = Z_func(h1)  
    h2 = h_func(Z2)  
    Z3 = Z_func(h2)  
    if abs(Z3 - Z2) < tolerance:  
        break  
    Z3 = Z2
print(Z3)



根据题目,我写出了上述的代码,但是一直迭代不出结果,请问有没有友友们知道这是怎么回事?

  • 写回答

2条回答 默认 最新

  • xiaofeicao0 2024-10-29 19:31
    关注

    提问代码里循环最后z3=z2,但是循环初z1还是1不变,所以跳不出循环得不到答案。
    去掉h2,z3那两行,判定改为z2-z1,最后z2=z1,print z1

    评论

报告相同问题?

问题事件

  • 创建了问题 10月29日