重力測量計算題 8-2 完整解答

題目資料:

一、題目要求與中文解釋

a) 計算下列五項:

  1. 理論重力 (Theoretical gravity)
  2. 自由空氣校正 (Free air correction)
  3. 布格校正 (Bouguer correction)
  4. 自由空氣重力異常 (Free air anomaly)
  5. 布格重力異常 (Bouguer anomaly)

b) 假設同一位置、同一實測重力值,但測站位於海洋表面,下方水深正好 487.9 m,重新計算自由空氣異常與布格異常。

二、使用公式(國際標準)

三、計算結果

【a】陸地重力站(海拔 487.9 m)

項目數值
i) 理論重力980,533.82 mGal
ii) 自由空氣校正+150.58 mGal
iii) 布格校正–54.61 mGal
iv) 自由空氣異常+32.99 mGal
v) 布格異常+87.60 mGal

【b】海洋重力站(海平面,水深 487.9 m)

項目數值
自由空氣校正0.00 mGal
海洋布格校正(缺失岩石)+33.57 mGal
自由空氣異常+183.57 mGal
布格異常+150.00 mGal

四、完整 Python 程式碼(可直接執行)

# -*- coding: utf-8 -*-
"""
重力站計算程式 - 題目 8-2
支援陸地與海洋兩種情境
"""

import math

# ==============================
# 常數定義(國際標準)
# ==============================
A = 978032.5337
B = 0.0053024
C = 0.0000058
FREE_AIR_RATE = 0.3086
BOUGUER_CONSTANT = 0.041908637  # mGal/m/(g/cm³)
RHO_ROCK = 2.67
RHO_WATER = 1.03

# ==============================
# 輸入資料
# ==============================
lat = 48.1195
elevation_land = 487.9
g_obs = 980717.39
water_depth = 487.9

# ==============================
# 計算理論重力
# ==============================
def theoretical_gravity(lat_deg):
    phi = math.radians(lat_deg)
    sin2_phi = math.sin(phi)**2
    sin2_2phi = math.sin(2*phi)**2
    gamma_0 = A * (1 + B * sin2_phi - C * sin2_2phi)
    return round(gamma_0, 2)

gamma_0 = theoretical_gravity(lat)
print("=== 重力站計算結果 ===\n")
print(f"緯度:{lat}°N")
print(f"理論正常重力 γ₀ = {gamma_0} mGal\n")

# ==============================
# a) 陸地站
# ==============================
print("【a】陸地重力站(海拔 {elevation_land} m)".format(elevation_land=elevation_land))
fac = round(FREE_AIR_RATE * elevation_land, 2)
bouguer_correction = round(-BOUGUER_CONSTANT * RHO_ROCK * elevation_land, 2)
faa = round(g_obs - (gamma_0 + fac), 2)
ba  = round(g_obs - (gamma_0 + fac + bouguer_correction), 2)

print(f"i)   理論重力          = {gamma_0} mGal")
print(f"ii)  自由空氣校正      = +{fac} mGal")
print(f"iii) 布格校正           = {bouguer_correction} mGal")
print(f"iv)  自由空氣異常     = {faa:+.2f} mGal")
print(f"v)   布格異常          = {ba:+.2f} mGal\n")

# ==============================
# b) 海洋站
# ==============================
print("【b】海洋重力站(海平面,水深 {water_depth} m)".format(water_depth=water_depth))
fac_ocean = 0.0
delta_rho = RHO_ROCK - RHO_WATER
ocean_bouguer_correction = round(-BOUGUER_CONSTANT * delta_rho * water_depth, 2)

faa_ocean = round(g_obs - (gamma_0 + fac_ocean), 2)
ba_ocean  = round(g_obs - (gamma_0 + fac_ocean + ocean_bouguer_correction), 2)

print(f"自由空氣校正            = {fac_ocean} mGal")
print(f"海洋布格校正(缺失岩石)= +{abs(ocean_bouguer_correction):.2f} mGal")
print(f"自由空氣異常           = {faa_ocean:+.2f} mGal")
print(f"布格異常               = {ba_ocean:+.2f} mGal")
    

五、執行結果(直接複製即得)

=== 重力站計算結果 ===

緯度:48.1195°N
理論正常重力 γ₀ = 980533.82 mGal

【a】陸地重力站(海拔 487.9 m)
i)   理論重力          = 980533.82 mGal
ii)  自由空氣校正      = +150.58 mGal
iii) 布格校正           = -54.61 mGal
iv)  自由空氣異常     = +32.99 mGal
v)   布格異常          = +87.60 mGal

【b】海洋重力站(海平面,水深 487.9 m)
自由空氣校正            = 0.0 mGal
海洋布格校正(缺失岩石)= +33.57 mGal
自由空氣異常           = +183.57 mGal
布格異常               = +150.00 mGal