Anterior

Procedimiento numérico

Código del procedimiento numérico que calcula los niveles de energía, y proporciona los coeficientes de las funciones de onda en cada intervalo normalizados. Las clases son las mismas que para el sólido lineal solamente cambia la función que define el potencial V.

public class Solido extends Raices {
     double x[];           //puntos de discontinuidad de la función potencial
     double V[];         //función potencial
     Complejo q[];
     CVector2 Coef[];    //coeficientes para la función de onda
     Matriz M;           //matriz para el cálculo del determinante
     int nNivel;              //número de niveles totales
     Niveles nivel[];
     double Vmin;             //mínimo del potencial

  public Solido(int N, double a, double b) {
     super(N, a, b);
     Vmin=0;
     V=new double[N+2];
     M=new Matriz(2*N+2, 2*N+2);
//para la función de onda
     q=new Complejo[N+2];
     for(int j=0; j<N+2; j++){
          q[j]=new Complejo();
     }
     Coef=new CVector2[N+2];
     for(int j=0; j<N+2; j++){
          Coef[j]=new CVector2();
     }
//niveles de energía
     nNivel=0;
     nivel=new Niveles[MAXNIVELES];
     for(int j=0; j<MAXNIVELES; j++){
          nivel[j]=new Niveles();
     }
//sólido regular
     x=new double[N+3];
     x[0]=0;
//número de barreras par, número de pozos impar
     x[1]=a/2;
     for(int j=2;j<N+2; j+=2){
          x[j]=x[j-1]+b;
          x[j+1]=x[j]+a;
     }
     for(int j=0; j<N+1; j+=2){
          V[j]=0;
          if(j==N)     break;
          V[j+1]=H;
     }
     V[N+1]=H;
//el 2 se puede cambiar significa hasta que la función 
//de onda tiende a cero al hacerse x grande x[N+2]=x[N+1]+2; } void setDefecto(double incrAncho, double incrAlto){ //número impar de pozos x[1]=a/2+incrAncho/2; for(int j=2; j<N+2; j+=2){ x[j]=x[j-1]+b; x[j+1]=x[j]+a; } V[0]+=incrAlto; if(incrAlto<0){ Vmin=V[0]; } //el resto de las funciones miembro tiene el mismo código }
Anterior