LISTING PROGRAM

LAMPIRAN 2 LISTING PROGRAM

1. File AtomHidrogen.m

%> File <AtomHidrogen.m> merupakan menu untuk program-program %> beberapa sifat dari eigenstate atom H. %> File ini modifikasi dari <hatom.m> buatan %> © Goran Lindblad - [email protected]

close, clear, disp('> Selamat Datang Di <AtomHidrogen>!'); q1=1;

axis('off');axis([0 1 0 1]), t1=title('Program Atom Hidrogen'); set(t1,'FontSize',18);

ww = {'' ' Program ini menampilkan beberapa sifat atom hidrogen ' ' untuk state-state yang terbatas, menampilkan grafik' ' ketergantungan pada radial dan angular ' ' dan juga Efek Stark untuk eksitasi pertama.'};

text0([.15 .45 .75 .4], ww); rbutt([.15 .36 .35 .06],'Harmonik Bola','close,q=1;') rbutt([.15 .29 .35 .06],'Orbital Atom 3D','close,q=2;') rbutt([.15 .22 .35 .06],'Fungsi Gelombang Radial','close,q=3;') rbutt([.55 .36 .35 .06],'Orbital Atom 2D','close,q=4;') rbutt([.55 .29 .35 .06],'Efek Stark n=2','close,q=5;') bbutt([.55 .22 .35 .06],'BERHENTI','close,q=6;'), uiwait

if q==6 return; elseif q==2 FungsiAngular;return; elseif q==4 orbital; return; elseif q==5 EfekStark;return; elseif q==1 HarmonikBola;return; elseif q==3 FungsiRadial;return; end

end if q1==1 start;return elseif q1==2 AtomHidrogen; return end

disp('> Ketik AtomHidrogen untuk mengulangi!');

2. File bbutt.m

function h = bbutt(xy,ww,action) %> Ini adalah tombol biru standar %> Panggil: bbutt(xy,ww,action) %> Input: xy = position 4-vector [x1 y1 x2-x1 y2-y1] %> ww = text string, %> action = callback sebagai 'close' atau 'uiresume' uicontrol('Style','pushbutton','Units','normalized',...

'Position',xy,'String',ww,... 'BackGroundColor',[.0 .0 .9],'ForeGroundColor','w',... 'Fontsize',12,'Callback',action)

3.File edit1.m

function f=edit1(xy,string); %> file <edit1> mengijinkan kita untuk mengedit "string" %> Panggil q = edit1(xy, string) dimana %> xy = 4-vector memberikan posisi dan ukuran dari "window" %> string = string yang diedit. %> Bila kamu ingin sebuah "number", q=eval(q)

t0 = uicontrol('Style','edit','Units','normalized', ... 'BackgroundColor',[.9 .9 .9], ... 'Position',xy, 'String',string, ... 'Callback','uiresume');

uiwait;

f=get(t0,'String');delete(t0);

4. File FungsiAngular.m

%> <FungsiAngular.m> menampilkan ketergantungan harmonik bola terhadap angular %> dengan masukan bilangan kuantum momemtum angular L (= bilangan bulat tidak negatif). %> Besaran yang ditampilkan adalah %> nilai absolut dari bagian real dari fungsi. %> Menggunakan fungsi file <ylm.m> %> File ini modifikasi dari <angl.m> buatan %> © Goran Lindblad - [email protected] disp('> Selamat datang di <FungsiAngular>!'); clear; close;q=0;

q=1; str='[1,0]';

txt={' KETERGANTUNGAN HARMONIK BOLA PADA ANGULAR' '' ' Menampilkan ketergantungan harmonik bola pada angular.' '' ' Besaran yang ditampilkan adalah nilai absolut dari ' ' bagian real fungsi YLM(theta, phi).' '' '' ' Masukkan L dan M di kotak'}; txt={' KETERGANTUNGAN HARMONIK BOLA PADA ANGULAR' '' ' Menampilkan ketergantungan harmonik bola pada angular.' '' ' Besaran yang ditampilkan adalah nilai absolut dari ' ' bagian real fungsi YLM(theta, phi).' '' '' ' Masukkan L dan M di kotak'};

