Integral elíptica
Las componentes del campo By y Bz se expresan de la siguiente forma en términos de la integrales elípticas completas de primera y segunda especie
public class Aplicacion {
public static void main(String[] args) {
//en la espira
if (Math.abs(y-1.0)<0.01 && Math.abs(z)<0.01){ System.out.println("infinito"); return; } double By, Bz; double m=2.0/(1.0+(z*z+y*y+1)/(2*y)); //en el eje de la espira
if(Math.abs(y)<0.01){ By=0.0; Bz=1.0/Math.pow((z*z+1), 1.5); }else{ //fuera del eje de la espira
Bz=(m*Math.sqrt(2*m)*Eliptica.segunda(Math.PI/2, Math.sqrt(m))
/(2-2*m)+y*Math.sqrt(2*m)*Eliptica.primera(Math.PI/2, Math.sqrt(m))-
y*(2-m)*Math.sqrt(2*m)*Eliptica.segunda(Math.PI/2, Math.sqrt(m))/(2-2*m))
/(Math.PI*2*y*Math.sqrt(2*y)); By=z*(-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*y*Math.sqrt(2*y)); } System.out.println("By: "+String.valueOf((double)Math.round(By*1000)/1000));
System.out.println(" Bz: "+String.valueOf((double)Math.round(Bz*1000)/1000)); double angulo=Math.atan2(Bz, By); if(angulo<0) angulo+=2*Math.PI; double modulo=Math.sqrt(By*By+Bz*Bz); System.out.println("B: "+String.valueOf((double)Math.round(modulo*1000)/1000));
System.out.println("fi: "+String.valueOf((double) Math.round(angulo*1800/Math.PI)/10)+"º");
}
} |
