Построение волновых функций для атома и молекулы, используя пакет аналитических вычислений Maple
Заметим сразу, что данные функции являются ортонормированными > int(evalc( Phi* conjugate(Phi) ), phi=0 2*Pi);
и, поэтому, мы просто не будем учитывать этот множитель далее при вычислении полной волновой функции. Продолжая изучение угловой части полной собственной функции, введем полиномы Лежандра , используя обобщенную формулу Родрига
Ø P:=(l,x)->if l<>0 then 1/(2^l*l!)*diff((x^2-1)^l,x$l) else 1 fi;
С точки зрения программиста мы написали процедуру с именем P(l,x) , которая зависит от двух аргументов l и x . С другой стороны, мы могли бы использовать встроенную процедуру из пакета orthopoly для определения этих полиномов. Для примера, посмотрим, как выглядит один из полиномов Лежандра > collect(P(5,x),x);
Присоединенные полиномы Лежандра первого рода определяются аналогичным образом > P1:=(l,m,x) -> if m=0 then P(l,x) else (1-x^2)^(m/2)*diff(P(l,x),x$m) fi: Введем стандартную замену аргумента и зададим необходимую нормировку для сферических гармоник > Theta:=d->sqrt((2*l+1)*(l-m)!/(l+m)!)*subs(d=cos(theta),P1(l,m,d));
Теперь определим сферические гармоники > Y:=d->Theta(d)*Phi: которые являются комплексными функциями. Для примера построим графики вещественной и мнимой частей сферических гармоник > with (plots): Warning, the name changecoords has been redefined > l:=3:m:=1: sphereplot(Re(Y(d)),phi=0 2*Pi,theta=0 Pi,scaling=constrained, grid=[15,100],axes=framed,title=`Вещественная часть при l=3, m=1`);
> l:=4: m=0: sphereplot(Im(Y(d)),phi=0 2*Pi,theta=0 Pi,scaling=constrained, grid=[15,100],axes=framed,title=`Мнимая часть при l=4, m=0`);
Вычислим квадрат нормы присоединенной функции Лежандра, т.е. | |^2 , для одной из гармоник, например при . Напомним, что это характеризует вероятность нахождения электрона в атоме водорода. > l:=3: m:=1: sphereplot((Theta(d)^2),phi=Pi/2 2*Pi,theta=0 Pi, scaling=constrained,grid=[15,100],axes=framed, title=`Квадрат нормы угловой части при l=3, m=1`);
и ее проекцию на плоскость > polarplot(Theta(d)^2,theta=0 2*Pi,scaling=constrained, title=`Проекция на плоскость xy`);
Радиальная часть волновой функции Перейдем к построению радиальной части волновой функции . Определим полиномы Лаггера по формуле Родрига > L:=(j,k,x)->if j<>0 then 1/j!*exp(x)/x^k*diff(x^(j+k)*exp(-x),x$j) else 1 fi;
Заметим, что мы используем математическое определение (см. справочник Бейтмена и Эрдейи), которое нормировками отличается от определения, данного в книге Ландау и Лифшица. Именно это определение совпадает со встроенной процедурой > simplify(L(3,2,x));
> simplify(L[orthopoly](3,2,x));
Радиальная часть волновой функции (присоединенная функция Лаггера) равна > Ru:=(n,l,x)->x^l*exp(-x/2)*L(n-l-1,2*l+1,x): Посмотрим, как выглядит эта функция при частных значениях параметров > n:=4: l:=2: simplify(Ru(n,l,x));
Зададим необходимую нормировку радиальных функций и определим стандартную подстановку аргумента ,где - координата и - -боровский радиус: > n:='n':l:='l':r:='r': R:=x->sqrt(4*(n-l-1)!/(n+l)!/(a^3*n^4))*simplify(subs(x=2*r/(n*a),Ru(n,l,x)));
Построим график квадрата нормы радиальной части волновой функции, при . Напомним, что квадрат нормы воновой функции характеризует вероятность нахождения электрона в данной области > a:=1: n:=3: l:=1: plot((r*R(d))^2,r=0 30,title=`Квадрат нормы радиальной части при n=3, l=1`);