La Ecuación de Schrödinger independiente del tiempo

Darío Mitnik




Método de Shooting (Predictor)



La base de este método consiste en partir de cierta condición inicial, y propagar la solución hasta un radio determinado. Se discretizan la función y sus derivadas, escribiendo la derivada primera de una función Y(i) (o sea, la función Y valuada en el punto i):

	
	DY(i) = ( Y(i+1) - Y(i) ) / Dx       
	


Donde Dx es el ancho del intervalo ( Dx = x(i+1) - x(i) ).
Del mismo modo, derivando una vez mas, la derivada segunda se escribe:

	
	D2Y(i) = ( Y(i+1) + Y(i-1) - 2Y(i) ) / (Dx)**2       
	



Aquí presentamos un ejemplo simple de un potencial Woods-Saxon, resuelto con este método. El Notebook para Mathematica, se puede bajar de numerov.nb.


[Graphics:Numerovmath/numerov_gr_1.gif]

[Graphics:Numerovmath/numerov_gr_2.gif]


[Graphics:Numerovmath/numerov_gr_3.gif]

[Graphics:Numerovmath/numerov_gr_4.gif]
[Graphics:Numerovmath/numerov_gr_5.gif]

[Graphics:Numerovmath/numerov_gr_6.gif]


[Graphics:Numerovmath/numerov_gr_7.gif]

[Graphics:Numerovmath/numerov_gr_8.gif]
[Graphics:Numerovmath/numerov_gr_9.gif]

[Graphics:Numerovmath/numerov_gr_10.gif]


[Graphics:Numerovmath/numerov_gr_11.gif]

[Graphics:Numerovmath/numerov_gr_12.gif]


Implementaremos éste método para resolver el problema de un pozo finito, de ancho D y altura V0, usando el programa schro.for:


	program schrodinger

c...... Solves the time-independent Schrodinger equation 
c...... for a potential box. Uses simple finite differences

c	by Dario Mitnik

	implicit real*8(a-h,o-z)


c....... initial values
	print*,' give the number of grid points'
	read*,npts
c.......   Potential Box
	print*,' give the size D of the potential box (-D/2 to D/2)'
	read*,d
	print*,' give the depth V0 of the potential well'
	read*,V0
c......... Initial Points
	print*,' give the initial value of the wavefunction P(0) '
	read*,p00
	print*,' give the initial value of the derivative at 0 Y(0) '
	read*,y00


100	open(unit=10,file='wave.dat',status='unknown')
	print*,' guess initial energy value'
	read*,Ener
	p0 = p00
	y0 = y00
	
c...... Other values
	dx = D/(2*npts)
c...... initial point P(1)
	p1 = p0 + dx*y0
	write(10,55) dx-dx,p0
	write(10,55) dx,p1
55	format(2(1x,1pg14.4))

c...... Solving the Schrodinger Equation
	do 200 i=2,npts*15
		V = V0
		if (i*dx.le.D/2) V = 0.0
		p = (2.0 + dx*dx*(V-Ener))*p1 - p0
		write(10,55) dx*i,p
		p0 = p1
		p1 = p
200	continue
		
	close(unit=10,status='keep')

	print*,' Continue?  No=0'
	read*,icont
	if (icont.ne.0) go to 100

	stop
	end



Tal como se puede ver en el listado del programa, este requiere los datos del pozo (ancho D y altura V0), y los datos iniciales de la función de onda. Luego se deben ingresar distintos valores de la energía (es lo que debemos hallar!), e ir variando éstos hasta que la solución converja a un resultado adecuado. Inicialmente el programa utiliza los valores de la función en los dos primeros puntos (P0 y P0), y calcula el valor para el tercer punto (P). Luego, utilizando los puntos 2 y 3, calcula el valor para el punto 4, y así sucesivamente. En el gráfico siguiente, podemos ver un ejemplo del uso de este programa, y como se ven las soluciones, adivinando diferentes valores de la energía:


Ejercicios:

  • Compilar y ejecutar el programa, revisar si las soluciones dadas son correctas, y si hay algún error en el programa, modificarlo hasta que dé resultados adecuados!.
  • Graficar los resultados
  • Cuántos estados ligados hay?
  • Aumentar progresivamente la profundidad del pozo de potencial, hasta encontrar más estados ligados:
    a) Qué ocurre con las energías?
    b) Qué ocurre con el número de nodos?
  • Aumentar progresivamente el ancho del pozo de potencial:
    a) Cómo cambian las funciones de onda?
    b) Qué ocurre con las energías?
    c) Se puede determinar la profundidad del pozo conociendo sólo la energía del estado básico? Demostrarlo
  • Analizar la paridad de las funciones obtenidas
  • Modificar el programa de manera que se puedan ingresar los
  • Modificar el programa y solucionar la ecuación de Schrödinger para otro potencial
  • Comparar (graficando) los resultados con los resultados analíticos
  • Implementar un algoritmo tal que el programa encuentre por sí mismo las energías correctas de los estados ligados
  • (Solucion: tratar de no ver el programa numerovbound.for).


    Método Predictor-Corrector

    En este método no sólo se propaga la solución en "sentido saliente", sino que luego se calcula otra solución "entrante" y se las compara.
    El programa numerovbound.for ilustra el funcionamiento del método:


    Ejercicios:

  • Escribir un programa para calcular las funciones de onda del átomo de hidrógeno.
  • (Solucion: tratar de no ver el programa hydronumer.for)
  • Escribir un programa para calcular las funciones de onda del átomo de hidrógeno, pero en este caso, las energías no son datos:
  • 	
    c-------finding the energy using the Ridley Method
    c.......E.C. Ridley, Proc. Cambridge Phil. Soc. 51, 702 (1955).
    
    c	Delta E = ( logderiv(inwd) - logderiv(outw) )
    c		  -----------------------------------
    c		  ( Intgrl(inwd^2) + Intgrl(outw^2) )
    c		    --------------   --------------
    c		        inwd^2           outw^2
    
    c	logderiv(outw) = F'/F at r=rmatch
    c	logderiv(inwd) = G'/G at r=rmatch
    c	Intgrl(outw^2) = Int_{0}^{rmatch}{F^2}
    c	Intgrl(inwd^2) = Int_{rmatch}^{rmax}{G^2}
    c	F is the outward solution and G is the inward solution