Anda di halaman 1dari 31

MODUL PRAKTIKUM FISIKA KOMPUTASI

IMPLEMENTASI PEMROGRAMAN BAHASA MATLAB

LABORATORIUM FISIKA KOMPUTASI


JURUSAN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SYIAH KUALA
BANDA ACEH

1
DAFTAR ISI

MODUL PRAKTIKUM FISIKA KOMPUTASI ............................................................................................1

DAFTAR ISI .........................................................................................................................................1

INTERPOLASI LAGRANGE ....................................................................................................................3

TUJUAN ...............................................................................................................................................3
TEORI ..................................................................................................................................................3
ALGORITMA ..........................................................................................................................................5
LATIHAN ..............................................................................................................................................5
TUGAS .................................................................................................................................................6

FINITE DIFFERENCE (FIRST DERIVATIVE) ..............................................................................................7

TUJUAN ...............................................................................................................................................7
TEORI ..................................................................................................................................................7
ALGORITMA ..........................................................................................................................................9
LATIHAN ..............................................................................................................................................9
TUGAS ............................................................................................................................................... 10

HIGH ORDE DERIVATIVE ................................................................................................................... 11

TUJUAN ............................................................................................................................................. 11
TEORI ................................................................................................................................................ 11
ALGORITMA ........................................................................................................................................ 13
LATIHAN ............................................................................................................................................ 13
TUGAS ............................................................................................................................................... 14

BISECTION METHOD (METODE BAGI DUA) ........................................................................................ 15

TUJUAN ............................................................................................................................................. 15
TEORI ................................................................................................................................................ 15
ALGORITMA ........................................................................................................................................ 15
LATIHAN ............................................................................................................................................ 19
TUGAS ............................................................................................................................................... 21

INTEGRASI: METODE EULER.............................................................................................................. 22

1
TUJUAN ............................................................................................................................................. 22
TEORI ................................................................................................................................................ 22
ALGORITMA ........................................................................................................................................ 22
LATIHAN ............................................................................................................................................ 24
TUGAS ............................................................................................................................................... 25

INTEGRASI: RUNGE-KUTTA ORDE DUA .............................................................................................. 26

TUJAN ............................................................................................................................................... 26
TEORI ................................................................................................................................................ 26
ALGORITMA ........................................................................................................................................ 27
LATIHAN ............................................................................................................................................ 29
TUGAS ............................................................................................................................................... 30

2
INTERPOLASI LAGRANGE
Tujuan

1. Memahami konsep interpolasi secara umum


2. Memahami konsep dan interpolasi Lagrange, baik secara matematik dan numerik
3. Mampu merancang program interpolasi Lagrange
4. Mampu memvisualisasikan hasil interpolasi Lagrange

Teori

Interpolasi merupakan suatu cara untuk menghubungkan satu titik dengan titik yang lain sehingga
memperoleh bentuk pendekatan, seperti pendekatan linier (derajat 1), kuadrat (derajat 2), kubik
(derajat 3) dan seterusnya yang memiliki derajat yang tinggi. Salah satunya adalah interpolasi
Lagrange. Interpolasi Lagrange merupakan konsep pendekatan data yang menggunakan metode
polinomial Lagrange untuk membangun interpolasi polinomian. Bentuk sederhana dari polinomial
adalah

𝑃(𝑥) = 𝑦1 𝐿1 (𝑥) + 𝑦2 𝐿2 (𝑥) (1).

Adapun sifat-sifat polinomial Lagrange adalah:


1. Bila ada n bilangan berlainan xk, dimana k = 1, ..., N maka selalu dapat dibangun sebanyak
n polinomial Lagrange Ln,k
2. Polinomial Lagrange berderajat n
3. Polinomial Lagrange bersifat interpolasi, yaitu:

