bigbadmouse 发表于 2017-9-10 10:16

请教地心纬度和地理纬度的计算公式

大家好,在读天文算法的过程中遇到了这么个公式(图1),这里面的表示方法是怎么回事?我实在查不到这东西应该怎么算,望赐教.谢谢.

相对完整的信息(图2)

公式所用的图形和相关解释:(图3)

bigbadmouse 发表于 2017-9-10 10:17

奇怪,图的顺序怎么是反的?怎么调整?抱歉带来不便

snchris 发表于 2017-9-10 11:24

本帖最后由 snchris 于 2017-9-10 11:25 编辑

考虑极半径和赤道半径,以及地球是个椭圆就可以算出来了,楼主学习一下高中数学椭圆部分就知道了

bigbadmouse 发表于 2017-9-10 11:32

snchris 发表于 2017-9-10 11:24
考虑极半径和赤道半径,以及地球是个椭圆就可以算出来了,楼主学习一下高中数学椭圆部分就知道了 ...

有劳给出相关公式计算而不是一句话?

snchris 发表于 2017-9-10 14:06

本帖最后由 snchris 于 2017-9-10 14:12 编辑

bigbadmouse 发表于 2017-9-10 11:32
有劳给出相关公式计算而不是一句话?
a=6378.140, b=6356.755算的没什么误差,图里面的值比较粗略。用到椭圆参数方程和泰勒展开。

snchris 发表于 2017-9-10 14:10

bigbadmouse 发表于 2017-9-10 11:32
有劳给出相关公式计算而不是一句话?

查了一下精确值,a=6378.140, b=6356.755带入算得正好

bigbadmouse 发表于 2017-9-10 15:57

snchris 发表于 2017-9-10 14:10
查了一下精确值,a=6378.140, b=6356.755带入算得正好

感谢你的回答和计算,但你的回答其实并没有解答我的问题,我的问题并不是如何得到692".73和1".16

我的问题在于那个公式, 更准确地说,是692".73和1".16需要如何进行下一步计算. 从公式上来看,这两个值作为常量处理了. 好吧,再说的清楚点, 692".13是一个角度值,sin(2Φ)是一个浮点数,如何直接相乘?

你的推导过程中的确解释了你所计算的680.3"以及1.11"的由来(以及你声称使用你查到的精确值a=6378.140, b=6356.755带入可得正确值692".73和1".16). 不过,我无法在相关文档中找到你所使用的推导方式, 同时,当把这个过程用程序实现的时候,你的整个过程还不够严谨,我无法直接引用到我的程序里.

对了, 顺便提一句, 你所引用的a=6378.140, b=6356.755已经不是精确值了, wgs 84给出的值是a=6378137.00 m (semi-major axis of WGS 84 ellipsoid)

非常感谢你的回答, 望不吝继续赐教.谢谢.

snchris 发表于 2017-9-10 17:09

本帖最后由 snchris 于 2017-9-10 17:26 编辑

bigbadmouse 发表于 2017-9-10 15:57
感谢你的回答和计算,但你的回答其实并没有解答我的问题,我的问题并不是如何得到692".73和1".16

我的问题 ...
你需要学习一下角的弧度制表示,每一个实数r都对应一个角度d,转化公式 d / 360 ° = r / (2*pi)。sin2φ前面那个系数也是一个实数,692''是它对应的角度制表示法。你也可以把sin2φ转成角度制,一样的。

snchris 发表于 2017-9-10 17:14

bigbadmouse 发表于 2017-9-10 15:57
感谢你的回答和计算,但你的回答其实并没有解答我的问题,我的问题并不是如何得到692".73和1".16

我的问题 ...

推导方式就是通过椭圆的参数方程(高中数学书有)算得tanφ和tanφ'的关系后,通过泰勒公式(高等数学书上都有)展开,取前两项即可。

bigbadmouse 发表于 2017-9-10 20:37

snchris 发表于 2017-9-10 17:14
推导方式就是通过椭圆的参数方程(高中数学书有)算得tanφ和tanφ'的关系后,通过泰勒公式(高等数学书 ...

