我使用一个重力数据的地形校正算法。我用伊,1973年。然而,我不能得到我需要的结果。
- 在x, y, z的坐标是棱镜角。
- 2是方程数值方法,S (xi) = 1美元x < 0, 1 x > 0 $和$ 0 $ x = 0美元。同样适用于y,但美元$ F (x, y, z) = 0美元当z = 0美元
- 方程3给出了z组件美元的引力
看起来很简单的实现,但我找不到consitent结果。
然后,我知道我必须乘以G美元地球的引力常数和密度。
我有下面的坐标
- 美元(x1, x2) =(-500500)美元
- 美元(y1, y2) =(500、1500)美元
- 美元(z1 (z2) =(500、1500)美元
地球密度\公斤/ m ^ 3 1000美元。我应该得到的结果\ miliGals $ 2.360美元。但是我没有。
我把代码在python中,任何一个答案?
def nagy1973 (x, y, z):从数学导入日志,√6,#计算每股的总重力atraction rightrectangular棱镜#输入x =元组与x1和x2坐标# y = tuple y1和y2坐标与z1和z2坐标# # z =元组输出GravCorrect =一个地形校正,对矩形普里姆斯河。def Fz (a, b, c): #这是引力的数值方法#吸引力的Z分量输入y = x # b = # # b Z = F = #输出GravCorrect地形校正= abs (a) b = abs (b) c = abs (c r =√(a * * 2 + b * * 2 + c * * 2) r0 =√6 (a * * 2 + b * * 2) GravCorrect = *日志((b + r0) / (b + r)) + b *日志((a + r0) / (a + r)) + c *: (a * b / (c * r))返回GravCorrect GravCorrAcum = 0 #这给总Z分量的棱镜k范围(1、3):j的范围(1,len (y) + 1):我的范围(1,len (x) + 1):如果x(张)< 0:sgnX = 1 elif x(张)= = 0:sgnX = 0: sgnX = 1如果y [j - 1] < 0: sgnY = 1 elif y (j - 1) = = 0: sgnY = 0: sgnY = 1 sgnIJK = (1) * * (i + j + k) RealSign = sgnIJK * sgnX * sgnY #打印(sgnIJK、sgnX sgnY, RealSign) GravCorr = Fz (x(张),y (j - 1)、Z (k - 1)) FinalFz = RealSign * GravCorr GravCorrAcum + = FinalFz e-11 * 6.67408 * 1000 * 100000 #乘以重力常数#密度1000 kg / m3, 100000转换常数miligals miligals # #输出打印FinalFz, GravCorrAcum GravCorrAcum返回
调用函数:
x = y (-500、500) = (500、1500) z = (500、1500) FZ1 = nagy1973 (x, y, z)打印FZ1