while q==1 L=Q(1);M=Q(2);

%%% Pengeplotan zz=0.8*[-1 1 -1 1 -1 1]; % mendefinisikan sumbu aksis grafik i %% Memilih kisi-kisi untuk grafik theta=pi*linspace(0,1,60); phi=2*pi*linspace(0,1,90); sph=ylm(L,cos(theta)); sph=sph(L+M+1,:); dd=abs(sph' * cos(M*phi)); norm=max(max(dd)); dd=dd/norm; X=dd.*(sin(theta)'*cos(phi)); Y=dd.*(sin(theta)'*sin(phi)); Z=dd.*(cos(theta)'*ones(size(phi)));

mesh(X,Y,Z),axis('off'),axis(zz),hold on,

l1=line([0,1.1],[0,0],[0,0]);set(l1,'LineWidth',2); l1=line([0,0],[0,1.1],[0,0]);set(l1,'LineWidth',2); l1=line([0,0],[0,0],[0,1.1]);set(l1,'LineWidth',2);

l1=text(2,0,-0.7,sprintf('L = %g',L)); set(l1,'FontName','palatino'); set(l1,'FontSize',18),

l1=text(2,0,-0.9,sprintf('M = %g',M)); set(l1,'FontName','palatino');set(l1,'FontSize',18),

l1=text(1.2,0,0,'x'); set(l1,'FontName','palatino');set(l1,'FontSize',12),

l1=text(0,1.2,0,'y'); set(l1,'FontName','palatino');set(l1,'FontSize',12),

l1=text(0,0,1.2,'z'); set(l1,'FontName','palatino');set(l1,'FontSize',12),

hold off, view([1,1 0.5]), title('Ketergantungan harmonik bola pada angular'), Lbutt(.75,.01);

rbutt([.45 .01 .15 .05],'L,M BARU ','uiresume; q=1;'), bbutt([.6 .01 .15 .05],'MENU','close; q=2;'), bbutt([.75 .01 .15 .05],'BERHENTI','close;q=0;'), uiwait;

if q==1 FungsiAngular; elseif q==2 if q==1 FungsiAngular; elseif q==2

5. File FungsiRadial.m

disp('> Selamat datang di <FungsiRadial>'); clear; close;

str='[1,0]'; txt={' FUNGSI GELOMBANG RADIAL' '' ' Fungsi gelombang radial didefinisikan dalam bentuk polinomial ' ' Laguerre dan dihitung dengan menggunakan algoritma dalam ' ' <radial1.m> dan <laguerre.m>. ' '' '' ' Masukkan n dan l di kotak'};

tt1=text0([.15 .45 .75 .4],txt); q=1;

ee = str; gbutt([.75 .01 .15 .05], 'LANJUT', 'uiresume'), ee=edit1([.7 .5 .2 .05],ee); Q=eval(ee); delete(tt1);

