<p>For orbits with non-small eccentricities (say e&gt;0.1) that never get very close to Earth for atmospheric or higher order multipole terms, your biggest error will come from <a href="https://en.wikipedia.org/wiki/Geopotential_model#Largest_terms" rel="nofollow noreferrer">Earth's J2 term</a>, the &quot;oblateness&quot; term meaning gravity feels stronger at the equator than the poles at a given radius.</p>
<p>Your equation works for a point mass or any spherically symmetric mass (i.e. <a href="https://en.wikipedia.org/wiki/Shell_theorem" rel="nofollow noreferrer">Newton's shell theorem</a> but that big J2 is a roughly 1 part per thousand effect in low Earth orbit and so any equation based on a spherical Earth will always have a ppt sized error; larger for equatorial earth and probably much less for polar where the J2 term results in an <em>oscillating</em> potential centered on zero.</p>
<p>You should get much better results with an orbit in <a href="https://en.wikipedia.org/wiki/Medium_Earth_orbit" rel="nofollow noreferrer">MEO</a> (like GPS et al.) and at least somewhat better by choosing a polar orbit in LEO.</p>
<p>Don't go to high Earth orbit because the gravitational effects of the Sun and Moon perturb them so much that TLE's begin to break down.</p>
<p><strong>update:</strong> I see that <a href="https://www.n2yo.com/satellite/?s=41386" rel="nofollow noreferrer">41386 <em>is already in a polar orbit</em></a>, so instead try a LEO orbit that's at a similar (but not too much lower) orbital altitude but closer to equatorial (say i&lt;30°) to see if the disagreement is worse, and the MEO to see that is is better.</p>

CC BY-SA 4.0
2023-07-26T12:43:50.353Z
2023-07-26T12:43:50.353Z
uhoh
<p>I was reading this question: <a href="https://astronomy.stackexchange.com/questions/29005/calculation-of-eccentricity-of-orbit-from-velocity-and-radius">Calculation of Eccentricity of orbit from velocity and radius</a> and tried to use the proposed equation to reconstruct the ecco field of TLE by it's R,V vectors. The formula is simple:</p>
<p><span class="math-container">$\mathbf{e} = \frac{\mathbf{v} \times \mathbf{h}}{\mu} - \frac{\mathbf{r}}{\|\mathbf{r}\|}$</span></p>
<p>Where <span class="math-container">$\mathbf{h} = \mathbf{r} \times \mathbf{v}$</span></p>
<p>The tested TLE:</p>
<pre><code>1 41386U 16016A   23053.13950576  .00028887  00000-0  32773-3 0  9993
2 41386  97.1800 138.9553 0010664 243.3776 116.6390 15.62259129388863
</code></pre>
<p>It's ecco is <code>0.0010664</code> while the formula gives me <code>0.0001432</code> for TEME/GCRF vectors. And for ITRF vectors it results in <code>0.0202059</code>.</p>
<p>I've adapted my code for python to print all 3 values:</p>
<pre><code>import numpy as np
from skyfield.api import EarthSatellite, load
from skyfield.framelib import itrs
from sgp4.api import Satrec, WGS84

ts = load.timescale()

line1 = '1 41386U 16016A   23053.13950576  .00028887  00000-0  32773-3 0  9993'
line2 = '2 41386  97.1800 138.9553 0010664 243.3776 116.6390 15.62259129388863'
 
satrec = Satrec.twoline2rv(line1, line2, WGS84)
print('TLE ecco: ', satrec.ecco)

e, r, v = satrec.sgp4(satrec.jdsatepoch, satrec.jdsatepochF)
res = np.linalg.norm(np.cross(np.cross(v,r), v)/398600.8 - r/np.linalg.norm(r))
print('TEME ecco: ', res)

sat = EarthSatellite.from_satrec(satrec, ts)
geocentric1 = sat.at(sat.epoch)

r = geocentric1.position.km
v = geocentric1.velocity.km_per_s
res = np.linalg.norm(np.cross(np.cross(v,r), v)/398600.8 - r/np.linalg.norm(r))

print('GCRF ecco: ', res)

pos1, vel1 = geocentric1.frame_xyz_and_velocity(itrs)
r = pos1.km
v = vel1.km_per_s
res = np.linalg.norm(np.cross(np.cross(v,r), v)/398600.8 - r/np.linalg.norm(r))

print('ITRF ecco: ', res)
</code></pre>
<p>The question is: What frames this formula is valid for? Is it possible at all to get eccentricity of near-circular orbit by RV vectors with at least <code>1e-5</code> precession?</p>

CC BY-SA 4.0
2023-07-25T19:18:33.787Z
The data in the TLE aren't really orbital elements, even though many fields have the same name.  They are just values generated to reproduce the actual position and velocity within some tolerance when using the SGP algorithm.  So it's best to assume anything in a TLE is useless outside of the SGP algorithm.
Greg Miller
CC BY-SA 4.0
2023-07-26T12:51:19.437Z
just curious - you're already posting questions in Space Exploration SE where a TLE/artificial satellite orbit propagation question would be centrally on-topic; was there a reason you asked this in Astronomy SE instead? I don't think it's off-topic here necessarily, just wondering.
uhoh
CC BY-SA 4.0
2023-07-26T13:31:28.810Z
@uhoh That's just because the original question was in Astronomy: https://astronomy.stackexchange.com/questions/29005
I don't mind if someone move my question to a proper place.
truf
<orbital-mechanics><eccentricity>
Eccentricity of TLE orbit from velocity and radius in TEME
truf
# Eccentricity of TLE orbit from velocity and radius in TEME

(Asked by: username_0 on 2023-07-25)

I was reading this question: Calculation of Eccentricity of orbit from velocity and radius and tried to use the proposed equation to reconstruct the ecco field of TLE by it's R,V vectors. The formula is simple:
$\mathbf{e} = \frac{\mathbf{v} \times \mathbf{h}}{\mu} - \frac{\mathbf{r}}{\|\mathbf{r}\|}$
Where $\mathbf{h} = \mathbf{r} \times \mathbf{v}$
The tested TLE:
1 41386U 16016A   23053.13950576  .00028887  00000-0  32773-3 0  9993
2 41386  97.1800 138.9553 0010664 243.3776 116.6390 15.62259129388863

It's ecco is 0.0010664 while the formula gives me 0.0001432 for TEME/GCRF vectors. And for ITRF vectors it results in 0.0202059.
I've adapted my code for python to print all 3 values:
import numpy as np
from skyfield.api import EarthSatellite, load
from skyfield.framelib import itrs
from sgp4.api import Satrec, WGS84

ts = load.timescale()

line1 = '1 41386U 16016A   23053.13950576  .00028887  00000-0  32773-3 0  9993'
line2 = '2 41386  97.1800 138.9553 0010664 243.3776 116.6390 15.62259129388863'
 
satrec = Satrec.twoline2rv(line1, line2, WGS84)
print('TLE ecco: ', satrec.ecco)

e, r, v = satrec.sgp4(satrec.jdsatepoch, satrec.jdsatepochF)
res = np.linalg.norm(np.cross(np.cross(v,r), v)/398600.8 - r/np.linalg.norm(r))
print('TEME ecco: ', res)

sat = EarthSatellite.from_satrec(satrec, ts)
geocentric1 = sat.at(sat.epoch)

r = geocentric1.position.km
v = geocentric1.velocity.km_per_s
res = np.linalg.norm(np.cross(np.cross(v,r), v)/398600.8 - r/np.linalg.norm(r))

print('GCRF ecco: ', res)

pos1, vel1 = geocentric1.frame_xyz_and_velocity(itrs)
r = pos1.km
v = vel1.km_per_s
res = np.linalg.norm(np.cross(np.cross(v,r), v)/398600.8 - r/np.linalg.norm(r))

print('ITRF ecco: ', res)

The question is: What frames this formula is valid for? Is it possible at all to get eccentricity of near-circular orbit by RV vectors with at least 1e-5 precession?

**Tags:** orbital-mechanics, eccentricity
> **Comments:**
> **username_1**: The data in the TLE aren't really orbital elements, even though many fields have the same name.  They are just values generated to reproduce the actual position and velocity within some tolerance when using the SGP algorithm.  So it's best to assume anything in a TLE is useless outside of the SGP algorithm.  
> **username_2**: just curious - you're already posting questions in Space Exploration SE where a TLE/artificial satellite orbit propagation question would be centrally on-topic; was there a reason you asked this in Astronomy SE instead? I don't think it's off-topic here necessarily, just wondering.  
> **username_0**: @uhoh That's just because the original question was in Astronomy: https://astronomy.stackexchange.com/questions/29005 I don't mind if someone move my question to a proper place.  

---

## 1 answers

### Answer by username_2 on 2023-07-26. Score: 1 | Accepted answer

For orbits with non-small eccentricities (say e>0.1) that never get very close to Earth for atmospheric or higher order multipole terms, your biggest error will come from [Earth's J2 term](https://en.wikipedia.org/wiki/Geopotential_model#Largest_terms), the "oblateness" term meaning gravity feels stronger at the equator than the poles at a given radius.

Your equation works for a point mass or any spherically symmetric mass (i.e. [Newton's shell theorem](https://en.wikipedia.org/wiki/Shell_theorem) but that big J2 is a roughly 1 part per thousand effect in low Earth orbit and so any equation based on a spherical Earth will always have a ppt sized error; larger for equatorial earth and probably much less for polar where the J2 term results in an *oscillating* potential centered on zero.

You should get much better results with an orbit in [MEO](https://en.wikipedia.org/wiki/Medium_Earth_orbit) (like GPS et al.) and at least somewhat better by choosing a polar orbit in LEO.

Don't go to high Earth orbit because the gravitational effects of the Sun and Moon perturb them so much that TLE's begin to break down.

**update:** I see that [41386 *is already in a polar orbit*](https://www.n2yo.com/satellite/?s=41386), so instead try a LEO orbit that's at a similar (but not too much lower) orbital altitude but closer to equatorial (say i<30°) to see if the disagreement is worse, and the MEO to see that is is better.


---

