我是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)
此处, a 和 e2 是常量。
用户应该引入 X , Y 和 Z 的值并获取 phi ,< strong> lam 和 hei 。但是,鉴于 N 是一个依赖于 phi 的函数,有必要创建一个循环,在第二个等式中使 hei = 0作为初始值,为了获得 phi 的第一个近似值。但是,当 phi 达到某个值时,我不知道如何结束该循环(例如,当 phi 的9位或更多小数相等时到循环中的前一个值。)
答案 0 :(得分:1)
您可以根据前一循环中phi
的值与当前循环中的值之间的差异来中断循环,即差异是否小于10^(-9)
。