Laporan Akhir Metode Numerik II

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

description

Metnum II

Transcript of Laporan Akhir Metode Numerik II

  • 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]