恐怕我只能感谢你的热心了,因为你好像完全不理解我的问题. 同时好像你也并不理解我所谓的严谨是什么. 我一点点说明吧.

1. 我不是天文方面的专业人员,否则不会有这些问题. 这也是我把这个问题拿到天文专业网站论坛请教的原因. 当然了, 这并不意味着我在其他某些方面不是专业人员.

2. 我所提出的公式是我在相关的专业文档中看见的, 虽然我的水平不足, 但你所提出的推导方法以及后续的换算我相信无论是译者许剑伟还是原作者Jean Meeus都不会不知道, 在这种情况下, 文档中仍然使用了这种描述方式而不是更加直观更加简洁的描述方式, 是需要读者做进一步换算之后才能使用吗? 该书之前的其他公式并无此情况存在.

3. 相同的公式我在其他论文中也见到过, 包括中文和英文,公式的形式是完全一样的. 即使许剑伟和Jean Meeus 未能提供更加简洁的最终公式形式,其他作者也不清楚更加简洁的公式形式更有利于理解问题吗?抑或这些作者在不明其理的情况下机械的照搬了这个公式? 抱歉我还没有找到这本书的英文版, 不清楚这个公式是源自于Jean Meeus还是Jean Meeus也是从其他地方引用的公式.

4. 你提出了对那个公式的各种解释和说明, 能否请你给出这个公式更加简洁的描述?能够让人直接代入数据就能计算的? 我认为这样的公式更容易为人所接受.

我不否认使用高中数学知识以及一些简单的高等数学知识能够计算出这些数据并在低精度时严格的符合正确结果, 但这并不是一种严谨的方式. 这也就是我之前回复中说你的推导我并不能直接使用的原因, 直接原因是你用于确定正确的结果的依据是小数点后三位., 而且只有一个例子符合. 在我之前的计算以及程序验证中, 书中例子的结果我是要在10位小数的精度上验证的. 书中一般给出的是六位小数, 所以我的做法是找到各种各样的现成专业软件, 计算相同的数据然后比较结果以确保十位小数的精度和正确性.

实际上, 我给的截图图二中就有个例子: Φ=45°.05′46".36, Φ'=44°54′13".64, Φ-Φ'=11′32".73, 如何能够只将数据带入公式即可算出正确结果?笔算是一回事 , 用程序呢? 各种不同类型的变量之间的转换呢?

如有兴趣,你可以试试用你的方法,随机生成几十个数据进行计算,并使用专业软件进行对比计算,如果不一致的情况不高于二十分之一(每二十组随机数据最多错一个,这是考虑到不占用你太多时间,否则正确率恐怕就要用百分数甚至千分数描述了:)), 我愿意收回我说的话并使用你的方法,同时建议我认识的人使用你的这种方法.

我无意否认你的知识和计算能力, 但就像我开头说的, 恐怕我只能感谢你的热心, 你并未提供我所期望的答案. 我需要更加严谨的解释, 我宁可相信这个公式是用了一种我所不了解的方式来计算692".73与sin(2Φ)的乘积也不会采用你所说的这种方式. 原因很简单, 你的说法并未得到验证. 如果像你所说的那样,我认为有点不大尊重Jean Meeus这些作者了, 或者说Jean Meeus们欺世盗名而未被发现很久了.

无论如何,感谢你的热心回答并对你的数学功底致以敬意.

snchris 发表于 2017-9-11 00:37

bigbadmouse 发表于 2017-9-10 20:37
恐怕我只能感谢你的热心了,因为你好像完全不理解我的问题. 同时好像你也并不理解我所谓的严谨是什么. 我 ...

如果说您需要更加精确的表达式,那么是φ-φ' = φ - arctan(b^2/a^2*tanφ)。这个式子最终结果的误差仅取决于a和b的测量误差和你程序的计算误差。你仍然没有理解这个数学推导的意思,泰勒展开取前几项本身就是一种近似表达,是为了方便计算,我们通过泰勒展开写成与sin2φ有关的形式。我写的那个带有a和b的式子本身就是最简形式了,这个公式剩余的误差在它的高阶项上。如果你要更精确的结果,尽可以把后面几项保留,或者直接采用第一句的公式。

