Quit[];

$HistoryLength = 0;

Resolviendo numéricamente la ec. para el tiempo retardado.

Lo de abajo sirve para chequear gráficamente que la ec. se resuelva bien de manera numérica para la forma elegida de la trayectoria. En este caso funciona bien para movimientos acotados en el eje x entre + y - a.

apr = .8; (*La amplitud del movimiento*)

X[a_, t_]:= a  Cos[t]; (*La ecuación de movimiento*)

(*El punto de observación está en {x, y} = Rpr {Cos[θpr], Sin[θpr]}*)

Manipulate[

(*Encuentra numéricamente el tiempo retardado.  Si el punto de observación no está sobre el eje "y" es posible acotar el intervalo en que debe estar la solución. Si está muy cerca del eje "y", conviene no dar un intervalo para la búsqueda sino un sólo valor tentativo*) 

sol = FindRoot[t-tp==  (Sqrt[(Rpr^2) + ((X[apr, tp])^2) - 2 Rpr X[apr, tp] Cos[θpr]]), If[Abs[Cos[θpr]] > 0.01, {tp, t - (Sqrt[(Rpr^2)+(apr^2)-2 Rpr apr Cos[θpr]]), t- (Sqrt[(Rpr^2)+(apr^2)+2 Rpr apr Cos[θpr]])},  {tp, t - (Sqrt[(Rpr^2)+(apr^2)-2 Rpr apr Cos[θpr]])}]];

{Show[
Graphics[Disk[{sol[[1]][[2]], t -sol[[1]][[2]]}, 0.05]], 
Plot[{t-tp, (Sqrt[(Rpr^2)+ ((X[apr,tp])^2) - 2 Rpr  X[apr,tp] Cos[θpr]])}, {tp,0, 2π}],PlotRange-> {0,2apr + Rpr}, Axes-> True, ImageSize-> 600], sol}, 

{{Rpr,1}, 1.1 apr, 4, (1/10.), Appearance-> "Open"},
{θpr, 0, π, (π/100.), Appearance-> "Open"}, 
{{t,π}, 0, 2π, (1/100.), Appearance-> "Open"}]

Se definen las funciones campo eléctrico (de velocidad y de aceleración y total) y su dirección.

X[a_, t_]:= a Cos[t];  (*ec. de movimiento X[t]*)
rp[a_, t_]:= X[a, t] {1, 0};   (*ec. de movimiento vectorial*)
r[R_, θ_]:= R {Cos[θ], Sin[θ]};  (*posición del punto de observación*)
γ[v_]:= (1/(Sqrt[1-(v^2)]));  (*factor gamma relativista*)

n[a_, R_, θ_, t_]:=Normalize[ r[R, θ]-rp[a, t]];  (*dirección del versor que va de la carga al punto de observación*)

TiempoRet[R_?NumericQ, θ_?NumericQ, t_?NumericQ, a_?NumericQ]:= Module[{tp}, FindRoot[t-tp==  (Sqrt[(R^2) + ((X[a, tp])^2) - 2 R X[a, tp] Cos[θ]]), If[Abs[Cos[θ]] > 0.01, {tp, t - (Sqrt[(R^2)+(a^2)-2 R a Cos[θ]]), t- (Sqrt[(R^2)+(a^2)+2 R a Cos[θ]])},  {tp, t - (Sqrt[(R^2)+(a^2)-2 R a Cos[θ]])}]][[1]][[2]]
];   (*el tiempo retardado como una función*)


evel[R_, θ_, t_, a_]:=Module[{tp, tret, k3, radio, β, normal},   
tret =   TiempoRet[R, θ, t, a];
k3 = (((1 - Derivative[0,1][rp][a, tret] . n[a, R, θ, tret]))^3);
radio = Norm[r[R, θ]-rp[a, tret]];
β = Derivative[0,1][rp][a, tret];
normal = n[a, R, θ, tret];

 (*El campo eléctrico de velocidad*)
 ((normal-β)/(((γ[β[[1]]])^2)k3  (radio^2) ))     
];


