Distancia focal óptima
Hallar la raíz de la ecuación trascendente por el procedimiento del punto medio
public class Funcion extends Ecuacion{
double n;
double R;
double x;
final double hMax=5.85;
public Funcion(double n, double R){
this.n=n;
this.R=R;
}
void setPos(double x){
this.x=x;
}
public double f(double h){
double x=caustica(h);
return(recta(h, x)-recta(-hMax, x));
}
double focal(double h){
double f=(n*Math.sqrt(R*R-n*n*h*h)-(n*n-1)*R+n*n*Math.sqrt(R*R-h*h))/(n*n-1);
return f;
}
public double recta(double h, double x){
double y=-h*(x-focal(h))/(focal(h)+R-Math.sqrt(R*R-h*h));
return y;
}
private double dervFocal(double h){
double z=-(n*n*h/(n*n-1))*(n/Math.sqrt(R*R-n*n*h*h)+h/Math.sqrt(R*R-h*h));
return z;
}
public double caustica(double h){
double z=focal(h)+h*dervFocal(h)*(focal(h)+R-Math.sqrt(R*R-h*h)) |
Distancia focal óptima
Funcion lente=new Funcion(iRefraccion(lonOnda), radio);
try{
double hRaiz=lente.puntoMedio(0.0, hMax);
x0=lente.caustica(hRaiz);
y0=lente.recta(hRaiz, x);
}catch(RaizExcepcion ex){
System.out.println(ex.getMessage());
}
//...
double iRefraccion(int lonOnda){
double n=2.099-1.9446e-3*lonOnda+2.8756e-6*lonOnda*lonOnda- |