while q==1 figure(gcf); N=Q(1);L=Q(2); P='Plot fungsi radial untuk N = Q(1), L = Q(2)'; P=sprintf(strrep(P,'Q(1)','%g'),Q(1)); P=sprintf(strrep(P,'Q(2)','%g'),Q(2)); xmax=2+2*N*(N+1); x=linspace(0,xmax,300); y=radial1(N,L,x'); plot(x,y);axis('tight'), title(P);xlabel('Satuan dalam jari-jari Bohr');

Lbutt(.75,.01); P='Plot fungsi radial dikalikan r untuk N = Q(1), L = Q(2)'; P=sprintf(strrep(P,'Q(1)','%g'),Q(1)); P=sprintf(strrep(P,'Q(2)','%g'),Q(2)); y=(x'.*ones).*y; plot(y), axis('tight'), title(P);xlabel('Satuan dalam jari-jari Bohr');

Lbutt(.75,.01); P='Kerapatan probabilitas radial untuk N = Q(1), L = Q(2)'; P=sprintf(strrep(P,'Q(1)','%g'),Q(1)); P=sprintf(strrep(P,'Q(2)','%g'),Q(2)); plot(x,y.^2), axis('tight'), title(P);xlabel('Satuan dalam jari-jari Bohr')

Lbutt(.75,.01); rbutt([.45 .01 .15 .05],'N,L BARU','uiresume; q=1;'); Lbutt(.75,.01); rbutt([.45 .01 .15 .05],'N,L BARU','uiresume; q=1;');

if q==1 FungsiRadial; elseif q==2 clear; AtomHidrogen; return;

end end

disp('> Ketik <FungsiRadial> untuk mengulangi!');

6. File orbital.m

%> File <orbital.m> menampilkan orbital hidrogen dengan %> bilangan kuantum [N,L,M]. %> File ini menghitung nilai (real), dengan tanda, dari %> orbital H dengan bilangan kuantum N,L,M (0 <= M <= L <= N-1) %> untuk phi = 0 dan amplitudo digambar dalam color map. clear; close; disp('> Selamat datang di <orbital>'); str='[1,0,0]';

txt={' ORBITAL HIDROGEN ' '' ' File ini menampilkan bentuk geometri atom hidrogen.' ' Penggambaranya dalam color map dari amplitudo, dengan skala ' ' yang tidak linier untuk amplitudo yang bertujuan untuk memperoleh ' ' kontras yang lebih baik untuk orbital yang berbeda.' ' Fungsi gelombang dengan bilangan kuantum standar' ' [N,L,M], N > L >= M .' '' '' '' ' Tulis [N,L,M] pada kotak >> ' };

tt1=text0([.15 .45 .75 .4],txt); % title(' Orbital Hidrogen'), q=1;

ee = str; gbutt([.75 .01 .15 .05], 'LANJUT', 'uiresume'), ee=edit1([.7 .5 .2 .05],ee); Q=eval(ee); delete(tt1);

if isempty(Q) Q=[1,0,0]; elseif length(Q)~=3 Q=[max(Q),0,0] elseif Q(1)<=Q(2); Q=[Q(2)+1,Q(2),0]; elseif Q(2) < abs(Q(3)) Q=[Q(1),Q(2),Q(2)] if isempty(Q) Q=[1,0,0]; elseif length(Q)~=3 Q=[max(Q),0,0] elseif Q(1)<=Q(2); Q=[Q(2)+1,Q(2),0]; elseif Q(2) < abs(Q(3)) Q=[Q(1),Q(2),Q(2)]

while q == 1

Q(3)=abs(Q(3)); P='Amplitudo kuadran pertama untuk N = Q(1), L = Q(2), M = Q(3), satuan dalam jari-jari Bohr'; P=sprintf(strrep(P,'Q(1)','%g'),Q(1)); P=sprintf(strrep(P,'Q(2)','%g'),Q(2)); P=sprintf(strrep(P,'Q(3)','%g'),Q(3)); % disp(P);

figure(gcf); N=Q(1);L=Q(2);M=abs(Q(3)); scale =1.1*(2*N*(N+1) - 0.5*L*(L+1) + 0.2*M*(M+1) + 4); x=linspace(-scale,scale,100); y=x; w=hydrogen(N,L,M,x,y); mm=max(max(abs(w))); w=30*w./mm; %pengskalaan dapat dirubah untuk penyesuaian. w=asinh(w); % membuat skala untuk logaritma amplitudo, dengan tanda! surf(x,y,w); axis('tight'); axis('equal'); colormap(jet); view(2);% view([1,-1,3]); shading interp;%colorbar; % xlabel(P); % title('Amplitudo orbital hidrogen, skala panjang dalam satuan jari-jari Bohr'); title(P), xlabel('Koordinat Radial'), ylabel('Koordinat Z');

gbutt([.75 .01 .15 .05], 'LALUI', 'uiresume; q=2'), tt2=text0([.3 .85 .6 .05],'Pilih nilai baru [N,L,M] >> '); ee=edit1([.7 .85 .2 .05],ee); Q=eval(ee);delete(tt2);

end Lbutt(.75,.01);

rbutt([.45 .01 .15 .05],'ULANG ','uiresume; q=1;'); bbutt([.6 .01 .15 .05],'MENU','close; q=2;'); bbutt([.75 .01 .15 .05],'BERHENTI','close;q=0;'); uiwait;

if q==1 orbital; elseif q==2 clear; AtomHidrogen; return;

end

disp('> Ketik <orbital> untuk orbital yang lain!');

7. File gbutt.m

function h = gbutt(xy,ww,action) %> Ini adalah tombol hijau standar %> Panggil: gbutt(xy,ww,action)

%> Input: xy = position 4-vector [x1 y1 x2-x1 y2-y1] %> ww = text string, %> action = callback sebagai 'close' atau 'uiresume'

uicontrol('Style','pushbutton','Units','normalized',... 'Position',xy,'String',ww,... 'BackGroundColor',[.0 .7 .0],'ForeGroundColor','w',... 'Fontsize',12,'Callback',action)

8. File HarmonikBola.m

disp('> Selamat datang di <HarmonikBola>!'); clear; close;q=0; q=1;

txt={' HARMONIK BOLA' '' ' Harmonik bola didefinisikan dalam bentuk ' ' fungsi Legendre terasosiasi.' '' ' Algoritma menghitung fungsi Legendre adalah ' ' komponen standar dari MATLAB.' '' ' Masukkan bilangan bulat positif L di kotak'}; tt1=text0([.15 .45 .75 .35], txt);

str='3'; gbutt([.75 .01 .15 .05], 'LANJUT','uiresume'), ee=edit1([.75 .45 .15 .05],str); L =eval(ee);delete(tt1);

while q==1 %%%%%%% Masukan

x=linspace(0,1); y1=ylm(L,x); plot(x,y1); xy=axis; title(sprintf('Harmonik bola dari derajat L = %g',L)); xlabel('cos(theta) dalam (0,1), ketika phi = 0!'); str='Harmonik bola Y(L,M)'; str1=sprintf(strrep(str,'L','%g'),L); Lbutt(.75,.01);

for n=1:L+1

l1=plot(x,y1(n,:)); axis(xy); set(l1,'LineWidth',2); str2=sprintf(strrep(str1,'M','%g'),n-1); title(str2); xlabel('cos(theta) dalam (0,1), ketika phi = 0!');

Lbutt(.75,.01);

end end

drawnow; X=linspace(0,2*pi,200); y1=ylm(L,cos(X));

str='Harmonik bola Y(L,M), plot kuadrat amplitudo dalam diagram polar '; str1=sprintf(strrep(str,'L','%g'),L);

for n=1:L+1

y2=y1(L+n,:).^2; yy=y2.*cos(X); xx=y2.*sin(X); l1= plot(xx,yy);axis('off');set(l1,'LineWidth',2); axis('equal');xy=axis; xmax=max(xy); l1=line([0,0],1.1*[-xmax,xmax]); set(l1,'LineWidth',3); set(l1,'Color','r');

str2=sprintf(strrep(str1,'M','%g'),n-1); title(str2);

l1=text(0.1*xmax, 1.05*xmax, 'z');

set(l1,'FontName','palatino'); set(l1,'FontSize',18);%set(l1,'Color','Black'); drawnow; Lbutt(.75,.01);

end % dari iterasi dalam n

rbutt([0.45 .01 .15 0.05],'ULANG','uiresume; q=1;'); bbutt([0.6 .01 .15 0.05],'MENU','close, q=2;'); bbutt([0.75 .01 .15 0.05],'BERHENTI','close, q=0'); uiwait;

if q==1 HarmonikBola; elseif q==2 clear; AtomHidrogen; return;

end end disp('> Ketik <HarmonikBola> untuk mengulangi!');

9. File Hydrogen.m

function f=hydrogen(N,L,M,x,y); %> file <hydrogen.m> menghitung amplitudo dari fungsieigen %> dari atom hidrogen. Amplitudo dinormalisasi dengan sebuah extra %> factor = sqrt(sin(theta)*radius^2) (berkorespondensi ke factor %> sin(theta)*r^2 pada elemen integrasi)

%> Panggil: hydrogen(N,L,M,x,y) %> Input: N,L,M integers, 0 ¾ M ¾ L ¾ N-1 %> x,y = vector-vector baris, Bohr radius units, %> Output: sebuah matrix dari amplitudo real dalam bidang \phi = 0, %> [x,y] = r[cos(\theta) , sin(\theta)] %>

unix=ones(size(x)); uniy=ones(size(y));

rr=(x.^2)'*uniy + unix'*y.^2 + eps; rr=sqrt(rr); cos=(x'*uniy)./rr; rr=2*rr./N; k=2*L+1; p=N-L-1; norm=2*sqrt(fact(N-L-1)/fact(N+L))/N^2; mm=exp(-0.5*rr); mm=mm.*(rr.^L);% % mm=mm.*sqrt(rr.*(unix'*y)+eps);ini adalah normalisasi extra mm=norm*mm.*laguerre(k,p,rr); mm=mm.*yl(L,M,cos);

f=mm;

10. File laguerre.m

function f=laguerre(k,n,x); %> file <laguerre.m> menghitung niali-nilai dari %> polinomial Laguerre. %> Panggil: laguerre(k,n,x), %> Input: k = real, n = non-negative integer, x = matrix dari nilai-nilai. %> Output: sebuah matrix dari dimensi sama seperti x. %> Referensi: HMF Ch 22. x1=ones(size(x));

if n==0 w3=x1;

elseif n==1

w3=k+1-x;

else

w1=x1; w2=k+1-x;

for r=2:n

w3=2*w2-w1+((k-1-x).*w2 - (k-1)*w1)/r;

w1=w2; w2=w3;

end

end end

11. File Lbutt.m

function h = Lbutt(x,y) %> Ini adalah tombol standar "LANJUT" dengan %> panjang = .15 dan tinggi = .05. %> Panggil: Lbutt(x,y) %> Input: x, y = posisi sudut kiri lebih rendah %> callback adalah 'uiresume'.

uicontrol('Style','pushbutton','Units','normalized',... 'Position',[x,y,.15, .05],'String','LANJUT',... 'BackGroundColor',[.0 .7 .0],'ForeGroundColor','w',... 'Fontsize',10,'Callback','uiresume'); uiwait;

11. File obutt.m

function h = obutt; %> file <obutt.m> memberikan sebuah tombol abu-abu tanpa fungsi %> pada sebuah posisi yang belum terdefinisi pada tombol dari figure. %> Panggil: obutt uicontrol('Style','pushbutton','Units','normalized',...

'Position',[.15 .01 .75 .05],'BackGroundColor',[.8 .8 .8])

12. File radial1.m

function f=radial1(N,L,x); %> File ini menghitung fungsi radial untuk atom hidrogen %> dalam satuan atomik, untuk range dari angular momenta. %> Panggil: radial(n,x), %> Input: n = positive integer, x = column vector. %> Output: sebuah matrix dari n baris berhubungan dengan L = 0,...,n-1, %> kolom dari size x. y=2*x./N; z=exp(-0.5*y);

w=[]; k=2*L+1; p=N-L-1; norm=2*sqrt(prod(1:N-L-1)/prod(1:N+L))/N^2; w=[w,norm*(y.^L).*z.*laguerre(k,p,y)];

f=w;

13. File rbutt.m

function h = rbutt(xy,ww,action) %> Ini adalah tombol merah standar %> Panggil: rbutt(xy,ww,action) %> Input: xy = posisi 4-vector [x1 y1 x2-x1 y2-y1] %> ww = text string, %> action = callback sebagai 'close' atau 'uiresume' function h = rbutt(xy,ww,action) %> Ini adalah tombol merah standar %> Panggil: rbutt(xy,ww,action) %> Input: xy = posisi 4-vector [x1 y1 x2-x1 y2-y1] %> ww = text string, %> action = callback sebagai 'close' atau 'uiresume'

'Fontsize',12,'Callback',action)