1 𝑏𝑖𝑙𝑎 𝑖 = 𝑘
𝐿𝑛,𝑘 (𝑥𝑖 ) = 𝛿𝑖,𝑘 ≔ {
0 𝑏𝑖𝑙𝑎 𝑖 ≠ 𝑘

Persamaan (1) dapat ditulis bentuk polinomial untuk derajat n sebagai berikut

𝑃𝑛 (𝑥) = ∑𝑛𝑘= 1 𝑦𝑘 𝐿𝑛,𝑘 (𝑥) (2),

dimana
𝑥−𝑥𝑖
𝐿𝑛,𝑘 (𝑥) = ∏𝑛𝑖=1,𝑖≠𝑘 𝑥 (3)
𝑘 −𝑥𝑖

𝐿𝑛,𝑘 (𝑥) disebut sebagai polinomial Lagrange.

Contoh:

Tentukan interpolasi Lagrange derajat dua dimana ketika x = 8 dari data berikut ini;

3
k 1 2
x 5 10
y 1 0

Banyak data N = 2, maka orde yang digunakan adalah m = N-1 = 2-1 = 1. Artinya, contoh di atas
merupakan bentuk polinomial yang linier. Menggunakan persamaan (3) hasil interpolasi dapat
diperoleh.

➢ ketika k = 1, N = 2, i = 1, ..., N dan i ≠ k, maka i = i +1


𝑥−𝑥𝑖 𝑥−10 𝑥−10 1
𝐿𝑁,𝑘 (𝑥 ) = 𝐿2,1 (𝑥 ) = 𝑥 = 5−10 = = −5 (𝑥 − 10) dimana i = 2
𝑘 −𝑥𝑖 −5

➢ ketika k = 2, N = 2, i = 1, ..., N dan i ≠ k, maka i = i +1


𝑥−𝑥𝑖 𝑥−5 𝑥−5 1
𝐿𝑁,𝑘 (𝑥 ) = 𝐿2,2 (𝑥 ) = 𝑥 = 10−5 = = 5 (𝑥 − 5) dimana i = 1
𝑘 −𝑥𝑖 5

Menggunakan persamaan (2)

𝑃(𝑥 ) = 𝑦1 𝐿2,1 (𝑥 ) + 𝑦2 𝐿2,2 (𝑥)

1 1
𝑃 (𝑥 ) = 1 . ( (𝑥 − 10)) + 0 . ( (𝑥 − 10))
−5 5

Suku kedua sama dengan nol, maka diperoleh


1
𝑃 (𝑥 ) = (𝑥 − 10) (4)
−5

Ketika x = 8 sisubtitusikan ke dalam persamaan (4) diperoleh


1 1
𝑃(𝑥 = 8) = −5 (8 − 10) = −5 (−2) = 0.4

Ilustrasi interpolasi Lagrange dapat dilihat pada Gambar 1.

4
Gambar 1. Kiri: Data (titik merah). Kanan: Hasil interpolasi Lagrange (garis biru)

Algoritma

1. Siapkan data point pada koordinat x dan y


2. Tentukan banyak data N dari data point
3. Hitung polinomial Lagrange dengan menggunakan persamaan (3) dimana i = 1, ..., N dan
i ≠ k, dan sebanyak N data point
4. Hitung interpolasi polinomial Lagrange menggunakan persamaan (2) dimana k = 1, ..., N

Latihan

Buatlah program Fortran terkait dengan interpolasi Lagrange dari data berikut ini:

k 1 2
x 5 10
y 1 0

Simpan data di atas dalam bentuk text file (*.txt) dengan nama LagrangeData.txt

PSEUDOCODE

Set N
Set NT
% READ DATA
Opendata = load('Nama_File.txt');
X = Opendata(:,1); % X kolom 1 dari variable Opendata
Y = Opendata(:,2); % Y kolom 2 dari variable Opendata

5
% LAGRANGE PROCESS
Set XU
Loop J = 1:NT
FUNC = 0.0;
Loop K = 1:N
L = 1.0;
Loop I = 1:N
Kondisi I Tidak saama dengan K
L = L.*((XU(J) - X(I))/(X(K) - X(I)));
End Kondisi
End Loop I
FUNC = FUNC + (Y(K).*L);
End Loop K
YU(J) = FUNC;
End Loop J

% Save Output
fileID = fopen('LagrangeOut.txt','w');
fprintf(fileID,'%6s %6s\r\n','x','y');
fprintf(fileID,'%6.2f %6.2f\r\n',XU,YU);

figure()
plot(X,Y,'r*--')
hold on
plot(XU,YU,'b')

Jika program sudah selesai dan berhasil dibuat, maka plot-lah hasil yang diperoleh!

Tugas

1. Buatlah program interpolasi Lagrange dari data berikut ini:

K 1 2 3
X 6 8 23
Y 5 2.4 4

dan plotlah hasilnya!

2. hitunglah hasil interpolasi dari data di atas ketika x = 7, x = 13 dan x = 20!

6
FINITE DIFFERENCE (FIRST DERIVATIVE)
Tujuan

1. Memahami konsep finite difference secara umum


2. Memahami konsep dan finite difference khususnya pada first derivative, baik secara
matematik dan numerik
3. Mampu merancang program finite derivative
4. Mampu memvisualisasikan hasil finitie derivative

Teori

Finitie difference merupakan suatu metode numerik yang digunakan untuk menyelesaikan
persamaan diferensial secara numerik. Secara umum terdapat tiga metode di dalam finite
difference, yaitu forward, backward dan central-difference, dimana bentuk matematisnya adalah
sebagai berikut:

Forward:

𝑓(𝑎+ℎ)−𝑓(𝑎)
𝑓 (𝑥 ) = (1)

Backward:

𝑓(𝑎)−𝑓(𝑎−ℎ)
𝑓 (𝑥 ) = ℎ
(2)

Central:

𝑓(𝑎+ℎ)−𝑓(𝑎−ℎ)
𝑓 (𝑥 ) = (3)
2ℎ

dimana h merupakan selisih antar data


𝑏−𝑎
ℎ= N = banyak data (4)
𝑁

Contoh:

Diketahui suatu fungsi f(x) = x2. Tentukanlah hasil turunan dari fungsi tersebut ketika x = 2.

Jawab:

Secara analitik, fungsi f(x) = x2 memiliki turunannya yaitu f’(x) = 2x, maka ketika x = 2 hasil
fungsi turunan diperoleh

𝑓 ′(𝑥 = 2) = 2. (2) = 4

7
Secara numerik dapat dilakukan sebagai berikut (menggunakan Forward Difference):

Atur parameter a sebagai batas awal (a = 0), b sebagai batas akhir (b = 5), dan N banyak data (N
= 100), maka h dapat dihitung,
𝑏−𝑎 5−0 5
ℎ= = = 100 = 0.05
𝑁 100

Tahap 1: Untuk x = a = 0, menggunakan fungsi 𝑓(𝑥 ) = 𝑥 2 , diperoleh

𝑓 (𝑎 + ℎ) = 𝑓(0 + 0.05) = (0 + 0.05)2 = 0.0025

𝑓 (𝑎) = 𝑓(0) = 02 = 0

𝑓(𝑎+ℎ)−𝑓(𝑎)
𝑓 (𝑥 ) = ℎ

0.0025−0 0.0025
𝑓 (0) = = = 0.05
0.05 0.05

Tahap 2: Untuk nilai x selanjutnya x = xlama + h = 0 + 0.05 maka xbaru = a = 0.05

𝑓 (𝑎 + ℎ) = 𝑓(0.05 + 0.05) = (0.05 + 0.05)2 = 0.01

𝑓 (𝑎) = 𝑓(0.05) = (0.05)2 = 0.0025

𝑓(𝑎+ℎ)−𝑓(𝑎)
𝑓 (𝑥 ) = ℎ

0.01−0.0025 0.0075
𝑓 (0.05) = = = 0.15
0.05 0.05

Gambar 2, (Kiri): Fungsi x2 dan (Kanan): hasil turunan menggunakan finite difference (biru), hasil
turunan analitik (merah)

8
Proses dari Tahap 1 dan Tahap 2 akan terus dilakukan hingga mencapai batas terkahir ketika b =
5 dengan selang h = 0.05 (N = 100 data). Sehingga hasil akhir secara menyeluruh dalam bentuk
visual adalah seperti pada Gambar 2 di atas. Gambar 2 (kiri) merupakan fungsi asli ketika 𝑓 (𝑥 ) =
𝑥 2 dan fungsi ini disebut sebagai fungsi kuadrat. Setelah fungsi tersebut diturunkan, maka hasilnya
seperti pada Gambar 2 (kanan). Fungsi turunan dari fungsi asli (fungsi kuadrat) akan menghasilkan
fungsi linier, dimana fungsi turunannya adalah 𝑓(𝑥 ) = 2𝑥. Garis biru pada Gambar 2 (kanan)
merupakan hasil turunan menggunakan metode finite difference – forward difference sedangkan
garis merah pada Gambar 2 (kanan) merupakan hasil turunan secara analitik, ketika nilai x
memiliki rentang dari a = 0 sampai b = 5 dengan selang h = 0.05.

Algoritma

1. Tentukan batas awal a


2. Tentukan batas awal b
3. Tentukan banyak data N
4. Hitung selisih h menggunakan persamaan (4)
5. Hitung fungsi asli pada rentang a sampai b dengan selang h
6. Hitung fungsi turunannya menggunakan persamaan (1) untuk kasus forward difference

Latihan
Buatkah program finite difference untuk kasus forward difference pada fungsi 𝑓 (𝑥 ) = 𝑥 2 .

PSEUDOCODE

A = input('MASUKAN BATAS AWAL:');


B = input('MASUKAN BATAS AKHIR:');
N = input('MASUKAN BANYAK DATA:');

% Hitung untuk mendapatkan selisih


H = (B-A)/N;

% Hitung Forward Difference Orde Pertama


X = A:H:B;
Set F

Loop I = 1:N
FX(I) = (F(I+1) - F(I))/H;
End Loop I

% Save Output
fileID = fopen('Nama_Output.txt','w');
fprintf(fileID,'%6s %6s %6s\r\n','X','F','FX');
fprintf(fileID,'%6.2f %6.2f %6.2f\r\n',X,F,FX);

9
Set FXA %Set FXA sebagai turunan F (Uji Secara Analitik)

subplot(1,2,1)
plot(X(2:N),F(2:N),'b')
xlabel('X')
ylabel('F(X) = X^{2}')
title('FUNGSI DASAR')
legend('Fungsi Dasar','location','NorthWest')
grid minor

subplot(1,2,2)
plot(X(2:N),FX(2:N),'b','linewidth',1.5)
hold on;
plot(X(2:N),FXA(2:N),'r')
xlabel('X')
ylabel('dF(X) = 2X')
title('FUNGSI TURUNAN')
legend('Forward
Difference','Analitik','location','NorthWest')
grid minor
Tugas

1. Buatlah program finite difference untuk kasus backward difference dan central difference
dengan menggunakan fungsi 𝑓 (𝑥 ) = 2𝑥 4 , dan plotlah hasil perhitungan fungsi awal, serta
turunannya secara numerik dan secara analitik! (untuk a = 0, b = 10 dan N = 100)
2. Apakah hasil antara backward difference dengan central difference dari fungsi yang
digunakan terdapat perbedaan? Jelaskan!

10
HIGH ORDE DERIVATIVE
Tujuan

1. Memahami konsep high orde derivatie secara umum


2. Memahami konsep high orde derivative, baik secara matematik dan numerik
3. Mampu merancang program high orde derivative
4. Mampu memvisualisasikan hasil high derivative

Teori

Persamaan diferensial merupakan persamaan matematika untuk menjelaskan hubungan nilai suatu
fungsi dan turunannya dalam berbagai orde. Secara analitik proses diferensial dapat dilakukan
dengan cara berikut:

𝑦 = 𝑥𝑛 (1)
𝑑𝑦
= 𝑛𝑥 𝑛−1 (2)
𝑑𝑥

𝑑2 𝑦
= 𝑛(𝑛 − 1)𝑥 𝑛−2 (3)
𝑑𝑥 2

Sehingga untuk mendapatkan diferensial pertama dan kedua dari suatu persamaan matematika 𝑦 =
𝑥 3 dapat ditulis:

𝑦 = 𝑥3 (4)
𝑑𝑦
= 3𝑥 3−1 = 3𝑥 2 (5)
𝑑𝑥

𝑑2 𝑦
𝑑𝑥 2
= 3(3 − 1)𝑥 3−2 = 6𝑥 (6)

Contoh diatas merupakan contoh sederhana untuk menyelesaikan persamaan diferensial. Untuk
menyelesaikan persamaan diferensial yang lebih kompleks, perlu digunakan proses komputasi
dalam menyelesaikannya. Proses komputasi tidak bisa menyelesaikan problem dengan cara
menggunakan persamaan diatas, karena proses komputasi menyelesaikan problem dengan cara
pendekatan (aproksimasi). Salah satu pendekatan yang bisa digunakan untuk menyelesaikan
problem diferensial yaitu dengan menggunakan deret Taylor. Deret Taylor dapat ditulis dengan:

ℎ2 𝑦′′ (𝑥)
𝑦(𝑥 + ℎ) ≈ 𝑦(𝑥 ) + ℎ𝑦 ′ (𝑥 ) + +⋯ (7)
2!

Untuk menyelesaikan turunan pertama, dari deret diatas digunakan dua suku pertama yaitu:

𝑦(𝑥 + ℎ) ≈ 𝑦(𝑥 ) + ℎ𝑦 ′ (𝑥 ) (8)

11
Sehingga turunan orde-1 𝑦 ′(𝑥 ) adalah:

𝑦(𝑥+ℎ)−𝑦(𝑥)
𝑦 ′ (𝑥 ) = (9)

Untuk turunan orde-2 𝑦′′ (𝑥 ) adalah:

𝑦′(𝑥+ℎ)−𝑦′(𝑥)
𝑦 ′ ′ (𝑥 ) = (10)

Dengan mensubtitusikan persamaan 𝑦 ′ (𝑥 ), maka persamaan 𝑦′′(𝑥 ) menjadi:

𝑦(𝑥+2ℎ)−2𝑦(𝑥+ℎ)+𝑦(𝑥)
𝑦 ′ ′ (𝑥 ) = (11)
ℎ2

Jika dituliskan dalam indek numerik, persamaan menjadi:

𝑦(𝑥𝑖+2 )−2𝑦(𝑥𝑖+1 )+𝑦(𝑥𝑖 )


𝑦 ′′(𝑥𝑖 ) = ℎ2
(12)

Untuk turunan lebih lanjut dapat dilakukan dengan melanjutkan proses turunan seperti pada orde-
2.

Contoh:

Fungsi yang digunakan 𝑦(𝑥 ) = 𝑥 3 , maka turunan pertamanya

𝑦 ′(𝑥 ) = 3𝑥 2

Dan turunan keduanya

𝑦 ′′(𝑥 ) = 6𝑥

ketika x = 2 disubtitusikan ke dalam fungsi turunan kedua, secara analitik diperoleh

𝑦 ′′(𝑥 ) = 6𝑥 = 6 (2) = 12

Dan secara numerik dapat menggunakan persamaan (11) untuk x = a = 0 dan N = 100, maka
𝑏−𝑎 5−0 5
ℎ= = = = 0.05
𝑁 100 100

𝑦(𝑥 + 2ℎ) = 𝑦(0 + 2 ∗ 0.05) = 𝑦(0.1) = (0.1)3 = 0.001 (13)

2𝑦(𝑥 + ℎ) = 2𝑦(0 + 0.05) = 2𝑦(0.05) = 2 ∗ (0.05)3 = 0.00025 (14)

𝑦(𝑥 ) = 𝑦(0) = 3(0)3 = 0 (15)

12
Persamaan (13) sampai (15) disubtitusi ke dalam persamaan (11)

𝑦(𝑥+2ℎ)−2𝑦(𝑥+ℎ)+𝑦(𝑥)
𝑦 ′ ′ (𝑥 ) = ℎ2

0.001−0.00025+0 0.00075
𝑦 ′′(0) = (0.05)2
= = 0.3
0.0025

Gambar 3. (Kiri): Fungsi awal, f(x) = x3. (Kanan): Fungsi turunan kedua, f’’(x) = 6x

Algoritma

1. Tentukan batas awal a


2. Tentukan batas awal b
3. Tentukan banyak data N
4. Hitung selisih h
5. Hitung fungsi asli dari rentang a sampai b dengan selang h
6. Hitung fungsi turunan kedua menggunakan persamaan (11)

Latihan

Buatlah program high orde derivative untuk fungsi 𝑓 (𝑥 ) = 𝑥 3

PSEUDOCODE

Input A = input('MASUKAN BATAS AWAL:');


Input B = input('MASUKAN BATAS AKHIR:');
Input N = input('MASUKAN BANYAK DATA:');

% Hitung untuk mendapatkan selisih


H = (B-A)/N;

13
% Hitung Forward Difference Orde Pertama
Set X
Set F

Loop I = 1:N
FX(I) = (F(I+2) - (2.*F(I+1)) + F(I))/(H.^2);
End Loop I

% Save Output
fileID = fopen('HighOrdeOut.txt','w');
fprintf(fileID,'%6s %6s %6s\r\n','X','F','FX');
fprintf(fileID,'%6.2f %6.2f %6.2f\r\n',X,F,FX);

Set FXA %Set FXA sebagai turunan ke-2 F(Uji Secara


Analitik)

subplot(1,2,1)
plot(X(1:N),F(1:N),'b')
xlabel('X')
ylabel('Function')
title('Original Function, f(x) = x^3')
legend('Original Function','location','NorthWest')
grid minor

subplot(1,2,2)
plot(X(1:N),FX(1:N),'b','linewidth',1.5)
hold on;
plot(X(1:N),FXA(1:N),'r')
xlabel('X')
ylabel('Second Derivative Function, f"(x)=6x')
title('High Orde Derivative (Second Orde)')
legend('High Orde (2nd
Orde)','Analytic','location','NorthWest')
grid minor

Tugas

1. Buatlah program untuk high orde derivative (orde kedua) dengan menggunakan fungsi
𝑓 (𝑥 ) = 2𝑥 4 dan plotlah perhitungan fungsi awal, hasil turunannya secara numerik dan
hasil turunan secara analitik! (untuk a = 0, b = 10 dan N = 100)
2. Berapakah, hasil turunan orde kedua secara numerik dan secara analitik ketika x = 3.5, x =
7 dan x = 8? Jelaskan!

14
BISECTION METHOD (METODE BAGI DUA)
Tujuan

1. Memahami konsep bisection method (metode bagi dua) secara umum untuk mencari nilai
akar dari suatu fungsi
2. Memahami konsep bisection method, baik secara matematik dan numerik
3. Mampu merancang program bisection method
4. Mampu memvisualisasikan hasil bisection method

Teori

Metode bagi dua (bisection method) termasuk ke dalam katagori metode kurung yang merupakan
suatu metode numerik sederhana untuk menentukan suatu nilai akar dari suatu persamaan yang
diberikan. Metode ini bekerja dengan membagi dua selang dari batas yang diberikan hingga
menemukan suatu nilai akar dari rentang tersebut dengan nilai kesalahan yang minimum. Metode
ini sangat sederhana dan mudah dipahami. Bentuk umum dari metode bagi dua adalah sebagai
berikut:
𝑥𝑖 + 𝑥𝑓
𝑥𝑟 = (1)
2

dimana:

xr = nilai akar yang dicari


xi = batas bawah
xf = batas atas

Prinsip kerja dari metode terkait adalah mencari suatu nilai akar dimana pada fungsi yang
digunakan dimana f(x) = 0, fungsi tersebut harus sama dengan nol. Dalam penggunaan yang lebih
lanjut, dalam metode numerik tidak akan memperoleh hasil yang cocok dengan hasil dari proses
analitik, melainkan mendekati hasil dari proses analitik. Maka dari itu perlu dikontrol dengan
perhitungan nilai kesalahan (error) yang minimum

𝑥𝑟𝑏𝑎𝑟𝑢 − 𝑥𝑟𝑙𝑎𝑚𝑎
𝑒𝑟𝑟𝑜𝑟 = | | 𝑥 100%. (2)
𝑥𝑟𝑏𝑎𝑟𝑢

Algoritma

1. Input batas bawah (xi) dan batas atas (xf)


2. Cek dengan syarat f(xi)*f(xf) <= 0, apabila memenuhi syarat tersebut maka lakukan
proses perhitungan dengan persamaan 1. Apabila sebaliknya, kembali ke nomor 1.
3. Menghitung akar dengan persamaan pertama di atas dengan syarat atau kondisi, jika:

15
a. f |xi|*f |xr| <= 0, maka atur xf = xr
b. f |xi|*f |xr| >= 0, maka atur xi = xr
c. f |xi|*f |xr| = 0, maka nilai akarnya adalah xr

4. Hitung nilai kesalahan (error) dengan persamaan (2) untuk perhitungan yang sudah
dilakukan.

Contoh:
Berapa nilai akar dari fungsi 𝑓 (𝑥 ) = 𝑥 − 5?

Jawab:
➢ Secara analitik
Syarat untuk memperoleh akar adalah 𝑓(𝑥 ) = 0, maka untuk fungsi 𝑓 (𝑥 ) = 𝑥 − 5 ketika 𝑥 = 0,
diperoleh

𝑓 (0) = 0 − 5 = −5

Dari fungsi di atas tidak memenuhi syarat untuk memperoleh suatu akar. Maka estimasikan nilai
x yang baru. Ketika 𝑥 = 5

𝑓 (5) = 5 − 5 = 0

Fungsi di atas 𝑓 (5) = 0 telah memenuhi syarat untuk memperoleh suatu akar, maka dapat
disimpulkan nilai akarnya ketika x = 5.

➢ Secara Numerik
Atur nilai batas bawah (xi) = 0 dan nilai batas atas (xf) = 5. Cek apakah dengan nilai batas tersebut
telah memenuhi syarat sesuai dengan langkah nomor 2 pada Algoritma di atas.

𝑓 (𝑥𝑖 ) = 𝑥𝑖 − 5
𝑓 (0) = 0 − 5 = −5

16
𝑓(𝑥𝑓 ) = 𝑥𝑓 − 5
𝑓 (5) = 5 − 5 = 0

𝑓 (𝑥𝑖 ) ∗ 𝑓(𝑥𝑓 ) ≤ 0
𝑓 (0) ∗ 𝑓 (5) ≤ 0
−5 ∗ 0 ≤ 0
0≤0 memenuhi sayarat f(xi)*f(xf) <= 0

Kemudian, hitung menggunakan persamaan (1)

𝑥𝑖 +𝑥𝑓 0+5 5
𝑥𝑟 = = = 2 = 2.5
2 2

Kemudian, cek kondisi menggunakan langkah ketiga pada bagian Algoritma di atas

𝑓 |𝑥𝑖 | = |𝑥𝑖 − 5| = |0 − 5| = |−5| = 5


𝑓 |𝑥𝑟 | = |𝑥𝑟 − 5| = |2.5 − 5| = |−2.5| = 2.5
𝑓 |𝑥𝑖 | ∗ 𝑓|𝑥𝑟 | ≤ 0
5 ∗ 2.5 ≤ 0
12.5 ≤ 0 tidak memenuhi syarat 𝑓|𝑥𝑖 | ∗ 𝑓 |𝑥𝑟 | ≤ 0. Artinya hanya memenuhi syarat
sebaliknya 𝑓|𝑥𝑖 | ∗ 𝑓 |𝑥𝑟 | ≥ 0, maka diatur 𝑥𝑖 = 𝑥𝑟 = 2.5. Kemudian, cek kembali dengan
mensubtitusikan nilai 𝑥𝑖 = 2.5 ke dalam fungsi 𝑓 (𝑥 ) = 𝑥 − 5, maka diperoleh 𝑓(𝑥𝑖 = 2.5) =
2.5 − 5 = −2.5. Kemudian hitung nilai erornya

𝑥𝑟𝑏𝑎𝑟𝑢 + 𝑥𝑟𝑙𝑎𝑚𝑎 2.5−5


𝑒𝑟𝑟𝑜𝑟 = | | 𝑥 100% = | | 𝑥 100% = 100 %.
𝑥𝑟𝑏𝑎𝑟𝑢 2.5

Hasil nilai akar sementara yang diperoleh 𝑥𝑟 = 2.5 dengan error sebesar 100 %, maka dapat
dikatakan nilai akar belum diperoleh yang sesuai. Ingat kembali bahwa untuk menentukan nilai
akar suatu fungsi harus memenuhi kondisi 𝑓 (𝑥 ) = 0. Karena ketika 𝑥 = 𝑥𝑟 = 2.5 belum
memperoleh nilai akar yang sesuai, maka hitung kembali dengan nilai batas yang baru, dimana nilai
awal 𝑥𝑖 = 𝑥𝑟 = 2.5 dan nilai akhir 𝑥𝑓 = 5.

17
Dengan menggunakan nilai batas yang baru, ulang kembali langkah-langkah pada Algoritma di
atas. Cek kembali kondisi 𝑓 (𝑥𝑖 ) ∗ 𝑓(𝑥𝑓 ) ≤ 0

𝑓 (𝑥𝑖 ) = 𝑥𝑖 − 5
𝑓 (2.5) = 2.5 − 5 = −2.5

𝑓(𝑥𝑓 ) = 𝑥𝑓 − 5
𝑓 (5) = 5 − 5 = 0

𝑓 (𝑥𝑖 ) ∗ 𝑓(𝑥𝑓 ) ≤ 0
𝑓 (2.5) ∗ 𝑓 (5) ≤ 0
−2.5 ∗ 0 ≤ 0
0≤0 memenuhi sayarat f(xi)*f(xf) <= 0

Kemudian, hitung menggunakan persamaan (1)

𝑥𝑖 +𝑥𝑓 2.5+5 7.5


𝑥𝑟 = = = = 3.75
2 2 2

Kemudian, cek kondisi menggunakan langkah ketiga pada bagian Algoritma di atas

𝑓 |𝑥𝑖 | = |𝑥𝑖 − 5| = |2.5 − 5| = |−2.5| = 2.5


𝑓 |𝑥𝑟 | = |𝑥𝑟 − 5| = |3.75 − 5| = |−1.25| = 1.25
𝑓 |𝑥𝑖 | ∗ 𝑓|𝑥𝑟 | ≤ 0
2.5 ∗ 1.25 ≤ 0
3.125 ≤ 0 tidak memenuhi syarat 𝑓|𝑥𝑖 | ∗ 𝑓 |𝑥𝑟 | ≤ 0. Artinya hanya memenuhi syarat
sebaliknya 𝑓|𝑥𝑖 | ∗ 𝑓 |𝑥𝑟 | ≥ 0, maka diatur 𝑥𝑖 = 𝑥𝑟 = 3.75. Kemudian, cek kembali dengan
mensubtitusikan nilai 𝑥𝑖 = 3.75 ke dalam fungsi 𝑓(𝑥 ) = 𝑥 − 5, maka diperoleh 𝑓 (𝑥𝑖 = 3.75) =
3.75 − 5 = −1.25. Kemudian hitung nilai erornya

𝑥𝑟𝑏𝑎𝑟𝑢 − 𝑥𝑟𝑙𝑎𝑚𝑎 3.75−2.5


𝑒𝑟𝑟𝑜𝑟 = | | 𝑥 100% = | | 𝑥 100% = 33.33 %.
𝑥𝑟𝑏𝑎𝑟𝑢 3.75

18
Hasil nilai akar sementara yang diperoleh 𝑥𝑟 = 3.75 dengan error sebesar 33.33 %, maka dapat
dikatakan nilai akar belum diperoleh yang sesuai, karena nilai erornya masih besar. Ingat kembali
bahwa untuk menentukan nilai akar suatu fungsi harus memenuhi kondisi 𝑓 (𝑥 ) = 0. Karena ketika
𝑥 = 𝑥𝑟 = 3.75 belum memperoleh nilai akar yang sesuai, maka hitung kembali dengan nilai batas
yang baru, dimana nilai awal 𝑥𝑖 = 𝑥𝑟 = 3.75 dan nilai akhir 𝑥𝑓 = 5. Lakukan proses yang sama
hingga mendapatkan nilai akar ketika 𝑓(𝑥 ) = 0 dan nilai eror yang mendekati 0 %.

Gambar 4. Visualisasi nilai akar yang diperoleh dari fungsi 𝑓 (𝑥 ) = 𝑥 − 5 (garis merah), dimana
nilai akarnya sama 𝑥 = 5 (lingkaran biru).

Latihan

Buatlah program bisection untuk menentukan akar dari fungsi 𝑓 (𝑥 ) = 𝑥 − 5.

PSEUDOCODE

%Plot fungsi untuk menduga


x = -10:0.01:10;
plot(x,f(x),x,x*0,'k');grid on;hold on
%Input xl dan xu;
xl=input('Masukkan batas awal dari interval dugaan:') ;

19
xu=input('Masukkan batas akhir dari interbal dugaan:');
Set eror
x = xl:0.01:xu %Ubah x menjadi area yang diinginkan

if f(xu)*f(xl)<0
%Membuat variabel output;
xg(1) = xu;
yg(1) = xl;
zg(1) = (xu+xl)/2;

for i=2:1000
xr=(xu+xl)/2;
if f(xu)*f(xr)<0
xl=xr;
else
xu=xr;
end

if f(xl)*f(xr)<0
xu=xr;
else
xl=xr;
end

p = plot(x,f(x),'k-'
,xu,f(xu),'c.',xl,f(xl),'b.',xr,f(xr),'r*');
p(2).MarkerSize = 12;
p(3).MarkerSize = 12;
grid on;
pause(1);

xg(i) = xu;
yg(i) = xl;
zg(i) = xr;

xnew(1)=0;
xnew(i)=xr;

if f(xl)*f(xr)== 0 break,end
if abs((xnew(i)-xnew(i-1))/xnew(i))<eror , break , end
end
str = ['Akar daripersamaan adalah: ', num2str(xr), '']

fileID = fopen('bisection.txt','w');

20
fprintf(fileID,'%6s %6s %6s\r\n','Xu','Xl','Xr');
fprintf(fileID,'%6.2f %6.2f %6.2f\r\n',xg,yg,zg);

else
fprintf('Dugaan tidak benar! Masukkan nilai dugaan
baru\n');
End Kondisi

function fungsi = f(x)


fungsi = x.^2-3;
end

Tugas

1. Buatlah program bisection untuk menentukan nilai akar dari fungsi 𝑓(𝑥 ) = 3𝑥 2 + 9𝑥 + 1!
2. Berapakah nilai akar dari fungsi pada nomor 1 secara analitik? Bandingkan dengan hasil
secara numerik (program)!
3. Plot fungsi tersebut dari batas xa = -5 sampai xb = 5

21
INTEGRASI: METODE EULER
Tujuan

1. Memahami konsep integrasi menggunakan metode euler secara umum


2. Memahami konsep integrasi euler, baik secara matematik dan numerik
3. Mampu merancang program integrasi euler
4. Mampu memvisualisasikan hasil integrasi euler

Teori

Setelah mempelajari bagaimana proses numerik untuk kasus diferensial pada bagian finite
difference dan high orde derivative. Selanjutnya proses numerik untuk kasus integral akan dibahas
pada bagian ini. Secara sederhana, intergal merupakan kebalikan dari diferensial dan secara
maematis integral berguna untuk mencari luasan di dalam suatu fungsi. Secara numerik, metode
yang digunakan untuk melakukan integral dari suatu fungsi adalah metode Euler. Tentunya, masih
banyak lagi metode-metode yang bisa digunakan untuk melakukan integral secara numerik.

Integrasi pada metode Euler diformulasikan dengan

𝑦1 = 𝑦0 + ℎ𝑦0′ (1)

Secara numerik dapat ditulis

𝑦𝑛+1 = 𝑦𝑛 + ℎ𝑦𝑛′ (2)

dimana n = 0, 1, 2, ... dan 𝑦𝑛′ merupakan fungsi 𝑓(𝑦𝑛 ) yang memiliki sampling waktu 𝑡1 = 𝑡0 + ℎ.
secara numerik untuk sampling waktu dapat ditulis

𝑡𝑛+1 = 𝑡𝑛 + ℎ
𝑏−𝑎
𝑛=

Pada akhirnya, bentuk persamaan (2) dapat ditulis lebih khusus

𝑦𝑛+1 = 𝑦𝑛 + ℎ𝑓(𝑡𝑛 , 𝑦𝑛 ) untuk n = 0, 1, 2, ...

Algoritma

1. Tentukan batas bawah 𝑥𝑖 , batas atas 𝑥𝑓 , dan selang data ℎ


𝑏−𝑎
2. Hitung banyak data 𝑛 = ℎ
3. Hitung fungsi turunan pertama 𝑓′(𝑥) untuk x = xi
4. Atur y = 0 dan x = xi
5. Hitung integral menggunakan metode Euler 𝑦 = 𝑦 + (𝑓 ∗ ℎ)
6. Hitung x yang baru 𝑥 = 𝑥 + ℎ (sebagai waktu)

22
7. Tampilkan x, y (dimana y merupakan fungsi yang sudah diintegralkan)

Contoh:

Diberikan suatu fungsi turunan pertama 𝑓 ′(𝑥 ) = 𝑥 2 . Tentukan fungsi aslinya!

Jawab:

➢ Secara analitik

𝑓 ′ (𝑥 ) = 𝑥 2

Diintegralkan akan memperoleh

1
𝑓 (𝑥 ) = ( 3 ) 𝑥 3

1 1 8
Jika 𝑥 = 2, maka 𝑓(𝑥 ) = ( ) 𝑥 3 = ( ) (2)3 = ( ) = 2.666
3 3 3

➢ Secara numerik menggunakan metode Euler

Atur xi = 0, xf = 10 dan ℎ = 0.1


𝑥𝑓 −𝑥𝑖 10−0 10
Hitung banyak data 𝑛 = = = 0.1 = 100
ℎ 0.1

Atur x = xi, y = 0 dan i = 0

Untuk x = xi = 0, maka 𝑓 ′(𝑥 = 𝑥𝑖 = 0) = 02 = 0 dan hasil intergal

𝑦 = 𝑦 + 𝑓 ′(𝑥 = 0) ∗ ℎ = 0 + (0 ∗ 0.1) = 0, ini untuk data yang pertama i = i + 1 = 0 + 1 = 1

Untuk xbaru = xlama + h = 0 + 0.1 = 0.1, maka 𝑓 ′(𝑥 = 𝑥𝑖 = 0.1) = (0.1)2 = 0.01 dan hasil integral

𝑦𝑏𝑎𝑟𝑢 = 𝑦𝑙𝑎𝑚𝑎 + 𝑓 ′(𝑥 = 0.1) ∗ ℎ = 0 + (0.01 ∗ 0.1) = 0.001, ini untuk daya yang kedua, ibaru =
ilama + 1= 1 + 1 =2

Proses yang sama dilakukan hingga mencapai i = n = 100 data. Ketika data suatu mencapai 100
data, diperoleh hasil intergal seperti pada Gambar 5.

23
Gambar 5. (Kiri): fungsi turunan pertama 𝑓 ′(𝑥 ) = 𝑥 2 , (Kanan): fungsi yang sudah diintegralkan
1
𝑓 (𝑥 ) = ( 3 ) 𝑥 3

Latihan

Buatlah program integrasi menggunakan metode Euler dari fungsi turunan pertama 𝑓 ′ (𝑥 ) = 𝑥 2 !
dengan batas awal 𝑥𝑖 = 0, 𝑥𝑓 = 10, ℎ = 0.1

PSEUDOCODE

Input XI = input('MASUKAN BATAS AWAL:');


Input XF = input('MASUKAN BATAS AKHIR:');
Input H = input('MASUKAN SELANG DATA:');

% Hitung untuk mendapatkan banyak data


N = (XF - XI)/H;

X = XI:H:XF;
SET F
i = 1;
Y(1) = 0;
while i < N+H

24
Y(i+1) = Y(i) + F(i).*H;
i = i + 1;
end

% Save Output
fileID = fopen('euler.txt','w');
fprintf(fileID,'%6s %6s %6s\r\n','X','Y','F');
fprintf(fileID,'%6.2f %6.2f %6.2f\r\n',X,Y,F);

SET FA % Integral dari Fungsi awal F

subplot(1,2,1)
plot(X(1:N),F(1:N))
title('Fungsi awal f(x)=x^2')
xlabel('X')
ylabel('F(x)')
grid minor

subplot(1,2,2)
plot(X(1:N),Y(1:N))
hold on
plot(X(1:N),FA(1:N))
title('Integrasi Metode Euler dan Analitik')
xlabel('X')
ylabel('Fungsi f(x)=(1/3)x^3')
legend('Integrasi Metode Euler','Integrasi
Analitik','location','NorthWest')
grid minor

Tugas

1. Buatlah program intergasi menggunakan metode Euler dari fungsi turunan pertama
𝑓 ′ (𝑥 ) = 122 + 16𝑥. Dengan 𝑥𝑖 = 0, 𝑥𝑓 = 10, ℎ = 0.01
2. Hasil pada nomor 1, bandingkan dengan hasil secara analitik. Apakah terdapat
perbedaannya? Jelaskan!

25
INTEGRASI: RUNGE-KUTTA ORDE DUA
Tujan

1. Memahami prinsip kerja dari metode Rungai kuta Orde 2


2. Dapat menjelaskan metode Rungai Kuta orde 2
3. Membuat, memahami dan menjelaskan algoritma metode Runge-Kuta orde 2

Teori
Sebelumnya telah dipelajari metode Euler untuk menyelesaikan proses integrasi. Untuk
mengembangkan metode tersebut agar lebih mendekati hasil analitk, C. Runge dan M. W. Kutta
mengembangkan metode Runge-Kutta. Metode Runge-Kutta (RK) terus berkembang dari metode
RK orde-2, orde-3 hingga orde-4. Pada praktikum kali ini, metode yang akan digunakan
merupakan metode Runge-Kutta orde-2. Metode runge kutta orde 2 berbentuk;

𝑘1 = 𝑓 (𝑦 ∗ (𝑡0), 𝑡0 )
𝑘2 = 𝑓(𝑦 ∗ (𝑡0 ) + 𝛽ℎ𝑘1 , 𝑡0 + 𝛼ℎ)
𝑦 (𝑡0 + ℎ) = 𝑦 ∗ (𝑡0) + ℎ(𝛼𝑘1 + 𝑏𝑘2 )

Dari persamaan tersebut, kita gunakan konstanta a = b = ½ dan 𝛼 = 𝛽 = 1. Sehingga persamaan


menjadi
𝑘1 = 𝑓 (𝑦 ∗ (𝑡0), 𝑡0 )
𝑘2 = 𝑓 (𝑦 ∗ (𝑡0) + ℎ𝑘1 , 𝑡0 + ℎ)
𝑘1 + 𝑘2
𝑦 ∗ (𝑡0 + ℎ) = 𝑦 ∗ (𝑡0) + ℎ ( )
2

Sehingga untuk mendeskripsikan algoritma dapat ditulis;

𝑘1 = 𝑓 (𝑦 ∗ (𝑡0), 𝑡0 ) Dugaan slope pada t = t0


𝑦1(𝑡0 + ℎ) = 𝑦 ∗ (𝑡0) + 𝑘1 ℎ Dugaan fungsi pada t = t0 + h
𝑘2 = 𝑓 (𝑦1(𝑡0 + ℎ), 𝑡0 + ℎ) Dugaan slope pada t = t0 + h
𝑘1 + 𝑘2 Dugaan 𝑦 ∗ (𝑡0 + ℎ) menggunakan slope rata-
𝑦 ∗ (𝑡0 + ℎ) = 𝑦 ∗ (𝑡0) + ℎ ( )
2 rata

Untuk menggunakan persamaan tersebut sebagai algoritma pemograman. Bentuk Integrasi pada
metode Runge-Kutta diformulasikan dengan;

𝑘1 = 𝑓 (𝑦0 , 𝑡0 )
𝑦1 (𝑡0 + ℎ) = 𝑦0 + ℎ𝑘1
𝑘2 = 𝑓 (𝑦1(𝑡0 + ℎ), 𝑡0 + ℎ)
𝑘 +𝑘
𝑦(𝑡0 + ℎ) = 𝑦0 + ℎ ( 1 2 2 ) (1)

Secara numerik dapat ditulis

26
𝑘1 = 𝑓 (𝑦𝑛 , 𝑡𝑛 )
𝑦1 (𝑡𝑛 + ℎ) = 𝑦𝑛 + ℎ𝑘1
𝑘2 = 𝑓 (𝑦1(𝑡𝑛 + ℎ), 𝑡𝑛 + ℎ)
𝑘 +𝑘
𝑦𝑛+1 = 𝑦𝑛 + ℎ ( 1 2 2 ) (2)

dimana n = 0, 1, 2, ... dan 𝑦𝑛′ merupakan fungsi 𝑓(𝑦𝑛 ) yang memiliki sampling waktu 𝑡1 = 𝑡0 + ℎ.
secara numerik untuk sampling waktu dapat ditulis

𝑡𝑛+1 = 𝑡𝑛 + ℎ
𝑏−𝑎
𝑛=

Algoritma

1. Tentukan batas bawah 𝑥𝑖 , batas atas 𝑥𝑓 , dan selang data ℎ


𝑏−𝑎
2. Hitung banyak data 𝑛 = ℎ
3. Tentukan nilai x = 𝑥𝑖 sampai 𝑥𝑓 , dengan selang data ℎ
4. Hitung f1 sebagai fungsi turunan pertama 𝑓(𝑥) untuk x
5. Hitung nilai 𝑘1 = ℎ ∗ 𝑓1
6. Hitung f2 = 𝑓 (𝑥 + ℎ) + 𝑘1
7. Hitung niali 𝑘2 = ℎ ∗ 𝑓2
𝑘 +𝑘
8. Hitung integral menggunakan metode Runge-Kutta 𝑦𝑛+1 = 𝑦𝑛 + ( 1 2 2 )
9. Tampilkan x, y (dimana y merupakan fungsi yang sudah diintegralkan)

Contoh:

Diberikan suatu fungsi turunan pertama 𝑓 ′(𝑥 ) = 𝑥 2 . Tentukan fungsi aslinya!

Jawab:

➢ Secara analitik

𝑓 ′ (𝑥 ) = 𝑥 2

Diintegralkan akan memperoleh

1
𝑓 (𝑥 ) = ( ) 𝑥 3
3

1 1 8
Jika 𝑥 = 2, maka 𝑓(𝑥 ) = (3) 𝑥 3 = (3) (2)3 = (3) = 2.666

➢ Secara numerik menggunakan metode Runge-Kutta

Atur xi = 0, xf = 10 dan ℎ = 0.1

27
𝑥𝑓 −𝑥𝑖 10−0 10
Hitung banyak data 𝑛 = = = 0.1 = 100, dan Atur x = xi, y = 0 dan i = 0
ℎ 0.1

Untuk x = xi = 0, maka 𝑓1(𝑥 = 𝑥𝑖 = 0) = 02 = 0 dan 𝑘1 = ℎ ∗ 𝑓1 = 0.1 𝑥 0 = 0

Untuk x = xi = 0, maka 𝑓2 = 𝑓(𝑥 + ℎ) + 𝑘1 = (0 + 0.1)2 + 0 = 0.01

Sehingga 𝑘2 = ℎ ∗ 𝑓2 = 0.1 𝑥 0.01 = 0.001, dan integralnya menjadi

𝑘 +𝑘 0+0.001
𝑦1 = 𝑦0 + ( 1 2 2 ) = 0 + ( 2 ) = 0.0005, ini untuk data indeks kedua yaitu i = i + 1 = 1 +
1 = 2. Data pertama telah diberikan sebelumnya yaitu y = 0.

Untuk looping selanjutnya, xbaru = xlama + h = 0 + 0.1 = 0.1,


Maka x = xi = 0.1, maka 𝑓1(𝑥 = 𝑥𝑖 = 0) = 0.12 = 0.01 dan 𝑘1 = ℎ ∗ 𝑓1 = 0.1 𝑥 0.01 = 0.001

Untuk x = xi = 0.1, maka 𝑓2 = 𝑓(𝑥 + ℎ) + 𝑘1 = (0.1 + 0.1)2 + 0.001 = 0.041

Sehingga 𝑘2 = ℎ ∗ 𝑓2 = 0.1 𝑥 0.041 = 0.0041, dan integralnya menjadi

𝑘 +𝑘 0.001+0.0041
𝑦𝑛+1 = 𝑦𝑛 + ( 1 2 2 ) = 0.0005 + ( ) = 0.0031, ini untuk data indeks ketiga yaitu i =
2
i + 1 = 2 + 1 = 3.

Proses yang sama dilakukan hingga mencapai i = n = 100 data. Ketika data suatu mencapai 100
data, diperoleh hasil intergal seperti pada Gambar 5.

Gambar 5. (Kiri): fungsi turunan pertama 𝑓 ′(𝑥 ) = 𝑥 2 , (Kanan): fungsi yang sudah diintegralkan
1
𝑓 (𝑥 ) = ( 3) 𝑥 3

28
Latihan
Buatlah program integrasi menggunakan metode Runge-Kutta dari fungsi turunan pertama
𝑓 ′(𝑥 ) = 𝑥 2 ! dengan batas awal 𝑥𝑖 = 0, 𝑥𝑓 = 10, ℎ = 0.1

PSEUDOCODE
XI = input(' MASUKAN X BATAS AWAL:');
XF = input(' MASUKAN X BATAS AKHIR:');
H = input('MASUKAN SELANG DATA:');

% Hitung untuk mendapatkan banyak data


N = (XF - XI)/H;

X = XI:H:XF;

SET f1
SET k1
SET f2
SET k2

% Proses Analitik
SET ya

y(1) = 0;
i = 1;
while i < N+1

% Numerik
y (i+1) = y(i) + ((k1(i)+k2(i))/2);
i = i + 1;
end

% Error
error = abs((ya-y)/ya).*100

% Save Output
fileID = fopen('rungekuta.txt','w');
fprintf(fileID,'%6s %6s %6s\r\n','X','Y','YA');
fprintf(fileID,'%6.2f %6.2f %6.2f\r\n',X,y,ya);

subplot(1,2,1)
plot(X(2:N),f1(2:N))
title('Fungsi awal f(x)=x^2')
xlabel('X')

29
ylabel('F(x)')
grid minor

subplot(1,2,2)
plot(X(2:N),y(2:N),'r-')
hold on
plot(X(2:N),ya(2:N),'-.','color',[0 1 0])
title('Integrasi Metode Euler dan Analitik')
xlabel('X')
ylabel('Fungsi f(x)=(1/3)x^3')
legend('Runge-Kutta','Analitik','location','NorthWest')
title('Perbandingan Metode RK dan Analitik')
grid minor

Tugas
1. Buatlah program intergasi menggunakan metode Runge-Kuta dari fungsi turunan pertama
𝑓 ′ (𝑥 ) = 122 + 16𝑥 Dengan 𝑥𝑖 = 0, 𝑥𝑓 = 10, ℎ = 0.01
2. Hasil pada nomor 1, bandingkan dengan hasil secara analitik. Apakah terdapat
perbedaannya? Jelaskan!

30

Anda mungkin juga menyukai