• Tidak ada hasil yang ditemukan

Aplikasi Fungsi Green Menggunakan Algoritma Monte Carlo dalam Persamaan Diferensial Semilinear

N/A
N/A
Protected

Academic year: 2017

Membagikan "Aplikasi Fungsi Green Menggunakan Algoritma Monte Carlo dalam Persamaan Diferensial Semilinear"

Copied!
6
0
0

Teks penuh

(1)

Lampiran 1. Solusi Fungsi Green

1 function G = greenfunction(k, v, n, a, b)

2 % k adalah fungsi difusi 3 % v adalah fungsi adveksi

4 % n adalah jumlah diskritisasi sepanjang domain (a,b) 5 h = (b-a)/n;

6 x = linspace(a, b, n+1);

7 muval(1) = 0.0; 8 for j = 2: n+1

9 increment_m = (v(x(j))/k(x(j)) + v(x(j-1))/k(x(j-1)))*0.5*h; 10 muval(j) = muval(j-1) + increment_m;

11 end

12 mu(1:n+1) = exp(-muval(1:n+1)); 13 kval(1)=0.0;

14 for j=2:n+1

15 increment_k = ( mu(j)/k(x(j))+ mu(j-1)/k(x(j-1)))*(0.5)*h; 16 kval(j) = kval(j-1) + increment_k;

17 end 18

19 %fungsi Green untuk kondisi batas Neumann-Neumann 20 for j=1:n+1

21 for i=1:n+1

22 c = (-mu(n+1)/v(n+1) - (kval(n+1) - kval(j))) /... 23 (mu(n+1)/v(n+1) - 1/v(1) + kval(n+1));

24 if (x(i)<x(j))

25 phi(i,j) = (c/mu(i))*(1/v(1) - kval(i));

26 else

27 phi(i,j) = ((1+c)/mu(i))*(mu(n+1)/v(n+1) +... 28 (kval(n+1)-kval(i)));

29 end

30 end 31 end 32 %

33 plot(x,G(:,2500)) %Grafik fungsi Green

34 xlabel({'$x$'},'interpreter','latex')

(2)

Lampiran 2. Solusi Numerik Persamaan Diferensial Semilinear

1 function u = semilinear(f, dif, n, a, b)

2 % f adalah fungsi semilinear dan dif adalah turunan dari fungsi

semilinear

3 h = (b-a)/n;

4 x = linspace(a, b, n+1);

5 for i= 1:n+1

6 k(i) = 1/(1-0.99*(x(i)ˆ2)*sin(50*pi*x(i))); 7 v(i) = 10;

8 end

9 muval(1) = 0.0; 10 for j = 2: n+1

11 increment_m = (v(j)/k(j) + v(j-1)/k(j-1))*0.5*h; 12 muval(j) = muval(j-1) + increment_m;

13 end

14 mu(1:n+1) = exp(-muval(1:n+1)); 15 kval(1) = 0.0;

16 for j=2:n+1

17 increment_k = (mu(j)/k(j)+ mu(j-1)/k(j-1))*(0.5)*h; 18 kval(j) = kval(j-1) + increment_k;

19 end 20

21 % G(i,j) adalah fungsi Green untuk kondisi batas

Dirichlet-Dirichlet

22 for j=1:n+1 23 for i=1:n+1

24 c = -(kval(n+1)-kval(j))/kval(n+1); 25 if (x(i)<x(j))

26 G(i,j) = -(c/mu(i))*kval(i);

27 else

28 G(i,j) = (1 + c)/mu(i)*(kval(n+1) - kval(i));

29 end

30 end 31 end 32

(3)

38 DG(i,j) = - c*mu(i)/k(i);

50 Niter = 15; %Iterasi Newton 51 id = eye(n+1); 57 ff(1:n+1) = f(u(1:n+1))*h; 58 ff(1) = ff(1)*0.5; 59 ff(n+1) = ff(n+1)*0.5; 60 for j = 2:n

61 g(j) = u(j) - ff*G(:,j) - k(1)*DG(1,j); 62 ja(j,:) = dif(u(j))*G(:,j)*h;

63 ja(j,1) = ja(j,1)*0.5; 64 ja(j,n+1) = ja(j,n+1)*0.5; 65 end

73 xlabel({'$x$'},'interpreter','latex')

(4)

Lampiran 3. Solusi Fungsi Green dengan Menggunakan Algoritma MCMC

1 function phi = greenmcmc(bc, xi, a, b, nx, k, v, ht, nt)

2 % bangkitkan koordinat 3 hx = (b-a)/nx;

4 x = linspace(a, b, nx+1);

5 %

6 % bangkitkan matriks diskritisasi operator diferensial.

7 A = zeros(nx +1);

8 kinterface = 0.5*(k(x(1:nx)) + k(x(2:nx+1))); 9 kinterface = kinterface/hx;

