Aplikasi Metode Beda Hingga Pada Persamaan Schrödinger Menggunakan Matlab
Lampiran 1. Kode Pemrograman Visualisasi gelombang pada partikel dengan potensial halang
clc L=Str2num(get(handles.edit1, 'String' )); Ni=Str2num(get(handles.edit2, 'String' )); ni=Str2num(get(handles.edit6, 'String' )); m=Str2num(get(handles.edit5, 'String' )); ii=Str2num(get(handles.edit9, 'String' )); N=Ni; h=L/(N+1); set(handles.edit3, 'String' ,h); hplank=6.628*10^-34; omega=8.45*10^20; Vh=0.5*m*omega^2*h^2; Eni=5.6*10^-13*(ni+0.5); set(handles.edit4, 'string' ,Vh); set(handles.edit7, 'String' ,Eni); k2=(2*m*(Vh-Eni)/hplank^2)^0.5; k1=(2*m*(Eni)/hplank^2)^0.5; Ai=2; x1=linspace(-L,0,200); xxx=linspace(0,L,(N+2)); x3=linspace(L,2*L,200); R=(sin(k2*L))/(sin(k2*L)^2+(4*k1^2*k2^2/(k1^2-k2^2)^2)); Bi=(R*Ai^2)^0.5; Psi1=Ai*exp(i*k1*x1)+Bi*exp(-i*k1*x1); alpha=Ai*exp(i*k1*0)+Bi*exp(-i*k1*0);
if Eni<Vh
QQi=Ai+Bi; Psi2i=QQi*exp(-k2*xxx); beta=QQi*exp(-k2*L); Fi=beta/(exp(i*k1*2*L)); Psi3=Fi*exp(i*k1*x3);
% Psi Analatik
n=N;
%Membuat Matriks A Berdiagonal Sesuai Penyelesaian Finit Beda Hingga for ii=1:n
A(ii,ii)=(2+h^2*((k2)^2));
end for ii=1:n-1
A(ii,ii+1)=-1;
end for ii=2:n
A(ii,ii-1)=-1;
end % Penyusunan Vektor berdiri b
b(1,1)=alpha;
for ii=2:n-1
b(ii,1)=0;
end
b(n,1)=beta;
%Kalibrasi b kedalam A for ii=1:n
A(ii,n+1)=b(ii,1);
end for j=1:(n-1) % mulai proses pivot if (A(j,j)==0) for p=1:n+1 u=A(j,p); v=A(j+1,p); A(j+1,p)=u; A(j,p)=v;
end end %akhir proses pivot
jj=j+1;
for ii=jj:n
m=A(ii,j)/A(j,j);
for k=1:(n+1)
A(ii,k)=A(ii,k)-(m*A(j,k));
end end end %Proses Substitusi mundur
x(n,1)=A(n,n+1)/A(n,n);
for ii=n-1:-1:1
S=0;
for j=n:-1:ii+1
S=S+A(ii,j)*x(j,1);
end
x(ii,1)=(A(ii,n+1)-S)/A(ii,ii);
end %Menampilkan Vektor ww
ww=zeros(1,n+2); ww(1,1)=real(alpha); ww(1,N+2)=real(beta);
for uu=2:N+1
ww(:,uu)=real(x(uu-1,:))';
end
P=zeros(1,2*N); Pi=zeros(1,2*N); NN=N+2;
for oo=1:2:2*NN;
P(:,oo)=(xxx((oo+1)/2));
end for ooo=2:2:2*NN;
P(:,ooo)=(xxx(ooo/2));
end for oooo=1:4:2*NN;
Pi(:,oooo)=10;
end for ooooo=2:4:2*NN;
Pi(:,ooooo)=-10;
end for oooooo=3:4:2*NN;
Pi(:,oooooo)=-10;
end for ooooooo=4:4:2*NN;
Pi(:,ooooooo)=10;
end
format long e Transposex=xxx'; TranposePsi2=ww'; Tampil=[Transposex TranposePsi2 real(Psi2i)'] plot(P,Pi, 'g' ,x1,real(Psi1),xxx,ww, 'r' ,x3,real(Psi3)); axis([-L 2*L -8 8])
else
C=(alpha/2)+((i*k1/(2*k2))*(Ai-Bi)); D=(alpha/2)-((i*k1/(2*k2))*(Ai-Bi));
Psi2=C*exp(k2*xxx)+D*exp(-k2*xxx); real(C) real(D) yyy=C*exp(k2*(0+h))+D*exp(-k2*(0+h)) beta=C*exp(k2*L)+D*exp(-k2*L); Fi=beta/(exp(i*k1*L)); Psi3=Fi*exp(i*k1*x3);
x(n,1)=A(n,n+1)/A(n,n);
jj=j+1;
for ii=jj:n
m=A(ii,j)/A(j,j);
for k=1:(n+1)
A(ii,k)=A(ii,k)-(m*A(j,k));
end end end %Proses Substitusi mundur
for ii=n-1:-1:1
u=A(j,p); v=A(j+1,p); A(j+1,p)=u; A(j,p)=v;
S=0;
for j=n:-1:ii+1
S=S+A(ii,j)*x(j,1);
end
x(ii,1)=(A(ii,n+1)-S)/A(ii,ii);
end %Menampilkan Vektor ww
end end %akhir proses pivot
end for j=1:(n-1) % mulai proses pivot if (A(j,j)==0) for p=1:n+1
% Psi Analatik
A(ii,ii-1)=-1;
n=N;
%Membuat Matriks A Berdiagonal Sesuai Penyelesaian Finit Beda Hingga for ii=1:n
A(ii,ii)=(2+h^2*((k2)^2));
end for ii=1:n-1
A(ii,ii+1)=-1;
end for ii=2:n
end % Penyusunan Vektor berdiri b
A(ii,n+1)=b(ii,1);
b(1,1)=alpha;
for ii=2:n-1
b(ii,1)=0;
end
b(n,1)=beta;
%Kalibrasi b kedalam A for ii=1:n
ww=zeros(1,n+2); ww(1,1)=real(alpha); ww(1,N+2)=real(beta); for uu=2:N+1
ww(:,uu)=real(x(uu-1,:))';
end
P=zeros(1,2*N); Pi=zeros(1,2*N); NN=N+2;
for oo=1:2:2*NN;
P(:,oo)=(xxx((oo+1)/2));
end for ooo=2:2:2*NN;
P(:,ooo)=(xxx(ooo/2));
end for oooo=1:4:2*NN;
Pi(:,oooo)=10;
end for ooooo=2:4:2*NN;
Pi(:,ooooo)=-10;
end for oooooo=3:4:2*NN;
Pi(:,oooooo)=-10;
end for ooooooo=4:4:2*NN;
Pi(:,ooooooo)=10;
end
format long e Transposex=xxx'; TranposePsi2=ww'; Tampil=[Transposex TranposePsi2 real(Psi2)'] plot(P,Pi, 'g' ,x1,real(Psi1),xxx,ww, 'r' ,x3,real(Psi3)); axis([-L 2*L -8 8])
end case
2 clc L=Str2num(get(handles.edit1, 'String' )); Ni=Str2num(get(handles.edit2, 'String' )); ni=Str2num(get(handles.edit6, 'String' )); m=Str2num(get(handles.edit5, 'String' )); ii=Str2num(get(handles.edit9, 'String' )); N=Ni; h=L/(N+1); set(handles.edit3, 'String' ,h); hplank=6.628*10^-34; omega=8.45*10^20; Vh=0.5*m*omega^2*h^2; Eni=5.6*10^-13*(ni+0.5); set(handles.edit4, 'string' ,Vh); set(handles.edit7, 'String' ,Eni); k2=(2*m*(Vh-Eni)/hplank^2)^0.5; k1=(2*m*(Eni)/hplank^2)^0.5; Ai=2; x1=linspace(-L,0,200); xxx=linspace(0,L,(N+2)); x3=linspace(L,2*L,200); R=(sin(k2*L))/(sin(k2*L)^2+(4*k1^2*k2^2/(k1^2-k2^2)^2)); Bi=(R*Ai^2)^0.5; Psi1=Ai*exp(i*k1*x1)+Bi*exp(-i*k1*x1); alpha=Ai*exp(i*k1*0)+Bi*exp(-i*k1*0);
if Eni<Vh
QQi=Ai+Bi; Psi2i=QQi*exp(-k2*xxx); beta=QQi*exp(-k2*L);
Fi=beta/(exp(i*k1*2*L)); Psi3=Fi*exp(i*k1*x3);
for j=n:-1:ii+1
m=A(ii,j)/A(j,j);
for k=1:(n+1)
A(ii,k)=A(ii,k)-(m*A(j,k));
end end end %Proses Substitusi mundur
x(n,1)=A(n,n+1)/A(n,n);
for ii=n-1:-1:1
S=0;
S=S+A(ii,j)*x(j,1);
jj=j+1;
end
x(ii,1)=(A(ii,n+1)-S)/A(ii,ii);
end %Menampilkan Vektor ww
ww=zeros(1,n+2); ww(1,1)=real(alpha); ww(1,N+2)=real(beta);
for uu=2:N+1
ww(:,uu)=real(x(uu-1,:))';
end
for ii=jj:n
end end %akhir proses pivot
% Psi Analatik
end % Penyusunan Vektor berdiri b
n=N;
%Membuat Matriks A Berdiagonal Sesuai Penyelesaian Finit Beda Hingga for ii=1:n
A(ii,ii)=(2+h^2*((k2)^2));
end for ii=1:n-1
A(ii,ii+1)=-1;
end for ii=2:n
A(ii,ii-1)=-1;
b(1,1)=alpha;
u=A(j,p); v=A(j+1,p); A(j+1,p)=u; A(j,p)=v;
for ii=2:n-1
b(ii,1)=0;
end
b(n,1)=beta;
%Kalibrasi b kedalam A for ii=1:n
A(ii,n+1)=b(ii,1);
end for j=1:(n-1) % mulai proses pivot if (A(j,j)==0) for p=1:n+1
P=zeros(1,2*N); Pi=zeros(1,2*N);
NN=N+2;
for oo=1:2:2*NN;
P(:,oo)=(xxx((oo+1)/2));
end for ooo=2:2:2*NN;
P(:,ooo)=(xxx(ooo/2));
end for oooo=1:4:2*NN;
Pi(:,oooo)=10;
end for ooooo=2:4:2*NN;
Pi(:,ooooo)=-10;
end for oooooo=3:4:2*NN;
Pi(:,oooooo)=-10;
end for ooooooo=4:4:2*NN;
Pi(:,ooooooo)=10;
end
format long e Transposex=xxx'; TranposePsi2=ww'; plot(P,Pi, 'y' ,x1,real(Psi1),xxx,real(Psi2i),x3,real(Psi3)); axis([-L 2*L -8 8])
else
C=(alpha/2)+((i*k1/(2*k2))*(Ai-Bi)); D=(alpha/2)-((i*k1/(2*k2))*(Ai-Bi)); Psi2=C*exp(k2*xxx)+D*exp(-k2*xxx); beta=C*exp(k2*L)+D*exp(-k2*L); Fi=beta/(exp(i*k1*L)); Psi3=Fi*exp(i*k1*x3);
% Psi Analatik
n=N;
%Membuat Matriks A Berdiagonal Sesuai Penyelesaian Finit Beda Hingga for ii=1:n
A(ii,ii)=(2+h^2*((k2)^2));
end for ii=1:n-1
A(ii,ii+1)=-1;
end for ii=2:n
A(ii,ii-1)=-1;
end % Penyusunan Vektor berdiri b
b(1,1)=alpha;
for ii=2:n-1
b(ii,1)=0;
end
b(n,1)=beta;
%Kalibrasi b kedalam A for ii=1:n
A(ii,n+1)=b(ii,1);
end for j=1:(n-1) % mulai proses pivot if (A(j,j)==0) for p=1:n+1
u=A(j,p); v=A(j+1,p); A(j+1,p)=u; A(j,p)=v; end end %akhir proses pivot
jj=j+1;
for ii=jj:n
m=A(ii,j)/A(j,j);
for k=1:(n+1)
A(ii,k)=A(ii,k)-(m*A(j,k));
end end end %Proses Substitusi mundur
x(n,1)=A(n,n+1)/A(n,n);
for ii=n-1:-1:1
S=0;
for j=n:-1:ii+1
S=S+A(ii,j)*x(j,1);
end
x(ii,1)=(A(ii,n+1)-S)/A(ii,ii);
end %Menampilkan Vektor ww
ww=zeros(1,n+2); ww(1,1)=real(alpha); ww(1,N+2)=real(beta);
for uu=2:N+1
ww(:,uu)=real(x(uu-1,:))';
end
P=zeros(1,2*N); Pi=zeros(1,2*N); NN=N+2;
for oo=1:2:2*NN;
P(:,oo)=(xxx((oo+1)/2));
end for ooo=2:2:2*NN;
P(:,ooo)=(xxx(ooo/2));
end for oooo=1:4:2*NN;
Pi(:,oooo)=10;
end for ooooo=2:4:2*NN;
Pi(:,ooooo)=-10;
end for oooooo=3:4:2*NN;
Pi(:,oooooo)=-10;
end for ooooooo=4:4:2*NN;
Pi(:,ooooooo)=10;
end
format long e Transposex=xxx'; TranposePsi2=ww'; plot(P,Pi, 'y' ,x1,real(Psi1),xxx,real(Psi2), 'm' ,x3,real(Psi3)); axis([-L 2*L -8 8])
end case
3 bar(1:.5:10);
case
4 plot(membrane);
case
5 surf(peaks);
end
% -------------------------------------------------------------------
- function FileMenu_Callback(hObject, eventdata, handles)
% hObject handle to FileMenu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------
- function OpenMenuItem_Callback(hObject, eventdata, handles)
% hObject handle to OpenMenuItem (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
file = uigetfile( '*.fig' );
if ~isequal(file, 0)
open(file);
end % -------------------------------------------------------------------
- function PrintMenuItem_Callback(hObject, eventdata, handles)
% hObject handle to PrintMenuItem (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
printdlg(handles.figure1)
% -------------------------------------------------------------------
- function CloseMenuItem_Callback(hObject, eventdata, handles)
% hObject handle to CloseMenuItem (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg([ 'Close ' get(handles.figure1, 'Name' ) '?' ], ...
[ 'Close ' get(handles.figure1, 'Name' ) '...' ], ...
'Yes' , 'No' , 'Yes' ); if strcmp(selection, 'No' ) return ; end
delete(handles.figure1) L=Str2num(get(handles.edit1, 'String' )); Ni=Str2num(get(handles.edit2, 'String' )); ni=Str2num(get(handles.edit6, 'String' )); m=Str2num(get(handles.edit5, 'String' )); iii=Str2num(get(handles.edit9, 'String' )); N=Ni; h=L/(N+1); hplank=6.628*10^-34; omega=8.45*10^20; Vh=0.5*m*omega^2*h^2; Eni=5.6*10^-13*(ni+0.5); k2=(2*m*(Vh-Eni)/hplank^2)^0.5; k1=(2*m*(Eni)/hplank^2)^0.5; Ai=2; x1=linspace(-L,0,200);
xxx=linspace(0,L,(N+2)); x3=linspace(L,2*L,200); R=(sin(k2*L))/(sin(k2*L)^2+(4*k1^2*k2^2/(k1^2-k2^2)^2)); Bi=(R*Ai^2)^0.5; n=N; Psi1=Ai*exp(i*k1*x1)+Bi*exp(-i*k1*x1); alpha=Ai*exp(i*k1*0)+Bi*exp(-i*k1*0);
A(ii,n+1)=b(ii,1);
S=S+A(ii,j)*x(j,1);
for j=n:-1:ii+1
S=0;
for ii=n-1:-1:1
x(n,1)=A(n,n+1)/A(n,n);
end end end %Proses Substitusi mundur
A(ii,k)=A(ii,k)-(m*A(j,k));
for k=1:(n+1)
m=A(ii,j)/A(j,j);
for ii=jj:n
jj=j+1;
end end %akhir proses pivot
u=A(j,p); v=A(j+1,p); A(j+1,p)=u; A(j,p)=v;
end for j=1:(n-1) % mulai proses pivot if (A(j,j)==0) for p=1:n+1
%Kalibrasi b kedalam A for ii=1:n
if Eni<Vh
A(ii,ii+1)=-1;
QQi=Ai+Bi; Psi2i=QQi*exp(-k2*xxx); beta=QQi*exp(-k2*L); Fi=beta/(exp(i*k1*L)); Psi3=Fi*exp(i*k1*x3);
% Psi Analatik
n=N;
%Membuat Matriks A Berdiagonal Sesuai Penyelesaian Finit Beda Hingga for ii=1:n
A(ii,ii)=(2+h^2*((k2)^2));
end for ii=1:n-1
end for ii=2:n
b(n,1)=beta;
A(ii,ii-1)=-1;
end % Penyusunan Vektor berdiri b
b(1,1)=alpha;
for ii=2:n-1
b(ii,1)=0;
end
end x(ii,1)=(A(ii,n+1)-S)/A(ii,ii);
end %Menampilkan Vektor ww
ww=zeros(1,n+2); ww(1,1)=real(alpha); ww(1,N+2)=real(beta);
for uu=2:N+1
ww(:,uu)=real(x(uu-1,:))';
end
iiii=iii+1; tras=real(Psi2i); format long e Tr=ww; Tra=xxx; AAA=tras'; RT=[Tr' Tra']; tru=Tr(:,iiii); tra=Tra(:,iiii); trasi=tras(:,iiii); warior=abs(tru-trasi); set(handles.edit15, 'String' ,warior); set(handles.edit13, 'String' ,trasi); set(handles.edit14, 'String' ,tra); set(handles.edit10, 'String' ,tra); set(handles.edit11, 'String' ,tru);
else
C=(alpha/2)+((i*k1/(2*k2))*(Ai-Bi)); D=(alpha/2)-((i*k1/(2*k2))*(Ai-Bi)); Psi2=C*exp(k2*xxx)+D*exp(-k2*xxx); beta=C*exp(k2*L)+D*exp(-k2*L); Fi=beta/(exp(i*k1*L)); Psi3=Fi*exp(i*k1*x3);
% Psi Analatik
n=N;
%Membuat Matriks A Berdiagonal Sesuai Penyelesaian Finit Beda Hingga for ii=1:n
A(ii,ii)=(2+h^2*((k2)^2));
end for ii=1:n-1
A(ii,ii+1)=-1;
end for ii=2:n
A(ii,ii-1)=-1;
end % Penyusunan Vektor berdiri b
b(1,1)=alpha;
for ii=2:n-1
b(ii,1)=0;
end
b(n,1)=beta;
%Kalibrasi b kedalam A for ii=1:n
A(ii,n+1)=b(ii,1);
end for j=1:(n-1) % mulai proses pivot if (A(j,j)==0) for p=1:n+1
u=A(j,p); v=A(j+1,p); A(j+1,p)=u;
A(j,p)=v;
end end %akhir proses pivot
jj=j+1;
for ii=jj:n
m=A(ii,j)/A(j,j);
for k=1:(n+1)
A(ii,k)=A(ii,k)-(m*A(j,k));
end end end %Proses Substitusi mundur
x(n,1)=A(n,n+1)/A(n,n);
for ii=n-1:-1:1
S=0;
for j=n:-1:ii+1
S=S+A(ii,j)*x(j,1);
end
x(ii,1)=(A(ii,n+1)-S)/A(ii,ii);
end %Menampilkan Vektor ww
ww=zeros(1,n+2); ww(1,1)=real(alpha); ww(1,N+2)=real(beta);
for uu=2:N+1
ww(:,uu)=real(x(uu-1,:))';
end
format long e iiii=iii+1; tras=real(Psi2); Tr=ww; Tra=xxx; AAA=tras'; RT=[Tr' Tra']; tru=Tr(:,iiii); tra=Tra(:,iiii); trasi=tras(:,iiii); warior=abs(tru-trasi); set(handles.edit15, 'String' ,warior); set(handles.edit13, 'String' ,trasi); set(handles.edit14, 'String' ,tra); set(handles.edit10, 'String' ,tra); set(handles.edit11, 'String' ,tru);
end
Lampiran 2. Daftar Konstanta dan Penyelesaian Analitik
- 31
m = 9.11 x 10
kg = 6.628 x 10
- 34
J.s = 8.45 x 10 20 rad/s.
Untuk E < V 1
Menentukan nilai potensial (V) dengan ( )( ) ( ) 2. Menentukan nilai Energi (E) ( ) dengan ( )( )
3. Menentukan nilai √ √
( )( ) ( )
4. Menentukan nilai √ ( )
√ ( )( ) ( )
Konstanta A = 2 b.
Kontanta B ( ) dengan i merupakan bilangan imaginer ( √ )
( ( ) ( )
) c. Kontanta C
Untuk E > V 1.
Menentukan nilai potensial (V)
dengan m
( )( ) ( ) Joule2. Menentukan nilai Energi (E) ( ) dengan ( )( )
Joule 3. Menentukan nilai √
√ ( )( ) ( )
4. Menentukan nilai √ ( )
√ ( )( ) ( ) a.
Konstanta F b.
Kontanta C ( ) dengan m ( )
( ) ( ( ) ) ( ) c.
Kontanta D ( )
( ) ( ) ( ( ) )
( ) d. Kontanta A , ( ) ( )-
, ( ) (
)
( )-
) ( e.
Kontanta B , ( ) ( )- , ( ) (
)
()- )
(