Anda di halaman 1dari 19

FINAL PROJECT

UAS KOMPUTASI NUMERIK


Dosen Pengampu : Prof. Sariyasa, Ph.D.

OLEH KELOMPOK II :

Ida Bagus Surya Dharma (1829101039)


I Wayan Pio Pratama (1829101040)
Luh Eka Kusumayanti (1829101041)
Ni Komang Rai Mirayanti (1829101042)
Putu Denatha Damarayana (1829101045)
I Putu Eka Sudarsana (1829101051)
I Nyoman Gede Ardi Yana Putra (1829101052)
I Gusti Ngurah Gede Yadnya Tenaya (1829101053)
I Made Suryana Dwipa (1829101054)
I Gusti Putu Hardi Yudana (1829101055)
Muhammad Saepuddin (1829101059)
I Putu Cerizta Arie Samana (1829101063)
I Putu Septian Arya Candra (1829101064)

PROGRAM STUDI ILMU KOMPUTER

PASCASARJANA UNIVERSITAS PENDIDIKAN GANESHA

2019
Computer Problem 4.2 halaman 106 No. 3b
Write a MATLAB function to solve the system of equations that finds the coefficients a1, a2, a3
of a parabola defined by y = a1x2 + a2x+ a3 given three points through which the parabola
passes. Find the equation of the parabolas passing through the following set of points : (1, 5.0),
(−2, 7.1), (3, 6.6).
Solusi :
a. MATLAB Script

function [oC,oX] = gaussel(A,b)


% Solve the system Ax=b using Gaussian elimination with scaled
% partial pivoting.
n=length(b);
x=zeros(n,1);
augm =[A b];
for i=1:n
d(i)=i;
smax=0;
for j=1:n
smax=max(smax,abs(A(i,j)));
end
c(i)=smax;
end
for k=1:n-1
rmax=0;
for i=k:n
R=abs(A(d(i),k))/c(d(i));
if (R>rmax)
j=i;
rmax=R;
end
end
dk=d(j);
d(j)=d(k);
d(k)=dk;
for i=k+1:n
m=A(d(i),k)/A(dk,k);
for j=k+1:n
A(d(i),j)=A(d(i),j)-m*A(dk,j);
end
A(d(i),k)=m;
end
end
% Perform the back substitution.
for k=1:n-1
for i=k+1:n
b(d(i))=b(d(i))-b(d(k))*A(d(i),k);
end
end
x(n)=b(d(n))/A(d(n),n);
for i=n-1:-1:1
S=b(d(i));
for j=i+1:n
S=S-A(d(i),j)*x(j);
end
x(i)=S/A(d(i),i);
end
for i=1:n
M(i,:)=A(d(i),:);
end
for i=1:n
for j=1:n
if (j<i) M(i,j)=0; end
end
end
C=[M b];
oC=C;
oX=x;
end
b. Penjelasan

Untuk menemukan nilai dari koefisien a 1, a 2, a 3 dari persamaan parabola y = a 1x2 + a 2x +


a 3 yang melalui titik-titik (1, 5.0), (−2, 7.1), (3, 6.6) digunakan fungsi gaussel. Dalam
menggunakan fungsi gaussel, perlu dilakukan substitusi setiap nilai pada titik-titik yang
dilalui ke dalam fungsi y yang diberikan. Sehingga diperoleh hasil sebagai berikut:

a. Substitusi nilai pada titik (1, 5.0) ke persamaan y diperoleh:

a 1 ( 1 )2+ a2 (1 )+ a3=5

b. Substitusi nilai pada titik (−2, 7.1) ke persamaan y diperoleh:


a 1 (−2 )2 +a2 (−2 ) +a3 =7.1

c. Substitusi nilai pada titik (3, 6.6) ke persamaan y diperoleh:


a 1 32 +a2 ( 3 ) +a3 =6.6

Apabila dibentuk dalam matriks akan menjadi sebagai berikut:

1 1 1 a1 5

[ 4 −2 1
9 3 1 ][] [ ]
a2 = 7.1
a3 6.6

The augmented matrix along with the row multipliers mi1 are

Pivotal element → 1 1 1 a1 5
m21=4
m31=9
4 −2 1
9 3 1 [ ][] [ ]
a2 = 7.1
a3 6.6

Pertama, dilakukan reduksi baris kedua dan ketiga terhadap baris pertama, maka
diperoleh hasil sebagai berikut:

1 1 1 a1 5
Pivotal element →
m32=−6 [
0 −6 −3
0 −6 −8 ][ ] [ ]
a2 = −12.9
a3 −38.4
Terakhir, dilakukan reduksi baris ketiga terhadap baris kedua, maka diperoleh
triangular system sebagai berikut:

1 1 1 a1 5

[ 0 −6 −3
0 0 −5 ][ ] [ ]
a2 = −12.9
a3 −25.5

Selanjutnya proses substitusi kembali diterapkan pada sistem segitiga menghasilkan


solusi sebagai berikut:

a. -5a 3 = -25.5
−25.5
a 3= =5.1
−5

b. -6a 2 - 3a 3 = -12.9
-6a 2 – 3(5.1)= -12.9
-6a 2 – 15.3 = -12.9
2.4
a 2= = -0.4
−6

c. a 1 + a 2 +a 3 = 5
a 1 + -0.4 + 5.1 = 5
a 1 + 4.7 = 5
a 1 = 0.3

c. Hasil dan Tampilan


Gambar 1. Tampilan Sistem Persamaan Parabola menggunakan Fungsi Gaussel Pada Matlab

Computer Problem 4.3 halaman 117 No. 4


Solve the following system using the MATLAB functions gaussel.m
−3.481 4.701 −6.085 −6.867 x1 2.511

[ 7.024 −1.611 −2.494 −4.337


9.661 9.023 −9.422 7.129
7.614 −8.928 −5.643 −8.261
][ ] [ ]
x 2 −4.144
=
x 3 −7.448
x 4 −2.143

Solusi :
a. MATLAB Script
function [oC,oX] = gaussel(A,b)
% Solve the system Ax=b using Gaussian elimination with scaled
% partial pivoting.
n=length(b);
x=zeros(n,1);
augm =[A b];
for i=1:n
d(i)=i;
smax=0;
for j=1:n
smax=max(smax,abs(A(i,j)));
end
c(i)=smax;
end
for k=1:n-1
rmax=0;
for i=k:n
R=abs(A(d(i),k))/c(d(i));
if (R>rmax)
j=i;
rmax=R;
end
end
dk=d(j);
d(j)=d(k);
d(k)=dk;
for i=k+1:n
m=A(d(i),k)/A(dk,k);
for j=k+1:n
A(d(i),j)=A(d(i),j)-m*A(dk,j);
end
A(d(i),k)=m;
end
end
% Perform the back substitution.
for k=1:n-1
for i=k+1:n
b(d(i))=b(d(i))-b(d(k))*A(d(i),k);
end
end
x(n)=b(d(n))/A(d(n),n);
for i=n-1:-1:1
S=b(d(i));
for j=i+1:n
S=S-A(d(i),j)*x(j);
end
x(i)=S/A(d(i),i);
end
for i=1:n
M(i,:)=A(d(i),:);
end
for i=1:n
for j=1:n
if (j<i) M(i,j)=0; end
end
end
C=[M b];
oC=C;
oX=x;
end

b. Penjelasan
Pada kasus ini, diberikan matriks sebagai berikut:
−3.481 4.701 −6.085 −6.867 x1 2.511

[ 7.024 −1.611 −2.494 −4.337


9.661 9.023 −9.422 7.129
7.614 −8.928 −5.643 −8.261
][ ] [ ]
x 2 −4.144
=
x 3 −7.448
x 4 −2.143

Untuk menentukan nilai dari koefisien x 1, x 2, x 3 dari persamaan berdasarkan pada


matriks diatas digunakan fungsi gaussel seperti pada Problem 4.2 pada pembahasan
sebelumnya.

Pivotal element → −3.481 4.701 −6.085 x1 2.511

][ ] [ ]
−6.867
m21=7.024
m31=9.661
m41=7.614
[ 7.024 −1.611 −2.494
9.661 9.023 −9.422
7.614 −8.928 −5.643
−4.337
7.129
−8.261
x2
x3
x4
=
−4.144
−7.448
−2.143

Pertama, dilakukan reduksi baris kedua, ketiga dan keempat terhadap baris pertama,
maka diperoleh hasil sebagai berikut:

4.701 x1 2.511

][ ] [ ]
¿ −3.481 −6.085 −6.867
Pivotal element →
m32=22.06993
m42=1.354509
[
0
0
0
7.874729 14.7724
22.06993 −26.31
1.354509 18.9527
18.1933
11.9293
23.2812
x2
x3
x4
=
0.922723
−0.47909
3.349317
Selanjutnya, dilakukan reduksi baris ketiga dan keempat terhadap baris kedua, maka
diperoleh hasil sebagai berikut:

4.701 x1 2.511

][ ] [ ]
−3.481 −6.085 −6.867

[
¿
¿ 0 7.874729 14.7724 18.1933 x2 0.922723
Pivotal element → =
0 0 15.09145 39.05971 x3 −3.06514
m43=−16.4118 0 0 −16.4118 −20.1518 x4 3.190602

Kemudian, dilakukan reduksi baris keempat terhadap baris ketiga, maka diperoleh
hasil akhir matriks sebagai berikut:

4.701 x1 2.511

][ ] [ ]
−3.481 −6.085 −6.867

[ 0
0
0
7.874729 14.7724 18.1933
0
0
15.09145 39.05971
0 22.32516
x2
x3
x4
=
0.922723
−3.06514
−0.1427

Berdasarkan pada matriks yang diperoleh pada bagian terakhir, maka koefisien x 1, x 2,
x 3 dapat dihitung sebagai berikut:

a. 22.32516 x 4 = −0.1427
−0.1427
x4 = =0.00639
22.32516

b. 15.09145 x3 +39.05971 x 4=−3.06514


15.09145 x3 +39.05971(0.00639)=−3.06514
x 3=−0.18656

c. 7.874729 x2 +14.7724 x 3 +18.1933 x 4=0.922723


7.874729 x2 +14.7724 (−0.18656)+18.1933(0.00639)=0.922723
x 2=−0.24757

d. −3.481 x1 + 4.701(−0.24757)−6.085(−0.24757)−6.867( 0.00639)= 2.511


x 1=−0.71695

c. Hasil dan Tampilan

Gambar 2 . Tampilan Sistem Perkalian Matriks menggunakan Fungsi Gaussel Pada Matlab
Computer Problem 4.4 halaman 131 No. 1

Write a computer program in a language of your choice to solve a system of n linear


equations and n unknowns using the LU decomposition. Input data to the program should be
a. The number of equations n.
b. The augmented matrix
Output should consist of :
a. The augmented matrix.
b. The L and U matrices.
c. The vector solution.
Test your program to solve Exercise 1(b)

Solusi :
a. MATLAB Script
function [oL,oU,oY,oX] = lufact(A,b)
% Solve the system Ax=b using the LU decomposition.
n=length(b);
y=zeros(n,1);
x=zeros(n,1);
fprintf('\n');
for i=1:n
U(i,i)=1;
end
L(1,1)=A(1,1)/U(1,1);
for j=2:n
L(j,1)=A(j,1)/U(1,1);
U(1,j)=A(1,j)/L(1,1);
end
for i=2:n-1
S=0;
for k=1:i-1
S=S+U(k,i)*L(i,k);
end
L(i,i)=(A(i,i)-S)/U(i,i);
for j=i+1:n
S=0;
for k=1:i-1
S=S+U(k,i)*L(j,k);
end
L(j,i)=(A(j,i)-S)/U(i,i);
S=0;
for k=1:i-1
S=S+U(k,j)*L(i,k);
end
U(i,j)=(A(i,j)-S)/L(i,i);
end
end
S=0;
for k=1:n-1
S=S+U(k,n)*L(n,k);
end
L(n,n)=(A(n,n)-S)/U(n,n);
% Perform the forward substitution.
y(1)=b(1)/L(1,1);
for i=2:n
S=b(i);
for j=1:i-1
S=S-L(i,j)*y(j);
end
y(i)=S/L(i,i);
end
% Perform the back substitution.
x(n)=y(n)/U(n,n);
for i=n-1:-1:1
S=y(i);
for j=i+1:n
S=S-U(i,j)*x(j);
end
x(i)=S/U(i,i);
end

oL=L;
oU=U;
oY=y;
oX=x;
end

b. Penjelasan
LU decomposition merupakan salah satu pendekatan selain gauss dalam penyelesaian
permasalahan persamaan linear. LU decomposition memanfaatkan matrix segitiga bawah
(L) dengan matrik segitiga atas (U), dalam pencarian solusi atas permasalahan persamaan
linear.

Contoh :

1 2 4 x1 3

[
Tentukan solusi x1, x2, dan x3 pada soal berikut 3 8 14 x 2
2 6 13 x 3 ][ ] [ ]
= 13 , dengan metode
4
LU’s decomposition.

Jawab :

1 2 4 1 0 0 U 11 U 12 U 13

[ ] L
A = 3 8 14 = LU dimana L= 21
2 6 13
1
[0
L31 L32 1 ] [ ]
dan U= 0 U 22 U 23
0 0 U 33

U 11 U 12 U 13 1 2 4

[
LU= L21 U 11 L21 U 12 +U 22
][ ]
L21 U 13 +U 23
L31 U 11 L31 U 12 + L32 U 22 L31 U 13+ L32 U 23+ U 33
= 3 8 14
2 6 13

Sehingga diperoleh, U 11 =1 ,U 12=2 , U 13 =4. Lakukan substitusi ke persamaan lain


seperti L21 U 11 =3 , maka diperoleh nilai L21=3, begitupula untuk persamaan lain hingga
diperoleh U 22=2, U 23=2, L31=2, L32=1, L33=3. Akhirnya diperoleh matrik decompisisi
sebagai berikut.
1 0 0 1 2 4

[ ] [ ]
L= 3 1 0 , U = 0 2 2
2 1 1 0 0 3
Selanjutnya mencari solusi Y atas persamaan berikut LY =B.
1 0 0 y1 3

[ ][ ] [ ]
3 1 0 y 2 = 13
2 1 1 y3 4
Dengan substitusi langsung pada persamaan diatas maka diperoleh
y 1=3 , y 2=4 , dan y 3=−6
Langkah terakhir adalah menyelesaikan persamaan berikut UX =Y

1 2 4 x1 3

[ ][ ] [ ]
0 2 2 x2 = 4
0 0 3 x 3 −6

Dengan substitusi langsung pada persamaan diatas maka diperoleh solusi X sebagai
berikut.

3
X= 4
−2 []
c. Hasil/Tampilan
- Tampilan 1
Gambar 3.1 . Tampilan Sistem Persamaan Linier menggunakan Fungsi Lufact

- Tampilan 2

Gambar 3.2. Tampilan Sistem Persamaan Linier menggunakan Fungsi Lufact menggunakan LU
Decomposition
Computer Problem 4.4 halaman 131 No. 2a
The following 8 by 8 tridiagonal system of equations arise in the solution of partial differential equations
using the finite difference method

x1

[−2⋱ 1 ¿ ¿ 1 −2 1 ¿−2
⋱ ⋱ ¿ 1 −2 ¿ ¿
¿ ] []
x2
⋮ = b.
x7
x8
Use the MATLAB function lufact to solve the system for the b [1 1 ... 1] vectors.
Solusi :
a. MATLAB Script

function [oL,oU,oY,oX] = lufact(A,b)


% Solve the system Ax=b using the LU decomposition.
n=length(b);
y=zeros(n,1);
x=zeros(n,1);
fprintf('\n');
for i=1:n
U(i,i)=1;
end
L(1,1)=A(1,1)/U(1,1);
for j=2:n
L(j,1)=A(j,1)/U(1,1);
U(1,j)=A(1,j)/L(1,1);
end
for i=2:n-1
S=0;
for k=1:i-1
S=S+U(k,i)*L(i,k);
end
L(i,i)=(A(i,i)-S)/U(i,i);
for j=i+1:n
S=0;
for k=1:i-1
S=S+U(k,i)*L(j,k);
end
L(j,i)=(A(j,i)-S)/U(i,i);
S=0;
for k=1:i-1
S=S+U(k,j)*L(i,k);
end
U(i,j)=(A(i,j)-S)/L(i,i);
end
end
S=0;
for k=1:n-1
S=S+U(k,n)*L(n,k);
end
L(n,n)=(A(n,n)-S)/U(n,n);
% Perform the forward substitution.
y(1)=b(1)/L(1,1);
for i=2:n
S=b(i);
for j=1:i-1
S=S-L(i,j)*y(j);
end
y(i)=S/L(i,i);
end
% Perform the back substitution.
x(n)=y(n)/U(n,n);
for i=n-1:-1:1
S=y(i);
for j=i+1:n
S=S-U(i,j)*x(j);
end
x(i)=S/U(i,i);
end

oL=L;
oU=U;
oY=y;
oX=x;
end

b. Penjelasan
Penyelesaian persoalan diatas dapat dilakukan dengan fungsi lufact. Adapun cara penyelesaian
permasalahan tersebut sama seperti contoh pada soal sebelumnya. Dengan metode LU decomposition

x1

maka permasalahan [−2⋱


dan solusi sebagai berikut.
1 ¿ ¿ 1 −2 1 ¿−2
⋱ ⋱ ¿ 1 −2 ¿ ¿
¿ ] []
x2

x7
x8
= b. Menghasilkan matrik L, U, Y,

¿ ¿ ¿ 1 −1.5 ¿ ¿ ¿
L= [−21 ¿
−1.3333 ¿ ¿ ¿ 1 −1.25 ¿ ¿ ¿
−1.2 ¿ ¿ ¿ ¿ 1 ¿−1.1667 ¿ ¿ ¿ 1 ¿−1.1429 ¿ ¿ 1 ¿−1.125 ¿ ]
U= [ 11 −0.5 ¿ ¿ ¿
−0.6667 ¿ ¿ ¿
−0.75 ¿ ¿ ¿ ¿ ¿ 1 ¿−0.8 ¿ ¿ ¿ ¿1 ¿−0.8333 ¿ ¿ ¿ 1 ¿−0.8571 ¿ ¿ 1 ¿−0.8755 ¿ 1 ¿ ]
−0.5

[]
−1
−1.5
Y = −2
−2.5
−3
−3.5
−4
−4

[]
−7
−9
−10
X=
−10
−9
−7
−4

c. Hasil/Tampilan

Gambar 4. Tampilan Sistem Perkalian Matriks Tridiagonal Menggunakan Fungsi Lufact

Computer Problem 4.4 halaman 131 No. 3c


Generate a 15 × 15 matrix A using the MATLAB command rand and then use the MATLAB function
lufact to solve the linear system Ax = b for the b = [0.1 0.2 0.3 ... 0.15]’.
Solusi :
a. MATLAB Script
function lufactRand(b)
% Solve the system Ax=b using the LU decomposition.
A=rand(15,15);
disp(' Display random matrix :')
A
n=length(b);
y=zeros(n,1);
x=zeros(n,1);
fprintf('\n');
for i=1:n
U(i,i)=1;
end
L(1,1)=A(1,1)/U(1,1);
for j=2:n
L(j,1)=A(j,1)/U(1,1);
U(1,j)=A(1,j)/L(1,1);
end
for i=2:n-1
S=0;
for k=1:i-1
S=S+U(k,i)*L(i,k);
end
L(i,i)=(A(i,i)-S)/U(i,i);
for j=i+1:n
S=0;
for k=1:i-1
S=S+U(k,i)*L(j,k);
end
L(j,i)=(A(j,i)-S)/U(i,i);
S=0;
for k=1:i-1
S=S+U(k,j)*L(i,k);
end
U(i,j)=(A(i,j)-S)/L(i,i);
end
end
S=0;
for k=1:n-1
S=S+U(k,n)*L(n,k);
end
L(n,n)=(A(n,n)-S)/U(n,n);
% Perform the forward substitution.
y(1)=b(1)/L(1,1);
for i=2:n
S=b(i);
for j=1:i-1
S=S-L(i,j)*y(j);
end
y(i)=S/L(i,i);
end
% Perform the back substitution.
x(n)=y(n)/U(n,n);
for i=n-1:-1:1
S=y(i);
for j=i+1:n
S=S-U(i,j)*x(j);
end
x(i)=S/U(i,i);
end
L
disp(' The forward substitution gives')
y
U
disp(' The vector solution is =')
x
disp(' Accuracy =')
u=A*x-b
end

b. Penjelasan
Untuk kasus data berukuran 15x15 dengan elemen-elemen dalam matrik merupakan bilangan
random yang dihasilkan dari fungsi rand() di MATLAB. Fungsi rand() dalam MATLAB
menghasilkan nilai acak berkisar antara 0-1. Sedangkan pada matrik b berukuran 15x1 berisikan
nilai dari 0.1 sampai dengan 0.15. Dalam pencarian solusi atas permasalahan tersebut, maka
digunakan fungsi lufactRand.m yang merupakan custom function dari lufact.m, perbedaannya
hanyalah lufactRand.m secara otomatis me-generate matrik input berukuran 15x15 secara
random. selanjutnya setelah diperoleh solusi dalam bentuk matrik X, maka dapat dihitung akurasi
dari solusi yang diperoleh dengan persamaan A X −b=O, yang mana O merupkan matrik
dengan elemen 0, X merupkan solusi yang diperoleh, dan A adalah matrik dengan elemen
random berukuran 15x15. Apabila nilai A X −b semakin dekat dengan matrik O maka
mengindikasikan bahwa solusi yang dihasilkan semakin dekat dengan solusi eksak.
c. Hasil/Tampilan
- Tampilan 1

Gambar 5.1 Tampilan Sistem Perkalian Matriks menggunakan Fungsi Lufactrand

- Tampilan 2

Gambar 5.2 Tampilan Sistem Perkalian Matriks menggunakan Fungsi Lufactrand

- Tampilan 3
Gambar 5.3 Tampilan Sistem Perkalian Matriks menggunakan Fungsi Lufactrand

- Tampilan 4

Gambar 5.4 Tampilan Sistem Perkalian Matriks menggunakan Fungsi Lufactrand

- Tampilan 5
Gambar 5.5 Tampilan Sistem Perkalian Matriks menggunakan Fungsi Lufactrand

Anda mungkin juga menyukai