14. File text0.m

function f = text0(xy,ww) %> Panggil f=text0(xy,'string'); %> dimana x adalah 4 - vector [x0 y0 dx dy]; %> ww adalah 'string' dalam 'cell array' . f=uicontrol('Style','text','Units','normalized','FontSize',12,... 'String',ww, 'HorizontalAlignment','left','Position',xy,... 'BackgroundColor',[.93 .93 .93]);

15. File yl.m

function f=yl(L,M,x); %> Panggil f=yl(L,M,x) %> Input: 0 <= M <= L integers, x = matrix, values in [-1,1]; %> Output: yl(L,M,x) = matrix size(x). %> Menghitung harmonik bola YLM(cos theta) = yl(L,M,x) %> kecuali faktor bergantung-phi (phi = 0). %> Ylm = yl(L,M,x).*exp(i*M*phi)); %>

norm=((-1).^M).*sqrt((2*L+1).*fact(L-M)./(fact(L+M)*4*pi)); f=norm*legf(L,M,x);

16. File legf.m

function f=legf(L,M,x); %> file <legf.m> menghitung legendre(L,M,x), %> fungsi legendre terasosiasi sebagaimana yang didefinisikan dalam HMF atau Messiah. %> Panggil: legf(L,M,x), %> Input: L,M = integers, 0 <= M <= L, %> x = matrix dari dimensi yang berubah-ubah, nilai-nilai dalam (-1,1). %> Output: sebuah matrix yang berdimensi sama dengan x. %>