erad[R_, θ_, t_, a_]:=Module[{tp, tret, k3, radio, β, normal}, 

tret =     TiempoRet[R, θ, t, a];

k3 = (((1 - Derivative[0,1][rp][a, tret] . n[a, R, θ, tret]))^3);
radio = Norm[r[R, θ]-rp[a, tret]];
β = Derivative[0,1][rp][a, tret];
normal = n[a, R, θ, tret];

(*El campo eléctrico de aceleración*)

Take[  ((Cross[Join[normal, {0}], Cross[Join[normal-β, {0}],Join[Derivative[0,2][rp][a, tret], {0}]]])/(k3  radio )), 2]     

];

e[R_, θ_, t_, a_]:=Module[{tp, tret, k3, radio, β, normal}, 

tret =  TiempoRet[R, θ, t, a];

normal = n[a, R, θ, tret];
β = Derivative[0,1][rp][a, tret];

k3 = (((1 - β  . normal))^3);
radio = Norm[r[R, θ]-rp[a, tret]];

(*El campo eléctrico de total*)

(1/k3)( ((normal-β)/(((γ[β[[1]]])^2)  (radio^2) )) + Take[  ((Cross[Join[normal, {0}], Cross[Join[normal-β, {0}],Join[Derivative[0,2][rp][a, tret], {0}]]])/(  radio )), 2])    

];

eversor[R_, θ_, t_, a_]:=Module[{tp, tret, radio, β, normal}, 

tret =  TiempoRet[R, θ, t, a];

normal = n[a, R, θ, tret];
β = Derivative[0,1][rp][a, tret];
radio = Norm[r[R, θ]-rp[a, tret]];

(*El versor que da la dirección del campo eléctrico total*)
Normalize[normal-β +((γ[β[[1]]])^2)  radio Take[  Cross[Join[normal, {0}], Cross[Join[normal-β, {0}],Join[Derivative[0,2][rp][a, tret], {0}]]], 2]]  

];

Gráficos

El vector campo eléctrico en una grilla de puntos

Rpr =5;    (*distancia del punto de observación al origen*)
apr = .25;   (*amplitud de la trayectoria = β *)
npr = 10; (*número de puntos de la grilla según el ángulo polar θ*)

rmin = 2; (*valores mínimos y máximos del radio en donde se calcula el campo*)
rmax = 4;
nrpr = 6; (*números de puntos de la grilla en la dirección radial*)
factor = 2; (*factor de escala para el campo*)

Manipulate[
Show[Graphics[Disk[X[apr, tpr]{1,0}, 0.05]],
 
Graphics[Table[{Arrowheads[Small], Arrow[flecha = {{Rpr Cos[θ], Rpr Sin[θ]},{Rpr Cos[θ], Rpr Sin[θ]}+factore[Rpr, θ, tpr, apr]}],Arrow[{{1,-1},{1,-1}} flecha]},{Rpr, rmin, rmax-(((rmax-rmin))/nrpr),(((rmax-rmin))/nrpr) },  {θ, 0,π, (π/npr)}]], 

PlotRange-> {{-Rpr, Rpr}, {-Rpr,Rpr}} , ImageSize-> 600], 
{tpr, 0, 8, 0.1, Appearance-> "Open"}, TrackedSymbols:> {tpr}]

Ejemplo de cómo construir una tabla con cada cuadro de la animación

nt = 200;
nθ = 10;
Δr = .5;

apr = 0.6;

Monitor[evol = Table[
imgtemp = Show[Graphics[Disk[X[apr, tpr]{1,0}, 0.05]],
 
Graphics[Table[{Arrowheads[Small], Arrow[flecha = {{Rpr Cos[θ], Rpr Sin[θ]},{Rpr Cos[θ], Rpr Sin[θ]}+.5eversor[Rpr, θ, tpr, apr]}],Arrow[{{1,-1},{1,-1}} flecha]},{Rpr,1., 4, Δr},  {θ, 0.,π, (π/(nθ))}]], 

PlotRange-> {{-Rpr, Rpr}, {-Rpr,Rpr}} , ImageSize-> 600], 
{tpr, 0., 2π-2(π/nt), 2(π/nt)}];,{imgtemp,tpr}]