bigbadmouse 发表于 2017-9-11 12:01

snchris 发表于 2017-9-11 00:37
如果说您需要更加精确的表达式,那么是φ-φ' = φ - arctan(b^2/a^2*tanφ)。这个式子最终结果的误差仅 ...

感谢你的耐心, 你给的新公式φ-φ' = φ - arctan(b^2/a^2*tanφ)我的确在其他文档中见到过,没有使用这个公式而仍然纠结于我所提出公式的原因很简单:计算值有偏差. 最终计算出来的φ'值为44°54′13".631996而不是44°54′13".64, 当然, 我并没有去验证不同的取值精度计算对这个结果的影响, 因为我不需要为了得到相同的结果而刻意去降低精度.

类似的情况在儒勒历转换算法的时候遇到过,用文中的公式计算的结果相对是比较准确的,而搜到的其他公式就未必那么准确,因而我宁可纠结于理解文中的公式.

下面是我图省事在excel中做的结果截图,表格中 深红色背景白色字体为计算相关值,表格中其他为中间值,表格外的值是用之前我所提到的例子中给出的结果,作为参照.下方的数据是根据不同pi位数做的计算,用以验证结果是否随pi取值精度不同而造成差异, 结果证明在文中例子所给的保留两位小数的情况下,pi的取值精度并不影响结果.

烦请确认一下我的公式是否正确, 有可能我输入的时候有人为错误,谢谢.excel文件无法直接上传,压缩后上传.

snchris 发表于 2017-9-11 13:45

bigbadmouse 发表于 2017-9-11 12:01
感谢你的耐心, 你给的新公式φ-φ' = φ - arctan(b^2/a^2*tanφ)我的确在其他文档中见到过,没有使用这个 ...

建议系统地学习一下误差分析学,弄清楚误差来源以及有效数字的概念,否则楼主这样纠结和讨论下去没有意义。

bigbadmouse 发表于 2017-9-11 17:58

snchris 发表于 2017-9-11 13:45
建议系统地学习一下误差分析学,弄清楚误差来源以及有效数字的概念,否则楼主这样纠结和讨论下去没有意义 ...

王顾左右而言他, again?

行吧, 感谢你的热心回答, 我也没啥兴趣再与你讨论下去了. 这里回顾一下.

我的问题是 "大家好,在读天文算法的过程中遇到了这么个公式(图1),这里面的表示方法是怎么回事?我实在查不到这东西应该怎么算,望赐教.谢谢."

在你的指导下,我需要:
1. 学习一下高中数学椭圆部分
2. 通过椭圆的参数方程(高中数学书有)算得tanφ和tanφ'的关系后,通过泰勒公式(高等数学书上都有)展开,取前两项即可
3. 你需要学习一下角的弧度制表示,每一个实数r都对应一个角度d
4. 建议系统地学习一下误差分析学

牧夫果是专业论坛, 高人云集, 谈笑间指点江山挥斥方遒. 弹指处指东打西如虚似幻, 我等编外文盲且不得近山门而管窥之, 惶恐, 惶恐, 惭愧, 惭愧. 便不扰贵宝地清静了罢.

snchris 发表于 2017-9-12 09:56

本帖最后由 snchris 于 2017-9-12 09:58 编辑

对楼主的几个问题回答一下


1) 692".13是一个角度值,sin(2Φ)是一个浮点数,如何直接相乘?
本来就可以直接相乘,我不明白为什么楼主会纠结于这一点。如果还不能理解,把692".13化作实数,实数和实数总能相乘吧?另外纠正一下,数学上没有浮点数,浮点数是计算机的表述法,sin2φ是实数而不是浮点数。

2) 文档中仍然使用了这种描述方式而不是更加直观更加简洁的描述方式, 是需要读者做进一步换算之后才能使用吗?
3) 即使许剑伟和Jean Meeus 未能提供更加简洁的最终公式形式,其他作者也不清楚更加简洁的公式形式更有利于理解问题吗?抑或这些作者在不明其理的情况下机械的照搬了这个公式?
这已经是将目前的测量值带入后化简的结果,楼主认为什么才算简洁?