10 vinterface = 0.5*(v(x(1:nx)) + v(x(2:nx+1))); 11 for i = 2:nx

12 A(i,i) = kinterface(i-1)+ kinterface(i)+ vinterface(i); 13 end

14 for i = 1:nx

15 A(i,i+1) = -kinterface(i);

16 A(i+1,i) = A(i,i+1)- vinterface(i); 17 end

18 A = 0.5*ht*A; 19 AA = -A;

20 for i = 2:nx

21 A(i,i) = A(i,i) + hx; 22 AA(i,i) = hx + AA(i,i); 23 end

24 % left boundary condition 25 if (bc(1) == 1)

26 A(1,1) = 1; A(1,2) = 0; 27 AA(1,1) = -1; AA(1,2) = 0; 28

29 elseif (bc(1) == 2)

30 A(1,1) = 0.5*hx + 0.5 * ht * (kinterface(1) + ( vinterface(1)- v(x(1))));

31 AA(1,1) = - A(1,1) + hx; 32

33 elseif (bc(1) == 3)

(5)

38 % right boundary condition 39 if (bc(2) == 1)

40 A(nx+1,nx+1) = 1; A(nx+1,nx) = 0; 41 AA(nx+1,nx+1) = -1; AA(nx+1,nx) = 0;

42 elseif (bc(2) == 2)

43 A(nx+1,nx+1) = 0.5*hx + 0.5* ht* (kinterface(nx)+ v(x(nx +1)));

44 AA(nx+1,nx+1) = - A(nx+1,nx+1) + hx; 45

46 elseif (bc(2) ==3)

47 A(nx+1, nx+1) = 0.5*hx + 0.5* ht* kinterface(nx); 48 AA(nx+1,nx+1) = -A(nx+1,nx+1) + hx;

49 end 50

51 A = sparse(A);

52 %

53 % MCMC dengan Metropolis-Hasting 54 if (bc(1) == 1)

55 f(1,1) = 0.0; 56 else

57 f(1,1) = randn(1,1)*sqrt(hx*ht); 58 end

59 f(2:nx,1) = randn(nx-1,1)*sqrt(2*hx*ht); 60 if (bc(2) == 1)

61 f(nx+1,1) = 0.0; 62 else

63 f(nx+1,1) = randn(1,1)*sqrt(hx*ht); 64 end

65 Ux(:,1) = A \ f; 66 for l = 2:nt 67 %white noise 68 if (bc(1) == 1) 69 f(1,1) = 0.0; 70 else

71 f(1,1) = randn(1,1)*sqrt(hx*ht) ; 72 end

73 f(2:nx,1) = randn(nx-1,1)*sqrt(2*hx*ht); 74 if (bc(2) == 1)

75 f(nx+1,1) = 0.0; 76 else

(6)

79 f = f + AA*Ux(:,l-1); 80 u = A \ f;

81 R = u(xi) - Ux(xi,l-1); 82 alpha = exp(min(0,R)); 83 if (rand<alpha)

84 Ux(:,l) = u; % accept 85 else

86 Ux(:,l) = Ux(:,l-1); % reject, jadi pakai yang sebelumnya

.

87 end 88 end

89 % Hitung rata-rata

90 phi = sum(Ux,2)/nt; %ini fungsi Greenya. 91 size(phi)

92 hold on

93 plot(x, phi,'r ');

94 xlabel({'$x$'},'interpreter','latex')

Referensi

Dokumen terkait

Berdasarkan penelitian terdahulu yang dilakukan oleh Lipe dan Leli Danora Siregar pada perusahaan manufaktur dan juga industri semen menyatakan bahwa pengklasifikasian komponen

This classroom action research was conducted in three cycles. Each cycles consisted of four stages which are planning, acting, observing and reflecting. Each acting stage

inovasi yang akan memanfaatkan hasil inovasi. Dalam difusi inovasi, maka elemen utama yang harus ada adalah inovasi itu sendiri baik berupa gagasan, tindakan,

Lingkungan Keluarga terhadap Minat Berwirausaha pada Mahasiswa Prodi Manajemen Fakultas Ekonomi dan Bisnis USU tahun 2011”. 1.2

Jika sesuatu syarikat keretapi telah membina suatu landasan keretapi merintangi suatu jalan awam yang sama ratanya, Ketua Pengarah boleh, jika ternyata kepadanya bahawa adalah

Menentukan model persamaan regresi terbaik berupa korelasi antara nilai N dari hasil uji N-SPT dengan nilai qc dari hasil uji sondir pada 4 lokasi

ini menunjukkan bahwa model integrasi random oversampling , AdaBoost, dan Naïve Bayes memiliki kinerja lebih baik dalam menemukan kecenderungan pelanggan yang