Contents

ラゲール(Laguerre)の多項式

ラゲールの多項式は以下の通りです。

clear;close all;
figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,500,150]);
text(0,0.5,'$$L_n(x)=e^x\frac{d^n}{dx^n}\left(x^ne^{-x}\right)$$','interpreter','latex','FontSize',18);
axis off;

R2014b以降のSymboic Math Toolbox ver 6.1にはlaguerreLという関数が用意されています。

clear;close all;
seg=100;
x=linspace(-1,1,seg)*50;
figure('color',[1,1,1],'InvertHardCopy','off');
L=zeros(7+1,seg);
for n=0:3
    L(n+1,:)=laguerreL(n,x);
end;
plot(x,L);
title('Laguerre polynomials');

ラゲールの陪多項式

laguerre陪多項式は以下の式です。

clear;close all;
figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,500,150]);
text(0,0.5,'$$L_n^k(x)=\frac{d^k}{dx^k}\left(e^x\frac{d^n}{dx^n}\left(x^ne^{-x}\right)\right)$$','interpreter','latex','FontSize',18);
axis off;

残念ながらlaguerreL関数は陪多項式には対応していません。 式は簡単なので以下のような関数Mファイルを作成しました。 copy & pasteして、コメント解除をしてhns_laguerre.mという名前で保存してください。

% function L=hns_laguerre(n,x) %nは0~7まあでの次数 xはベクトル
% L=[];
% sz=size(x);
% if numel(sz)~=2;return;end;
% if prod(sz-[1,1])~=0;return;end;% ベクトルに限る
% if n-floor(n)~=0;return;end;%整数に限る
% x=x(:);
% % L=zeros(length(x),n+1);
% A=[];for nn=0:n;A=[x.^nn,A];end;
% L=A*B(C(n));
% if sz(1)==1;L=L';end;
% %%
% function R=B(k)
% n=length(k);
% kk=zeros(n,n);
% for m=1:n
%     kk(m,:)=k;
%     k=k.*[(n-1):-1:0];
%     k=[0,k(1:end-1)];
% end;
% R=kk';
% %%
% function R=C(n)
% if n==0;R=1;return;
% elseif n==1;R=[-1,1];return;
% end;
% L0=1;L1=[-1,1];
% for m=1:(n-1)
%     L2=[-1*L1,0]+(m*2+1)*[0,L1]-m^2*[0,0,L0];
%     L0=L1;
%     L1=L2;
% end;
% R=L2;
clear;close all;
seg=100;
x=linspace(-1,1,seg)*50;
for n=0:7
    L=hns_laguerre(n,x);
    for m=1:size(L,1)
        figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,300,300]);;
        plot(x,L(m,:));
        axis tight;grid on;
        title(sprintf('L_%d^%d',n,m-1));
    end;
end;

水素様原子の動径関数

水素様原子の動径関数は以下の通りです。 電子が2個以上になると互いに電気的に反発するので分布が変わります。互いの反発がないと仮定したときの起動です。

clear;close all;
figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,700,200]);
st1='$$a_0=0.529\times 10^{-10} [m]$$';
st2='$$R(r)=-\left(\frac{2}{na_0}\right)^{3/2}\sqrt{\frac{(n-l-1)!}{2n(n+l)!}}\exp\left(-\frac{r}{na_0}\right)r^lL_{n+l}^{2l+1}\left(\frac{2r}{na_0}\right)$$';
text(-0.1,0.75,st1,'interpreter','latex','FontSize',18);
text(-0.1,0.25,st2,'interpreter','latex','FontSize',18);
axis off;

グラフ表示します。

clear;close all;
a0=0.529*1e-10;
n=1;l=0;
seg=100;
r=linspace(0,1,seg)*4e-9;
for n=0:5
    R2=exp(-r/n/a0);
    for l=0:n
        if n-l-1<0;continue;end;
        L=hns_laguerre(n+l,2*r/n/a0);
        R1=-(2/n/a0)^1.5*sqrt(factorial(n-l-1)/2/n/factorial(n+l));
        R3=r.^l;
        R4=L(2*l+2,:);
        R=R1*R2.*R3.*R4;
        figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,300,300]);
        plot(r,R);grid on;
        set(gca,'position',[0.1,0.1,0.8,0.75]);
        st=sprintf('%d',n);
        switch l
            case 0;st=[st,'s'];
            case 1;st=[st,'p'];
            case 2;st=[st,'d'];
            case 4;st=[st,'f'];
            case 5;st=[st,'g'];
            case 6;st=[st,'h'];
        end;
        st=[st,sprintf(' R_%d^%d',n,l)];
        title(st,'FontSize',15);
    end;
end;

水素様原子の動径分布

電子の存在確立である動径分布は以下の式だそうです。

clear;close all;
figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,100,100]);
st1='$$r^2R(r)^2$$';
text(-0.1,0.5,st1,'interpreter','latex','FontSize',18);
axis off;

グラフにしました。

clear;close all;
a0=0.529*1e-10;
n=1;l=0;
seg=100;
r=linspace(0,1,seg)*4e-9;
for n=0:5
    R2=exp(-r/n/a0);
    for l=0:n
        if n-l-1<0;continue;end;
        L=hns_laguerre(n+l,2*r/n/a0);
        R1=-(2/n/a0)^1.5*sqrt(factorial(n-l-1)/2/n/factorial(n+l));
        R3=r.^l;
        R4=L(2*l+2,:);
        R=(R1*R2.*R3.*R4.*r).^2;
        figure('color',[1,1,1],'InvertHardCopy','off','position',[50,50,300,300]);
        plot(r,R);grid on;
        set(gca,'position',[0.1,0.1,0.8,0.75]);
        st=sprintf('%d',n);
        switch l
            case 0;st=[st,'s'];
            case 1;st=[st,'p'];
            case 2;st=[st,'d'];
            case 4;st=[st,'f'];
            case 5;st=[st,'g'];
            case 6;st=[st,'h'];
        end;
        st=[st,sprintf(' R_%d^%d',n,l)];
        title(st,'FontSize',15);
    end;
end;