Ahora se puede ver como mayor fluidez

Manipulate[If[i > Length[evol], Abort[], evol[[i]]], {i, 1, Length[evol], 1, Appearance-> "Open"}]

Un StreamPlot del campo total.  El gráfico es un poco inestable. Para pequeñas variaciones de los parámetros, no siempre integra las líneas del mismo modo.

apr = 0.4;
impr =StreamPlot[e[(Sqrt[(x^2)+(y^2)]), If[y > 0, ArcCos[(x/(Sqrt[(x^2)+(y^2)]))], 2π-ArcCos[(x/(Sqrt[(x^2)+(y^2)]))]], 0, apr],{x,-6π,6π},{y,-6π,6 π},
StreamPoints->Table[10{Cos[θ], Sin[θ]},{θ,0.,2π, π/8}],  
RegionFunction->Function[{x,y,vx,vy,n},4<(x^2)+(y^2)<(((8π))^2)], 
AspectRatio->Automatic , 
Frame-> True,
PlotRange->4{{-π, π}, {-π,π}},
PlotRangeClipping->True, 
ImageSize->600]

Las líneas de campo integradas numéricamente del modo más trivial, a partir del versor que da la dirección del campo eléctrico total:        r[n+1] = r[n] + step eversor[r[n]]

apr = 0.5;

lineas = Table[

r0 =1;
θ0 = θ;
step = 0.4;
nmax =100;
tpr = 0;
puntos = {r0 {Cos[θ0], Sin[θ0]}};

For[i = 1, i ≤nmax, ++i,
vel = Normalize[e[r0,θ0, tpr, apr]];
next = r0 {Cos[θ0], Sin[θ0]} + vel step;
puntos = Join[puntos, {next}];
r0 = Norm[next];
θ0 =  If[next[[2]] > 0, ArcCos[((next[[1]])/r0)], 2π-ArcCos[((next[[1]])/r0)]];
];

puntos,
{θ,1. (π/16),1. π-(π/16),1. π/8}];

