Funciones recursivas en la Física

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1232 bytes)

Funciones recursivas

El oscilador armónico cuántico

Polinomios de Hermite

Funciones de onda de un oscilador armónico cuántico


Hay varios casos de funciones recursivas que se emplean en la Física, las funciones de Bessel, los polinomios de Hermite, etc.

La fórmula recurrente de las funciones de Bessel es la siguiente

Todas las funciones de Bessel de los números enteros se expresan mediante dos funciones J0(x) y J1(x). Por ejemplo cuando n es uno

Las funciones de Bessel son complicadas de calcular y suelen venir tabuladas, por lo que presentaremos un ejemplo más simple como son los polinomios de Hermite.

 

El oscilador armónico cuántico

La ecuación de Schrödinger para un oscilador armónico cuántico independiente del tiempo es.

Haciendo los cambios de variables

donde w es la frecuencia angular del oscilador armónico. La ecuación de Schrödinger se reduce a otra mucho más simple.

Los valores propios o niveles de energía viene dados por la expresión

e n=n+1/2

y las funciones de onda por

Donde Hn(x ) es el polinomio de Hermite de orden n.

 

Polinomios de Hermite

Los primeros seis polinomios de Hermite son los siguientes.

H0(x)=1

H1(x)=2x

H2(x)=4x2-2

H3(x)=8x3-12x

H4(x)=16x4-48x2+12

H5(x)=32x5-160x3+120x

Todos los polinomios de Hermite de orden n>2 se pueden expresar en términos de los dos primeros polinomios H0(x) y H1(x), de orden cero y uno respectivamente, mediante la siguiente relación de recurrencia.

El código de la función recursiva que calcula los valores del polinomio Hn(x) es muy simple

double hermite(double x, int n){
	if(n==0) return 1.0;
	if(n==1) return 2*x;
	return (2*x*hermite(x, n-1)-2*(n-1)*hermite(x, n-2));
}

 

Funciones de onda de un oscilador armónico cuántico

Nuestra tarea va consistir en calcular las funciones de onda para los distintos niveles de energía n=0, 1, 2...

Empezamos por el denominador que precisa calcular la potencia 2n y el factorial de n, n!=n·(n-1)·(n-2)...2·1. Estas funciones son muy simples de programar y se han explicado al comienzo de los Fundamentos del Lenguaje Java.

long potencia2(int n){
	long result=1;
	for(int i=1; i<=n; i++){
		result*=2;
	}
	return result;
}
long factorial(int n){
	if(n==0) return 1;
	long result=1;
	for(int i=1; i<=n; i++){
		result*=i;
	}
	return result;
}

Dado el nivel de energía n, se calcula la función de onda para cualquier valor de x, en términos de las tres funciones auxiliares previamente definidas.

double funcion(double x){
	double y=(1.0/Math.sqrt(potencia2(n)*Math.sqrt(Math.PI)*factorial(n)))
		*hermite(x, n)*Math.exp(-x*x/2);
	return y;
}

En el siguiente applet se elige el nivel de energía y se representa la función de onda asociada. Las unidades de la energía e (en el eje vertical) en función de la distancia x (en el eje horizontal) se han definido al principio de esta página.

En este applet se elige el estado o nivel en el control selección situado a su izquierda titulado Estado, y a continuación se pulesa en el botón titulado Dibuja.

stokesApplet aparecerá en un explorador compatible con JDK 1.1.

disco.gif (1035 bytes) ArmonicoApplet1.java, MiCanvas.java