
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);
