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;