-
VI. Tugas Akhir
1. Crank-Nichoson
a. Crank-Nicolson dengan syarat Dirichlet
Listing Program
print"Program Heat Equation dengan Skema Crank-Nicolson
menggunakan
syarat batas Dirichlet"
print"\n"
print"Nama: Fatah Ramdhan"
print"NPM : 140710130002"
print"Praktikum Metode Numerik II"
print"Geofisika Universitas Padjadjaran"
print"\n"
from numpy import *
from math import *
from matplotlib.pyplot import *
import scipy as sp
import scipy.sparse
import scipy.sparse.linalg
import numpy.linalg
#diskritisasi
L=1
T=1
N=64
dx=1/(N+1.0)
gamma=0.5
dt=gamma*dx*dx
M=int(round(T/float(dt)))
-
x=linspace(0,L,N+1)
tg=linspace(0,T,M+1)
#initial condition
u0= zeros(N+1)
U= zeros(N+1)
Ua=zeros(N+1)
for i in range(0,N+1):
u0[i]=sin(pi*x[i])
a=sp.ones((3,N))
a[0]=-gamma/2
a[1]=1+gamma
a[2]=-gamma/2
diags=[-1,0,1]
A=sp.sparse.spdiags(a,diags,N,N)
b=sp.ones((3,N))
b[0]=gamma/2
b[1]=1-gamma
b[2]=gamma/2
B=sp.sparse.spdiags(b,diags,N,N)
print A
ctr=0
t=0
u=u0
ion()
show()
while t
-
U[:N]=sp.sparse.linalg.spsolve(A,B.dot(u[:N]))
U[0]=0
U[N]=0
clf()
axis([0,1,0,1])
plot(x,U,'r*',x,u0,'b-')
xlabel('x')
ylabel('u')
draw()
u=U
Tampilan
-
Analisa
Program di atas merupakan program Crank-Nicolson dengan
menggunakan
syarat batas Dirichlet di mana nilai ujung-ujungnya kita set
sama dengan nol.
Dalam program, untuk syarat batas Dirichlet ini kita gunakan
U[0]=0 dan U[N]=0
yang artinya nilai U di ujung kanan dan kiri bernilai sama
dengan nol. Metode ini
-
memiliki akurasi O(2, 2) dan kestabilan akan stabil apabila
tanpa syarat
(|| 1 untuk setiap S > 0). Hasil program menunjukkan bahwa
semakin besar
nilai N maka semakin kecil errornya. Hal ini karena kita
mendiskritnya ke dalam
banyak bagian N dan membuat diskrit menjadi rapat. Dalam contoh
kasus di atas,
kita memasukkan nilai N = 64, L = 1, T = 1.
b. Crank-Nicolson dengan syarat Neumann
Listing Program
print"Program Heat Equation dengan Skema Crank-Nicolson
Menggunakan
Syarat Batas Neumann"
print"\n"
print"Nama: Fatah Ramdhan"
print"NPM : 140710130002"
print"Praktikum Metode Numerik II"
print"Geofisika Universitas Padjadjaran"
print"\n"
from numpy import *
from math import *
from matplotlib.pyplot import *
import scipy as sp
import scipy.sparse
import scipy.sparse.linalg
import numpy.linalg
#diskritisasi
-
L=1
T=1
N=64
dx=1/(N+1.0)
gamma=0.5
dt=gamma*dx*dx
M=int(round(T/float(dt)))
x=linspace(0,L,N+1)
tg=linspace(0,T,M+1)
#initial condition
u0= zeros(N+1)
U= zeros(N+1)
Ua=zeros(N+1)
for i in range(0,N+1):
u0[i]=sin(pi*x[i])
a=sp.ones((3,N))
a[0]=-gamma/2
a[1]=1+gamma
a[2]=-gamma/2
diags=[-1,0,1]
A=sp.sparse.spdiags(a,diags,N,N)
b=sp.ones((3,N))
b[0]=gamma/2
b[1]=1-gamma
b[2]=gamma/2
B=sp.sparse.spdiags(b,diags,N,N)
print A
-
ctr=0
t=0
u=u0
ion()
show()
while t
-
Analisa
Program di atas merupakan program Crank-Nicolson dengan
menggunakan
syarat batas Neumann di mana nilai ujung-ujungnya kita set tidak
sama dengan
nol. Dalam program, untuk syarat batas Neumann ini kita gunakan
U[0]=U[1]
dan U[N]=U[N-1]. Metode ini memiliki akurasi O(2, 2) dan
kestabilan akan
stabil apabila tanpa syarat (|| 1 untuk setiap S > 0).
Perbedaan dari kedua
program di atas hanya terletak pada syarat batasnya saja, secara
umum sama.
Hasil program menunjukkan bahwa semakin besar nilai N maka
semakin kecil
errornya. Hal ini karena kita mendiskritnya ke dalam banyak
bagian N dan
membuat diskrit menjadi rapat. Dalam contoh kasus di atas, kita
memasukkan
nilai N = 64, L = 1, T = 1.
-
2. Resume
Dalam persamaan difusi atau heat equation terdapat tiga macam
skema untuk
menyelesaikannya, yaitu skema Eksplisit, Implisit dan
Crank-Nicolson. Dalam
skema Eksplisit, persamaan dan teknik penyelesaiannya
straight-forward,
penyelesaian dilakukan node per node. Rentan terhadap
konvergensi dan
stabilitas hitungan serta time step terkendala oleh konvergensi
dan stabilitas
hitungan. Sedangkan Implisit, persamaan dan teknik
penyelesaiannya lebih
rumit, penyelesaian dilakukan secara simultan untuk seluruh
node. Konvergensi
dan stabilitas hitungan lebih mudah dijaga serta time step tidak
terkendala oleh
konvergensi dan stabilitas hitungan. Skema Crank-Nicolson
merupakan
gabungan dari kedua skema tersebut. Skema Crank-Nicolson
memiliki akurasi
yang sama pada aproksimasi suku derivative waktu dan ruang.
Ditinjau dari nilai
, apabila = 0, maka skema adalah Eksplisit. Apabila = 1, maka
skema
adalah Implisit. Sedangkan apabila =1
2, maka skema adalah Crank-Nicolson.
-
VII. Kesimpulan
Berdasarkan praktikum yang telah dilaksanakan, maka dapat
disimpulkan
bahwa praktikan telah memahami dan bisa menggunakan metode beda
hingga
untuk mencari solusi numeric persamaan parabolic satu
dimensi,
mengaplikasikan skema Eksplisit, Implisit dan Crank-Nicolson
dalam solusi
Heat Equation 1D, mampu menentukan dan membandingkan orde
akurasi
untuk masing-masing skema serta mampu menyelesaikan masalah
syarat batas
secara numerik. Berdasarkan hasil percobaan program, diperoleh
:
Pada skema eksplisit dengan menggunakan syarat batas Dirichlet
(U[0]=0 dan
U[N]=0), kurva menunjukkan bahwa nilai analitik dan numerik
cukup
berdekatan dan berjalannya temperatur seiring dengan berjalannya
waktu, nilai
temperatur maksimum berada di titik nol. Nilai gamma yang
dimasukkan akan
mempengaruhi stabilitasnya. Jika nilai gamma yang dimasukkan
cukup besar,
maka akan menghasilkan blow up.
Pada skema eksplisit dengan menggunakan syarat batas Neumann
(U[0]=U[1]
dan U[N]=U[N-1]). Kurva yang didapat bentuknya berbeda dengan
kurva saat
syarat batasnya menggunakan Dirichlet. Titik maksimum dan
minimum yang
semula berada pada U = 0 kali ini berada pada satu nilai yaitu
pada U = 0.63.
Hal ini dakibatkan perbedaan syarat batas. Sama seperti pada
Dirchlet Besar
nilai gamma mempengaruhi kestabilan program, jika kita memilih
nilai gamma
yang lebih besar dari 0.5 maka program akan mengalami blow
up.
Pada skema implisit didapat bahwa kurva antara solusi analitik
dan solusi
numerik error yang cukup kecil. Nilai gamma yang dimasukan
tidak
berpengaruh pada kestabilan program. Skema implisit dibutuhkan
solusi
persamaan linier untuk menentukan nilai U. Nilai U akan berubah
seiring
dengan berjalannya waktu. karena syarat batas yang dibuat dalam
program
adalah syarat batas dirichlet untuk U = 0 maka nilai temperatur
akan memiliki
nilai maksimum dan minimum di 0 derajat.
-
Pada skema Implisit Neumann, matriks yang diperoleh berbeda
dengan
eksplisit yang memiliki nilai N yang berbeda. Syarat batasnya
diubah sehingga
mengakibatkan nilai maksimum dan minimumnya berbeda pula.
Skema
implisit lebih cepat dibandingkan implisit.
Pada skema Crank-Nicolson, menunjukkan bahwa semakin besar nilai
N maka
semakin kecil errornya. Hal ini karena kita mendiskritnya ke
dalam banyak
bagian N dan membuat diskrit menjadi rapat. Kestabilan akan
stabil apabila
tanpa syarat (|| 1 untuk setiap S > 0). Dalam contoh kasus di
atas, kita
memasukkan nilai N = 64, L = 1, T = 1.
-
DAFTAR PUSTAKA
Chapra, S. C., Carale R. P., 1990, Numerical Methods for
Engineers, 2nd Ed., Mc.Graw-
Hill Book Co., Newyork., Chapter 23 dan 34, hlm.707-749
Istiarto, n.d, Persamaan Differensial Parsial (PDE), Yogyakarta,
UGM [online]
http://www.istiarto.staff.ugm.ac.id/persamaan-differensial-parsial.pdf
[diakses
12 Maret 2015]
Munir Rinaldi, 2003, Metode Numerik revisi kedua, Bandung,
Informatika
[noname], 2012, Partial Differential Equation, Bandung, SRP12
ITB [online] http://www.itb.ac.id/partial-differential-equation.pdf
[diakses 12 Maret 2015]