p0=[1]; p1=[1,0];

if L==0;

f=ones(size(x)); return

elseif L==1;

if M==1 f=sqrt(1-x.^2); if M==1 f=sqrt(1-x.^2);

end

for n=1:L-1

p=((2*n+1)/(n+1))*[p1,0]-(n/(n+1))*[0,0,p0]; p0=p1;p1=p;

end

nn=[0:L-M]; pp=p(1:L-M+1); nn=fact(L-nn)./fact(L-M-nn); pp=pp.*nn;

w=polyval(pp,x);

w=((1-x.^2).^(0.5*M)).*w;

f=w;

17. File fact.m

function f=fact(x); %> file <fact.m> menghitung faktorial-faktorial fact(x) dari %> sebuah matrix dengan masukan integer, men-set tak hingga untuk nilai-nilai negatif. %> Panggil: fact(X) %> Input: X = vector dari matrix, nilai-nilai integer %> Output: sebuah vector atau matrix dari ukuran yang sama. %> Bandingkan fungsi gamma standar matlab dari MATLAB. %> Kita ingin menjauhi semua keluaran NaN!!! %>

maxx=max(max(x));

y=zeros(size(x));

% iterasi the faculty untuk elemen-elemen dari nilai 1,2,...,maxx.

for n=0:maxx-1

