用Python迭代法求解表达式

用Python迭代法求解表达式,python,loops,coordinates,iteration,Python,Loops,Coordinates,Iteration,我是Python新手,开始编写坐标转换程序。问题是我找不到一种迭代方法来求解其中一个表达式 表达方式: N = a / math.sqrt(1 - (e2 * (math.sin(phi))**2)) phi = math.atan((Z / math.sqrt((X**2) + (Y**2))) * ((1-e2) * (N / N + hei)**-1)) lam = math.atan(Y / X) hei = (math.sqrt((X ** 2) + (Y ** 2))) / mat

我是Python新手,开始编写坐标转换程序。问题是我找不到一种迭代方法来求解其中一个表达式

表达方式:

N = a / math.sqrt(1 - (e2 * (math.sin(phi))**2))

phi = math.atan((Z / math.sqrt((X**2) + (Y**2))) * ((1-e2) * (N / N + hei)**-1))
lam = math.atan(Y / X)
hei = (math.sqrt((X ** 2) + (Y ** 2))) / math.cos(phi)
这里,ae2是常数


用户应该引入XYZ的值,并获得philamhei。但是,鉴于N是一个依赖于phi的函数,有必要创建一个循环,使第二个方程中的hei=0作为初始值,以便获得phi的一级近似值。但是,我不知道当phi达到某个值时(例如,当phi的9个或更多小数等于循环中的前一个值时),如何结束该循环.

您可以根据前一个循环中的
phi
值与当前循环中的值之间的差异来中断循环,即,如果差异小于
10^(-9)