Anterior

Procedimientos numéricos

Integral elíptica

Las componentes del campo Ex y Ez se expresan en términos de (x/a) y (z/a) de la siguiente forma en términos de la integrales elípticas completas de primera y segunda especie

E x = q 4π a 2 ε 0 1 π ( 2(x/a) ) 3/2 ( ( x a ) m 22m 2m E( m ) + 2m K( m ) 2m 22m 2m E( m ) ) E z = q 4π a 2 ε 0 1 π ( 2(x/a) ) 3/2 ( z a ) m 22m 2m E( m )m= 4(x/a) ( x/a ) 2 + ( z/a ) 2 +1+2(x/a)

public class Aplicacion {
  public static void main(String[] args) {
        double m=2.0/(1.0+(z*z+x*x+1)/(2*x));
         double Ex, Ez;
if(Math.abs(x)<0.01){
Ex=0.0;
Ez=z/Math.pow((z*z+1), 1.5);
}else{
Ex=(x*m*Math.sqrt(2*m)*Eliptica.segunda(Math.PI/2, Math.sqrt(m))
/(2-2*m)+Math.sqrt(2*m)*Eliptica.primera(Math.PI/2, Math.sqrt(m))-
(2-m)*Math.sqrt(2*m)*Eliptica.segunda(Math.PI/2, Math.sqrt(m))/(2-2*m))
/(Math.PI*2*x*Math.sqrt(2*x));
Ez=(z*m*Math.sqrt(2*m)*Eliptica.segunda(Math.PI/2, Math.sqrt(m))/(2-2*m))
/(Math.PI*2*x*Math.sqrt(2*x));
}
System.out.println("Ex: "+String.valueOf((double)Math.round(Ex*1000)/1000)); System.out.println(" Ez: "+String.valueOf((double)Math.round(Ez*1000)/1000));
double angulo=Math.atan2(Ez, Ex);
if(angulo<0) angulo+=2*Math.PI;
double modulo=Math.sqrt(Ex*Ex+Ez*Ez);
System.out.println("E: "+String.valueOf((double)Math.round(modulo*1000)/1000)); System.out.println("fi: "+String.valueOf((double)
Math.round(angulo*1800/Math.PI)/10)+"º"); } }
Anterior