z=~(x - maxx + n);

y=y+z; y=(maxx-n)*y;

end

z=~x; % sekarang berurusan dengan argumen-argumen nol, jawabannya 1.

y=y+z;

% sekarang berurusan dengan semua semua elemen matrix yang tersisa -

% argumen-argumen adalah negatif, jawabannya harus tak hingga- % set setiap elemen matrix terpisah

w=~y; [w1,w2]=find(w); nn=length(w1);

for m=1:nn y(w1(m),w2(m))=inf;

end f=y;

18. File EfekStark.m

%> File <EfekStark.m> menampilkan orbital hidrogen %> dalam medan listrik untuk eksitasi pertama.

disp('> Selamat datang di <starkeffect>'); clear; close;q=0; q=1;

txt={' EFEK STARK ' '' ' File ini menampilkan bentuk geometri atom hidrogen ' ' dalam medan listrik (efek Stark) untuk eksitasi pertama.' ' Penggambaranya dalam color map dari kuadrat amplitudo.' ' Juga ditampilkan plot probabilitas radial.' };

tt1=text0([.15 .45 .75 .4],txt);

Lbutt(.75,.01); delete(tt1);

figure(gcf);

N1=2;L1=0;M1=0; N2=2;L2=1;M2=0; scale =1.1*(2*N1*(N1+1) - 0.5*L1*(L1+1) + 0.2*M1*(M1+1) + 4); x=linspace(-scale,scale,100); y=x; w1=hydrogen(N1,L1,M1,x,y); w2=hydrogen(N2,L2,M2,x,y); mm1=max(max(abs(w1))); mm2=max(max(abs(w2))); w1=30*w1./mm1; w2=30*w2./mm2; w=(1/sqrt(2))*(asinh(w1)-asinh(w2)); surf(x,y,w); axis('tight'); axis('equal'); colormap(jet); view(2);% view([1,-1,3]); shading interp;%colorbar; xlabel('Koordinat Radial'), ylabel('Koordinat Z'); title('Plot Kuadrat Amplitudo (( \Psi200 - \Psi210 )/2^1^/^2)^2 ');

