• Tidak ada hasil yang ditemukan

Aplikasi Metode Beda Hingga Pada Persamaan Schrödinger Menggunakan Matlab

N/A
N/A
Protected

Academic year: 2019

Membagikan "Aplikasi Metode Beda Hingga Pada Persamaan Schrödinger Menggunakan Matlab"

Copied!
14
0
0

Teks penuh

(1)

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)

(2)

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

(3)

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); % 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);

(4)

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;

(5)

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

(6)

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)

(7)

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);

(8)

%

-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;

(9)

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);

if Eni<Vh 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 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);

(10)

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)

(11)

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);

(12)

Lampiran 2. Daftar Konstanta dan Penyelesaian Analitik

m = 9.11 x 10

-31

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

( )

( ( )( ) )

5.

Menentukan nilai konstanta

a.

Konstanta A = 2

b.

Kontanta B

(13)

(

( ( ) )

)

c.

Kontanta C

Untuk E > V

1.

Menentukan nilai potensial (V)

dengan

m

(

)(

)

(

)

Joule

2.

Menentukan nilai Energi (E)

(

)

dengan

(

)(

)

Joule

3.

Menentukan nilai

( ( )( ) )

4.

Menentukan nilai

( )

( )( ( ) )

(14)

a.

Konstanta F

b.

Kontanta C

(

)

( )

dengan

m

(

( )

)

( ( ) )

c.

Kontanta D

(

)

( )

(

( )

)

( (

) )

d.

Kontanta A

, (

) (

)-

,

(

( )

)

(

( )

)-

e.

Kontanta B

, (

) (

)-

,

(

( )

)

(

Referensi

Dokumen terkait

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Data2

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA). % varargin command line arguments

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA). % Hints: get(hObject,'String') returns contents

% hObject handle to tombolKeluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB. % handles structure with handles and user data (see

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents