【问题标题】:How to write mathematic formula in python如何在python中编写数学公式
【发布时间】:2011-09-17 18:44:59
【问题描述】:

我尝试在 python 中编写这些公式,但没有成功


我的代码没有错误,但我知道计算给出的结果不正确,所以我想我在公式的实现中出了点问题。


    import math
   lat = 54.5917455423
   lon = 17.2078876198

B = math.radians(lat)
L = math.radians(lon)
h = 55.889
pi = math.pi
a = 6378137
b = 6356752.3141
f = 1/298.257222101
ba = 1 - f# should be b/a = 1 - f

e = 0.006694380036
Da = 108
Df = - 4.80812 * 10 **-7
m = 0.000004848#one second in radians

dX = -23.74
dY = +123.83
dZ = +81.81
sin = math.sin
cos = math.cos
Rn = a/ math.sqrt(1-e**2 * math.sin(B)**2)
Rm = a*(1-e**2)/(1-e**2 * sin(B)**2)**(3/2)
vc = (Rm+h)*sin(m)

dB = (-dX*sin(B)*cos(L) - dY*sin(L) + dZ*cos(B) + Da*(Rn * e**2*sin(B)*cos(B)/a+Df)*(Rm*(a/b)+Rn*ba)*sin(B)*cos(B))*vc**-1
dL = (-dX * sin(L) + dY * cos(L) ) * ((Rn + h) * cos(B) * sin(m))**-1

a = dB * 180/pi + B
b = dL *180/pi + L

print a
print b

【问题讨论】:

  • 这是一个笼统的说法。我们需要具体的问题。什么不起作用?怎么会出错?如果出现错误,错误信息是什么?
  • 有什么问题?你意识到将任何东西提高到 -1 次方仅仅意味着你应该除以它。提供一个链接来解释这一切。
  • 那个公式是关于什么的?好复杂……
  • 没那么复杂。三角函数和代数,仅此而已。
  • 这是 GRS-80 椭球上的 BL 坐标与 Krassovsky 椭球上的 BL 坐标之间的大地测量计算。一般来说,结果应该几乎等于给定的B和L。

标签: python math


【解决方案1】:

这不是 Python:

b/a = 1 - f

【讨论】:

  • 是的,但是如何用pythonic方式写这个?
  • 这甚至不是有效的代码。 “b/a”在我知道的任何语言中都不是有效的变量名。这甚至可以编译吗?
  • @daikini 您的问题在这里出现数学问题...您要求解什么变量(假设两个变量已经有值)?您需要在等式的一侧隔离该变量,就像您在代数课中所做的那样。在 Python 中,这一边恰好是左边。
  • 虽然非常简洁,但您介意扩大您的答案吗?
【解决方案2】:

这个公式有错误:

dB = (-dX*sin(B)*cos(L) - dY*sin(L) + dZ*cos(B) 
    + Da*(Rn * e**2*sin(B)*cos(B)/a+Df)*(Rm*(a/b)+Rn*ba)*sin(B)*cos(B))*vc**-1

应该是:

dB = (  -dX*sin(B)*cos(L) - dY*sin(B)*sin(L) + dZ*cos(B)
        + Da*(Rn * e**2*sin(B)*cos(B)/a)
        + Df*(Rm*(a/b)+Rn*b/a)*sin(B)*cos(B)  )*vc**-1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多