Lbutt(.75,.01); %plot radial Lbutt(.75,.01); %plot radial

r1=1/a0 * [0:0.01:10]; psi_20=((1/(2*a0))^1.5) * (2-r1).*exp(-r1/2); psi_21=(1/sqrt(3))*((1/(2*a0))^1.5)*r1.*exp(-r1/2); psi_2=(1/sqrt(2))*(psi_20 - psi_21);

plot(r, psi_1.^2, r1, psi_2.^2); grid on; xlabel('Koordinat Z (dalam jari-jari Bohr)'); title('Probabilitas Radial ( \Psi200 - \Psi210 )^2 ');

Lbutt(.75,.01); w=(1/sqrt(2))*(asinh(w1)+asinh(w2)); surf(x,y,w); axis('tight'); axis('equal'); colormap(jet); view(2);% view([1,-1,3]); shading interp;%colorbar; xlabel('Koordinat Radial'), ylabel('Koordinat Z'); title('Plot Kuadrat Amplitudo (( \Psi200 + \Psi210 )/2^1^/^2)^2 ');

Lbutt(.75,.01); %plot radial r=1/a0 * [-10:0.01:0]; psi_20=((1/(2*a0))^1.5) * (2+r).*exp(r/2); psi_21=(1/sqrt(3))*((1/(2*a0))^1.5)*r.*exp(r/2); psi_1=(1/sqrt(2))*(psi_20 + psi_21);

r1=1/a0 * [0:0.01:10]; psi_20=((1/(2*a0))^1.5) * (2-r1).*exp(-r1/2); psi_21=(1/sqrt(3))*((1/(2*a0))^1.5)*r1.*exp(-r1/2); psi_2=(1/sqrt(2))*(psi_20 + psi_21);

plot(r, psi_1.^2, r1, psi_2.^2); grid on; xlabel('Koordinat Z (dalam jari-jari Bohr)'); title('Probabilitas Radial ( \Psi200 + \Psi210 )^2 ');

Lbutt(.75,.01); rbutt([.45 .01 .15 .05],'ULANG ','uiresume; q=1;'); bbutt([.6 .01 .15 .05],'MENU','close; q=2;'); bbutt([.75 .01 .15 .05],'BERHENTI','close;q=0;'); uiwait;

if q==1

EfekStark;

elseif q==2

clear; AtomHidrogen; return; clear; AtomHidrogen; return;

disp('> Ketik <EfekStark> untuk mengulangi');

19. File ylm.m

function f=ylm(L,x); %> Panggil f= ylm(L,x) %> Input: L = non-negative integer %> x = row vector with values in [-1,1]. %> Output: ylm(L,x) = matrix of dimension (2*L+1) x length(x). %> Menghitung harmonik bola untuk %> m = -L,..,L, kecuali faktor bergantung-phi. %> Ylm = ylm.*exp(i*m*phi); m=[-L:L]'. %>

mm=[0:L]'; y=sqrt((2*L+1).*fact(L-mm)./fact(L+mm)/4/pi); y=legendre(L,x).*(y*ones(size(x))); %size(y) y1=y(2:L+1,:); y1=(cos([1:L]'*pi)*ones(size(x))).*y1; y=flipud(y); y=[y;y1];

f=y;