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);
double y=Math.sqrt(2*alfa)-Integral_Eliptica.primera(Math.PI/2, k);
return y;
}
|
alfa=Math.PI*Math.PI*fuerza/8;
angFinal=raiz(0.0, 3.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.cos(x)/Math.sqrt(-Math.cos(angFinal)+Math.cos(x));
return y;
}
|
x=(Math.sqrt(1.0-Math.cos(angFinal))-Math.sqrt(-Math.cos(angFinal)+Math.cos(ang)))
/Math.sqrt(alfa);
y=integral(0.0, ang, 50)/(2*Math.sqrt(alfa));
Posiciones finales
xf=(Math.sqrt(1.0-Math.cos(angFinal)))/Math.sqrt(alfa);
yf=y+(xf-x)/Math.tan(angFinal);