4) 能否请你给出这个公式更加简洁的描述?能够让人直接代入数据就能计算的?
我的表示无论是第一种还是第二种都可以直接代入数据计算,已经是最简形式,完全不知道为什么楼主不能理解。

5) Φ=45°.05′46".36, Φ'=44°54′13".64, Φ-Φ'=11′32".73, 如何能够只将数据带入公式即可算出正确结果?
你要知道误差的来源是什么,你算得结果和书上的结果不对不代表公式不精确,而是你和他代入的数据不一样。你为什么一定认为书上的结果就是最精确的?

我以为你不能理解的是公式为什么会这样表示,我给你了详细的推导过程。但你好像对于数学原理并不是很关心,反而纠结无效的精度。如果你学过误差分析,就会知道你的纠结是完全没有意义的,这就好比你想用一把米尺把长度测到纳米级,这完全是不可能的事。

bigbadmouse 发表于 2017-9-12 11:02

snchris 发表于 2017-9-12 09:56
对楼主的几个问题回答一下




如此理直气壮? 那就再破个例回复一下吧,我本意是不再回复这种话题的.

年轻人, 这是就目前情形下我对你的最后一次回复, 已经陷入无意义的争执了, 我并不喜欢这种情形.

我什么时候问过数学原理? 我什么时候对推导过程有过疑问? 好像一上来就扔一堆推导过程的是你,我的原话是图1, 针对的是你所说的模糊的"学习一下高中数学椭圆部分"这句话.

至于你要纠正的"数学上没有浮点数, 浮点数是计算机的表述法....", 年轻人, 麻烦看图2, 答题时审题的重要性我就不费口舌了.

言尽于此. 保重, 珍重.

后续如果有人愿意认真的进一步讨论这个问题,我会很欢迎并做出适当回应的,包括你在内.

但如果你的回复仍然处于这个层次,抱歉, 恕不奉陪, 我不会再与你争论什么. 如果一定要表态, ok, 你是对的,你高兴就好.

天天走 发表于 2017-9-12 14:16

这就是一个简单的公式啊,相当于:

差值=692.73Xsin(2F)-1.16Xsin(4F)

其中F(因为输入问题,原记号不好输入,用F代替)为当地的地理纬度,计算结果为(角度)秒(”)。

文玩核桃 发表于 2017-9-17 09:30

本帖最后由 文玩核桃 于 2017-9-17 09:32 编辑

楼主大概是做GPS和卫星定位方面的APP的吧?编程的人太过于纠结数值结果而忽略误差传递和来源。
@snchris 回答得很详细很到位,吃瓜群众都看明白了,楼主为什么只纠结于计算结果不同而不纠结于结果不同的原因?

你要更精确的公式人家也说了
“这个式子最终结果的误差仅取决于a和b的测量误差和你程序的计算误差。你仍然没有理解这个数学推导的意思,泰勒展开取前几项本身就是一种近似表达,是为了方便计算,我们通过泰勒展开写成与sin2φ有关的形式。我写的那个带有a和b的式子本身就是最简形式了,这个公式剩余的误差在它的高阶项上。”

然后你说
“新公式φ-φ' = φ - arctan(b^2/a^2*tanφ)我的确在其他文档中见到过,没有使用这个公式而仍然纠结于我所提出公式的原因很简单:计算值有偏差. 最终计算出来的φ'值为44°54′13".631996而不是44°54′13".64, 当然, 我并没有去验证不同的取值精度计算对这个结果的影响, 因为我不需要为了得到相同的结果而刻意去降低精度.”

你去试验Pi的精度对结果的影响,没有试验a和b精度,更没有用泰勒级数的高阶项来计算,这是问题的关键。楼主显然没有理解@snchris的解释。另外你问“692".13是一个角度值,sin(2Φ)是一个浮点数,如何直接相乘?”这实在是让学理工的人看不过去的问题。