glast = ListPlot[Join[lineas, Map[{1,-1}# &, lineas,{2}]], PlotStyle->Orange, Joined-> True, PlotRange-> 5π{{-1, 1}, {-1, 1}}, AspectRatio->Automatic]

Las líneas calculadas durante un período

nt = 50;  (*número de frames*)
apr = 0.4;

Monitor[lineast =Table[tablapr =  Table[

r0 = .5;
θ0 = θ;
step = 0.4;
nmax =100;

puntos = {r0 {Cos[θ0], Sin[θ0]}};

For[i = 1, i ≤nmax, ++i,
vel = Normalize[e[r0,θ0, tpr, apr]];
next = r0 {Cos[θ0], Sin[θ0]} + vel step;
puntos = Join[puntos, {next}];
r0 = Norm[next];
θ0 =  If[next[[2]] > 0, ArcCos[((next[[1]])/r0)], 2π-ArcCos[((next[[1]])/r0)]];
];

puntos,
{θ, 0., π, π/10}], 
{tpr, 0., 2.π-((2π)/nt), ((2π)/nt)}];,

{tpr, Show[Table[Graphics[Circle[X[apr, ϕ]{1,0},Max[0,  tpr-ϕ]]], {ϕ, -4.π-(π/2), 6π-(π/2), π}], ListPlot[Join[tablapr, Map[{1,-1}# &, tablapr,{2}]], PlotStyle->Orange, Joined-> True], PlotRange-> 5π{{-1, 1}, {-1, 1}}, AspectRatio->Automatic, Frame->True, FrameTicks-> False, ImageSize-> 500]}];

Monitor[tablagraf = Table[Show[
ListPlot[Join[lineast[[i]], Map[{1,-1}# &, lineast[[i]],{2}]], PlotStyle->Orange, Joined-> True], PlotRange-> 5π{{-1, 1}, {-1, 1}}, AspectRatio->Automatic, Frame->True, FrameTicks-> False, ImageSize-> 500], {i, 1, Length[lineast]}];, {i, Length[lineast]}]

Manipulate[tablagraf[[i]], {i, 1, Length[tablagraf], 1, Appearance-> "Open"}]

Fantasía

Show[
ListPlot[Join[lineast[[1]], Map[{1,-1}# &, lineast[[1]],{2}]], PlotStyle->{{Orange,Thickness[0.003]}}, Joined-> True],
ListPlot[Join[lineast[[1]], Map[{1,-1}# &, lineast[[1]],{2}]], PlotStyle->{{Opacity[0.3], Orange,Thickness[0.015]}}, Joined-> True],
Table[Graphics[{ Thickness[0.01],Yellow,  Opacity[0.5], Circle[X[apr, ϕ]{1,0},Max[0,  2π(((1-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -4π, 6π, π}],
Table[Graphics[{ Thickness[0.02],Yellow,  Opacity[0.1], Circle[X[apr, ϕ]{1,0},Max[0,  2π(((1-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -4π, 6π, π}],
Table[Graphics[{Thickness[0.005],  Opacity[0.5], LightBlue, Circle[X[apr, ϕ]{1,0},Max[0,  2π(((1-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -4π-π/2, 6π-π/2, π}],
Table[Graphics[{Thickness[0.05],  Opacity[0.1], Blue, Circle[X[apr, ϕ]{1,0},Max[0,  2π(((1-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -4π-π/2, 6π-π/2, π}],
Graphics[{White, Disk[X[apr, 2π(((1-1))/(Length[lineast]))]{1,0}, 0.2]}],


PlotRange-> 5π{{-1, 1}, {-1, 1}}, 
Background-> Black,
Axes-> False,
AspectRatio->Automatic,
 Frame->True,
 FrameTicks-> False, ImageSize-> 600]

Manipulate[
Show[
ListPlot[Join[lineast[[i]], Map[{1,-1}# &, lineast[[i]],{2}]], PlotStyle->{{Orange,Thickness[0.003]}}, Joined-> True],
ListPlot[Join[lineast[[i]], Map[{1,-1}# &, lineast[[i]],{2}]], PlotStyle->{{Opacity[0.3], Orange,Thickness[0.015]}}, Joined-> True],
Table[Graphics[{ Thickness[0.01],Yellow,  Opacity[0.5], Circle[X[apr, ϕ]{1,0},Max[0,  2π(((i-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -6π, 6π, π}],
Table[Graphics[{ Thickness[0.02],Yellow,  Opacity[0.1], Circle[X[apr, ϕ]{1,0},Max[0,  2π(((i-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -6π, 6π, π}],
Table[Graphics[{Thickness[0.005],  Opacity[0.5], LightBlue, Circle[X[apr, ϕ]{1,0},Max[0,  2π(((i-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -6π-π/2, 6π-π/2, π}],
Table[Graphics[{Thickness[0.05],  Opacity[0.1], Blue, Circle[X[apr, ϕ]{1,0},Max[0,  2π(((i-1))/(Length[tablagraf]))-ϕ]]}], {ϕ, -6π-π/2, 6π-π/2, π}],
Graphics[{White, Disk[X[apr, 2π(((i-1))/(Length[lineast]))]{1,0}, 0.2]}],


PlotRange-> 4π{{-1, 1}, {-1, 1}}, 
Background-> Black,
Axes-> False,
AspectRatio->Automatic,
 Frame->True,
 FrameTicks-> False, ImageSize-> 600],

{i, 1, Length[lineast], 1, Appearance-> "Open"}]