tl;dr: Relative to Earth, the weight of an object on Mars would be about 37.36% and 38.09% on Olympus Mons and Hellas Planitia. The difference between those two is about 2.0%. That compares to only a 0.7% range on Earth.
The three main terms for the phenomenon of weight on a typical rocky planet's surface are:
- gravitational monopole (GM) force
- gravitational quadrupole (J2) force
- centrifugal effects
I've copied the math from this answer.
$$a_G = -GM \frac{\mathbf{r}}{r^3}$$
From Geopotential_model; The_deviations of Earth's gravitational field from that of a homogeneous sphere:
$$a_{J2x} = J2 \frac{\mathbf{x}}{r^7}(6z^2 - 1.5(x^2+y^2))$$
$$a_{J2y} = J2 \frac{\mathbf{y}}{r^7}(6z^2 - 1.5(x^2+y^2))$$
$$a_{J2z} = J2 \frac{\mathbf{z}}{r^7}(3z^2 - 4.5(x^2+y^2))$$
$$a_C = \mathbf{r_{xy}} \omega^2 $$
Convert (x, y, z) to latitude and longitude
Reference ellipsoid of Mars:
$$a \approx 3396200$$
$$b \approx 3376200$$
From this answer:
According to Wikipedia's Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates
The 3D cartesian coordinates $X, Y, Z$ in Earth-centered, Earth-fixed coordinates assuming an ellipsoidal shape is given by:
$$X = \left(N(\phi) + h \right) \cos\phi \cos\lambda $$
$$Y = \left(N(\phi) + h \right) \cos\phi \sin\lambda $$
$$Z = \left(\frac{b^2}{a^2} N(\phi) + h \right) \sin\phi $$
where $\phi, \lambda, h$ are latitude, longitude, and altitude, and $a, b$ are the equatorial and polar radii of the ellipsoid used, and
$$N(\phi) = \frac{a^2}{\sqrt{a^2\cos^2\phi + b^2 \sin^2\phi}}. $$
Olympus Mons: 18.65°N, 226.2°E, 21,287m: X=-2,242,521, Y=-2,338,480, Z= 1,080,757 meters
Hellas Planitia: 42.4°S 70.5°E, -7,152m: X=837,649, Y=2,365,449, Z=2,264,417 meters
Using Python below (similar to the script in that answer):
magnitudes shown only (sign indicates generally "up" or "down")
OM HP
GM (m/s^2) -3.67139 -3.74879
J2 (m/s^2) -0.00984 -0.01172
centri (m/s^2) +0.01628 +0.01261
vector sum (m/s^2) -3.66344 -3.73562
So for a 100 kg mass:
OM HP
weight (N) 366.34 373.56
Earth relative(%) 37.357 38.093
where "relative" is relative to Standard Earth gravity of 9.80665 m/s^2.
def accelerations(rr):
x, y, z = rr
xsq, ysq, zsq = rr**2
rsq = (rr**2).sum()
rabs = np.sqrt(rsq)
nr = rr / rabs
rxy = np.sqrt(xsq + ysq)
rrxy = rr * np.array([1.0, 1.0, 0.0])
nxy = rrxy/rxy
rm3 = rsq**-1.5
rm7 = rsq**-3.5
acc0 = -GM_mars * rr * rm3
# https://en.wikipedia.org/wiki/Geopotential_model#The_deviations_of_Earth.27s_gravitational_field_from_that_of_a_homogeneous_sphere
acc2x = x * rm7 * (6*zsq - 1.5*(xsq + ysq))
acc2y = y * rm7 * (6*zsq - 1.5*(xsq + ysq))
acc2z = z * rm7 * (3*zsq - 4.5*(xsq + ysq))
acc2 = J2_mars * np.hstack((acc2x, acc2y, acc2z))
accc = nxy * omega**2 * rxy
return acc0, acc2, accc
def get_xyz(latdegs, londegs, alt):
lat, lon = rads*latdegs, rads*londegs
clat, slat = np.cos(lat), np.sin(lat)
clon, slon = np.cos(lon), np.sin(lon)
N = a**2 / np.sqrt((a*clat)**2 + (b*slat)**2)
X = (N+alt) * clat * clon
Y = (N+alt) * clat * slon
Z = ((b/a)**2 * N + alt) * slat
return np.array((X, Y, Z))
import numpy as np
halfpi, pi, twopi = [f*np.pi for f in [0.5, 1, 2]]
degs, rads = 180./pi, pi/180.
R_mars = 3396200.0
GM_mars = 4.282837E+13 # m^3/s^2 https://en.wikipedia.org/wiki/Standard_gravitational_parameter
J2_mars = GM_mars * R_mars**2 * 1960.45E-06 # https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html
Req = 3396.2 * 1000. # meters https://en.wikipedia.org/wiki/Mars
R = Req - 4500. # https://en.wikipedia.org/wiki/Gale_(crater)
Rpo = 3376.2 * 1000. # meters https://en.wikipedia.org/wiki/Mars
sidereal_day = 1.025957 # https://en.wikipedia.org/wiki/Mars
T = sidereal_day * 24 * 3600.
omega = twopi/T
print "omega: ", omega
print ''
a, b = Req, Rpo
OM_xyz = get_xyz(18.65, 226.2, 21287)
HP_xyz = get_xyz(42.4, 70.5, -7152)
print "OM: ", OM_xyz
print "HP: ", HP_xyz
OM_acs = accelerations(OM_xyz)
HP_acs = accelerations(HP_xyz)
print ""
print "OM: "
for thing in OM_acs:
print thing, np.sqrt((thing**2).sum())
print "vector sum: ", np.sqrt((sum(OM_acs)**2).sum())
print ""
print "HP: "
for thing in HP_acs:
print thing, np.sqrt((thing**2).sum())
print "vector sum: ", np.sqrt((sum(HP_acs)**2).sum())