bigbadmouse 发表于 2017-9-19 09:50

文玩核桃 发表于 2017-9-17 09:30
楼主大概是做GPS和卫星定位方面的APP的吧?编程的人太过于纠结数值结果而忽略误差传递和来源。
@snchris 回 ...

感谢你的回复, 不过"楼主大概是做GPS和卫星定位方面的APP的吧"这个结论你是如何得出来的? 从哪里看的出来? "这实在是让学理工的人看不过去的问题", 又是从哪里看出我是理工出身的?

我做这东西是给我的孩子做玩具玩的, 本不需要如此高精度, 但之前我对天文方面本来就有点兴趣而又没有机会系统学过, 我也不是搞什么理工出身的. 只不过碰巧朋友介绍了一种控制器可以用简单高效的编程完成自动控制, 这是一种新的模式, 我也挺感兴趣, 所以放在一起,既玩了那种控制器又给孩子做了玩具,相对而言,我还能学学本没机会学的天文知识, 何乐不为? 况且, 始终以一种严谨的态度去做事情去学习,这本身也是给我孩子的一种好的教育.

这么简单的事情, 我也不过是以一个初学者的面目出现虚心请教的, 怎么就被贴了这么多标签? 要我学高中数学?高等数学? 学角度弧度? 学误差分析? 而且我还是做GPS卫星定位方面的APP? 我都不知道我人生中居然错过了这么多的精彩. 且狂妄地说一句, 那些事, 是刚进我部门的小屁孩们都不需要考虑.

不是什么天文学方面的高人,不是什么理工类的高人, 也不是什么高级程序员, 但这并没有妨碍我在我的领域里做一个严谨的受人尊重的专业人员. 也并不妨碍我在这个神级论坛中给神级人员留一句话, 对于你并不了解的东西, 且不急着妄下结论为人师吧. 你们可能永远都不会知道我是谁.

至于我为什么纠结于精度, 呵呵, 说了你们可能不信的,估计也没啥用. 这是我们行事严谨的一种体现而已. 对于你所不了解的领域, 你能够做到重复前人, 这里主要是指参考资料学习资料, 的结果并严格符合, 同时, 你从不同的专业数据源中印证了你所得结果的正确性, 这是你去试图更深入的理解前人所使用方法的一个前提. 这种学习方法, 呵呵, 估计也会被喷吧, 应该不在你们的理解范围之内.

看来我要食言了. 在这么一种浮躁的气氛下, 我似乎没什么必要继续留在这里了, 这种氛围, 我也不会让我的孩子前来求教求学. 就此别过. 不再回复.

感谢大家的热心和帮助.

文玩核桃 发表于 2017-9-19 12:23

bigbadmouse 发表于 2017-9-19 09:50
感谢你的回复, 不过"楼主大概是做GPS和卫星定位方面的APP的吧"这个结论你是如何得出来的? 从哪里看的出来 ...

你一提问就带一幅图还附带了公式,还谈到Jean Meeus,又要求这么高的精度,所以综合考虑“GPS和卫星定位方面的APP”是满足这些条件的一个结果。
文科生上来问问题就带一幅图还附带了公式,又谈到Jean Meeus,还要求这么高的精度,这是小概率事件。所以假定你是理科生。
其实论坛的气氛很好,大家也没有贬低的意思,说高中数学椭圆部分、高等数学都是指出相应知识点的出处,便于查找相关信息。
从你的其他回复中看出,你是个管理层的人物,也许在生活中是个令人尊敬的大人物,不过这和别人对你的回复无关,别人的回复都很到位,你非要理解成是对你的不尊重或是贬低,那也没有办法。说到底这已经不是数学讨论的问题了,过于敏感的自尊确实无法在这个论坛讨论学术问题。
我也不是天文专业的,纯粹是爱好,但我是理科生,假如我去文科的论坛请教问题,我会把自己的状况告知大家,一来方便自己对问题的理解,二来方便论坛其他人在我的背景下回复问题。
页: [1]
查看完整版本: 请教地心纬度和地理纬度的计算公式