Procedimiento numérico
Resolver la ecuación trascendente por el procedimiento del punto medio
2
(
E(k,π/2)−E(k,
φ
0
)
)=2
α
k=sin(
ϕ
0
2
+
π
4
) sin
φ
0
=
sin(π/4)
k
double raiz(double a, double b) {
double m, ym;
int iter=0;
do{
m=(a+b)/2;
ym=f(m);
if(Math.abs(ym)<CERO) break;
if(Math.abs((a-b)/m)<ERROR) break;
if((f(a)*ym)<0) b=m;
else a=m;
iter++;
}while(iter<MAXITER);
return m;
}
double f(double x){
double k=Math.sin(x/2+Math.PI/4);
double beta=Math.asin(Math.sin(Math.PI/4)/k);
double y=-Math.sqrt(2*alfa)+Integral_Eliptica.primera(Math.PI/2, k)
-Integral_Eliptica.primera(beta, k);
return y;
}
|
angFinal=raiz(0.0, 2.0);
Posiciones x e y.
x
L
=
1
α
(
sin
ϕ
0
−
sin
ϕ
0
−sinϕ
)
y
L
=
1
2
α
∫
0
ϕ
sinϕ·dϕ
sin
ϕ
0
−sinϕ
double integral(double a, double b, int n){
if(n%2==1) n++;
double h=(b-a)/n;
double suma=g(a)+g(b);
for(int i=1; i<n; i+=2){
suma+=4*g(a+i*h);
}
for(int i=2; i<n; i+=2){
suma+=2*g(a+i*h);
}
return (suma*h/3);
}
double g(double x){
double y=Math.sin(x)/Math.sqrt(Math.sin(angFinal)-Math.sin(x));
return y;
}
|
x=(Math.sqrt(Math.sin(angFinal))-Math.sqrt(Math.sin(angFinal)-Math.sin(ang)))
/Math.sqrt(alfa);
y=integral(0.0, ang, 50)/(2*Math.sqrt(alfa));
Posiciones finales
x
f
L
=
1
α
sin
ϕ
0
y
f
L
=
y
L
+(
x
f
L
−
x
L
)tan
ϕ
0
xf=(Math.sqrt(Math.sin(angFinal)))/Math.sqrt(alfa);
yf=y+(xf-x)*Math.tan(angFinal);