A contour plot of the effective potential of a two-body system. (the Sun and Earth here), showing the 5 Lagrange points. An object in free-fall would trace out a contour (such as the Moon, shown).
Diagram of w:Lagrange points for a system where the ratio of masses (primary:secondary) is 25:1. Contour lines plot effective potential in rotating frame.
# Ratio of masses (primary:secondary)
R=25
left=-R*1.25
right=R*1.5
bottom=-R*1.25
top=R*1.25
set isosamples 200
unset surface
set cntrparam levels 30
set cntrparam levels incremental 1.4,0.019
set view 0,0
set contour base
set table 'lpoints.dat'
# Perturbatory force (vector)
# centrifugal primary secondary
lperturb(z) = z/(R+1)**2 - R*(z+1)/abs(z+1)**3 - (z-R)/abs(z-R)**3
# Effective potential (negative)
lpotential(z) = abs(z)**2/2/(R+1)**2 + R/abs(z+1) + 1/abs(z-R)
set parametric
splot [0:2*pi][0:right][left:right][bottom:top][1:3] v*sin(u),v*cos(u),lpotential(v*sin(u)*{1,0}+v*cos(u)*{0,1})
unset table
set term svg
set out 'lagrange.svg'
unset object
unset label
set size square
set multiplot
unset key
unset xtics
unset ytics
set parametric
# Space
set style line 6 lt 1 lw 2 lc rgb "black"
set samples 5
plot [0:4] [left:right][bottom:top] t<1?left+0.001:t<2?(t-1)*(right-left-0.002)+left+0.001:t<3?right+0.001:(t-3)*(left-right+0.002)+right-0.001,t<1?t*(top-bottom-0.002)+bottom+0.001:t<2?top-0.001:t<3?(t-2)*(bottom-top+0.002)+top-0.001:bottom linestyle 6 with filledcurves closed
set samples 100
unset parametric
# Contours
set style line 1 lt 1 lw 1 lc rgb "white"
plot [left:right][bottom:top] 'lpoints.dat' smooth bezier with lines linestyle 1
# Newton-Raphson method to calculate L1-L3
dlperturb(z) = 1.0/(R+1)**2 + 2.0*R/abs(z+1)**3 + 2.0/abs(z-R)**3
newtonraphson(x, m) = m<0 ? x : newtonraphson(x - lperturb(x)/dlperturb(x), m-1)
#set label 1 "Primary" at -1,0 offset -1,2 textcolor rgb "red"
#set label 2 "Secondary" at R,0 offset 1,1 textcolor rgb "red"
# Barycentre
set label 3 "" at 0,0 offset 1,0 point pointtype 1 pointsize 1
set label 4 "L1" at newtonraphson(R - (R+1)/(3*R)**(1.0/3), 10),0 right offset -1,-1 point pointtype 7 pointsize 1 linetype 1 lc rgb "green" textcolor rgb "green" font "Sans,14"
set label 5 "L2" at newtonraphson(R + (R+1)/(3*R)**(1.0/3), 10),0 offset 1,-1 point pointtype 7 pointsize 1 linetype 1 lc rgb "green" textcolor rgb "green" font "Sans,14"
set label 6 "L3" at newtonraphson((7.0*R+7)/(12.0*R-5)-(R+2), 10),0 offset 1,-1 point pointtype 7 pointsize 1 linetype 1 lc rgb "green" textcolor rgb "green" font "Sans,14"
set label 7 "L4" at (R-1)/2,sqrt(3)*(R+1)/2 offset 1,1 point pointtype 7 pointsize 1 linetype 1 lc rgb "green" textcolor rgb "green" font "Sans,14"
set label 8 "L5" at (R-1)/2,-sqrt(3)*(R+1)/2 offset 1,-1 point pointtype 7 pointsize 1 linetype 1 lc rgb "green" textcolor rgb "green" font "Sans,14"
set parametric
# Primary
set style line 4 lt 1 lw 1 lc rgb "white"
plot [0:2*pi] [left:right][bottom:top] 4*sin(t)-1,4*cos(t) linestyle 4 with filledcurves closed
set style line 3 lt 1 lw 1 lc rgb "blue"
plot [0:2*pi] [left:right][bottom:top] sin(t),cos(t) linestyle 3
# Secondary
plot [0:2*pi] [left:right][bottom:top] R*sin(t),R*cos(t) linestyle 3
set style line 6 lt 1 lw 1 lc rgb "black"
plot [0:2*pi] [left:right][bottom:top] 2.2*sin(t)+R,2.2*cos(t) linestyle 6 with filledcurves closed
set style line 5 lt 1 lw 1 lc rgb "#80C0FF"
plot [pi:2*pi] [left:right][bottom:top] 1.2*sin(t)+R,1.2*cos(t) linestyle 5 with filledcurves closed
set style line 8 lt 1 lw 1 lc rgb "#406080"
plot [0:pi] [left:right][bottom:top] 1.2*sin(t)+R,1.2*cos(t) linestyle 8 with filledcurves closed
# Moon
plot [0:2*pi] [left:right][bottom:top] 2.2*sin(t)+R,2.2*cos(t) linestyle 3
set style line 2 lt 1 lw 1 lc rgb "#DDDDDD"
plot [pi:2*pi] [left:right][bottom:top] 0.4*sin(t)+R+2.2*sqrt(0.5),0.4*cos(t)+2.2*sqrt(0.5) linestyle 2 with filledcurves closed
set style line 7 lt 1 lw 1 lc rgb "#222222"
plot [0:pi] [left:right][bottom:top] 0.4*sin(t)+R+2.2*sqrt(0.5),0.4*cos(t)+2.2*sqrt(0.5) linestyle 7 with filledcurves closed
unset parametric
unset multiplot
Licensing
I, the copyright holder of this work, hereby publish it under the following licenses:
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue
to share – to copy, distribute and transmit the work
to remix – to adapt the work
Under the following conditions:
attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
This licensing tag was added to this file as part of the GFDL licensing update.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue
to share – to copy, distribute and transmit the work
to remix – to adapt the work
Under the following conditions:
attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Self-made in w:Gnuplot: <nowiki> n=25 left=-n*1.25 right=n*1.5 bottom=-n*1.25 top=n*1.25 set isosamples 200 unset polar unset surface set cntrparam levels 30 set cntrparam levels incremental 1.4,0.019 set zrange [0:2] set view 0,0 set contour base