Procedimiento numérico
Resolver la ecuación trascendente por el procedimiento del punto medio
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.
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
xf=(Math.sqrt(Math.sin(angFinal)))/Math.sqrt(alfa);
yf=y+(xf-x)*Math.tan(angFinal);
