Tugas Kuliah Komnum SPANL Pascal
description
Transcript of Tugas Kuliah Komnum SPANL Pascal
-
Tugas Kuliah
KOMPUTASI NUMERIK
Dosen :
Dr. rer. nat. Ir. Yuswan Muharam, MT
Disusun Oleh :
Kelompok 4
1. Imas Mega Pratiwi (1306370524)
2. Mega Puspitasari (1306370713)
3. Ryan Andriant (1306409356)
DEPARTEMEN TEKNIK KIMIA
FAKULTAS TEKNIK
UNIVERSITAS INDONESIA
DEPOK, NOVEMBER 2014
-
Tugas
Buatlah program Pascal untuk menyelesaikan SPANL di bawah ini dengan menggunakan
Metode Newton.
663.3
12
919,3
828.12432
22
23
zyxw
xwxw
yzxywx
www
Pembahasan
SPANL di atas dapat diselesaikan dengan menggunakan metode Newton. Dalam
menyelesaiakan SPANL di atas diperlukan fungsi turunan pertama. Dimana dalam hal ini kami
menggunakan metode diferensial selisih maju dari ketiga metode diferensial yang ada untuk
mendapatkan persamaan turunan pertamanya.
h
xfhxfxf
)()()('
Di dalam menyelesaikan SPANL juga dikenal matriks Jacobian, dimana matriks yang
telah terbentuk kemudian dapat digunakan sebagai SPAL sehingga untuk mendapatkan solusi
x1 hingga xn dapat digunakan metode eliminasi Gauss. Bila x yang dihasilkan belum
memenuhi kriteria konvergensi yang diitetapkan, maka nilai x yang diperoleh ditambahkan
pada nilai x taksiran awal untuk kemudian digunakan sebagai nilai x baru. Perhitungan
dihentikan hingga konvergensi tercapai. Berikut listing program pascal yang digunakan untuk
menyelesaikan program pascal di atas :
program SPANL_Kelompok_4;
v
ar
a,b,c,it,i : integer;
y : real;
x : array [1..4] of real;
f : array [1..4] of real;
nf : array[1..4,1..5] of real;
xh : array [1..4] of real;
fxh : array [1..4] of real;
df : array [1..4] of real;
d : array [1..4] of real;
p : array[1..5] of real;
dx : array [1..4] of real;
begin
writeln('input taksiran awal : ');
for a:=1 to 4 do
-
readln(x[a]);
write('input jumlah iterasi : ');
readln(i);
for it:=1 to i do
begin
f[1]:=x[1]*x[1]*x[1]+2*x[1]*x[1]+3*x[1] ;
f[2]:=x[1]*x[2]+x[2]*x[3]+x[3]*x[4];
f[3]:=x[1]*x[1]+2*x[1]*x[2]+x[2]*x[2];
f[4]:=x[1]+x[2]+x[3]-x[4];
nf[1,5]:=12.828-4-f[1];
nf[2,5]:=-3.919-f[2];
nf[3,5]:=1-f[3];
nf[4,5]:=-3.663-f[4];
for a:=1 to 4 do
begin
for b:=1 to 4 do
begin
{diferensial selisih maju}
xh[b]:=x[b]+0.00001;
fxh[1]:=xh[1]*xh[1]*xh[1] + 2*xh[1]*xh[1] + 3*xh[1];
fxh[2]:=xh[1]*xh[2] + xh[2]*xh[3] + xh[3]*xh[4];
fxh[3]:=xh[1]*xh[1] + 2*xh[1]*xh[2] + xh[2]*xh[2];
fxh[4]:=xh[1] + xh[2] + xh[3] - xh[4];
df[a]:=(fxh[a]-f[a])/0.00001;
xh[b]:=x[b];
nf[a,b]:=df[a];
end;
end;
{eliminasi gauss}
{a. substitusi dan eliminasi}
for c:=1 to 3 do
begin
for a:=c to 4 do
begin
p[a]:= nf[a,c]/nf[c,c];
p[c]:=0;
for b:=1 to 5 do
nf[a,b]:=nf[a,b]-p[a]*nf[c,b] ;
end;
end;
{b. substitusi balik}
y:=0;
for a:=4 downto 1 do
begin
d[a]:=(nf[a,5]-y)/nf[a,a];
y:=0;
for b:=4 downto a do
y:= y+nf[a,b]*d[b];
end;
for a:=1 to 4 do
x[a]:=x[a]+d[a];
-
clrscr;
for a:=1 to 4 do
writeln('x',a,' = ',x[a]:9:4,' d',a,' = ',d[a]:5:2);
end;
end.
Adapun bagian-bagian program dari penyelesaian SPANL di atas adalah sebagai berikut :
program SPANL_Kelompok_4;
uses wincrt;
var
a,b,c,it,i : integer;
y : real;
x : array [1..4] of real;
f : array [1..4] of real;
nf : array[1..4,1..5] of real;
xh : array [1..4] of real;
fxh : array [1..4] of real;
df : array [1..4] of real;
d : array [1..4] of real;
p : array[1..5] of real;
dx : array [1..4] of real;
begin
end.
Bagian main program
writeln('input taksiran awal : ');
for a:=1 to 4 do
readln(x[a]);
write('input jumlah iterasi : ');
readln(i);
for it:=1 to i do
begin
f[1]:=x[1]*x[1]*x[1]+2*x[1]*x[1]+3*x[1] ;
f[2]:=x[1]*x[2]+x[2]*x[3]+x[3]*x[4];
f[3]:=x[1]*x[1]+2*x[1]*x[2]+x[2]*x[2];
f[4]:=x[1]+x[2]+x[3]-x[4];
nf[1,5]:=12.828-4-f[1];
nf[2,5]:=-3.919-f[2];
nf[3,5]:=1-f[3];
nf[4,5]:=-3.663-f[4];
Deklarasi Variabel
Main Program
Deklarasi
Fungsi
-
Bagian metode diferensiasi selisih maju pada proses menentukan turunan pertama
for a:=1 to 4 do
begin
for b:=1 to 4 do
begin
{diferensial selisih maju}
xh[b]:=x[b]+0.00001;
fxh[1]:=xh[1]*xh[1]*xh[1] + 2*xh[1]*xh[1] +
3*xh[1];
fxh[2]:=xh[1]*xh[2] + xh[2]*xh[3] + xh[3]*xh[4];
fxh[3]:=xh[1]*xh[1] + 2*xh[1]*xh[2] + xh[2]*xh[2];
fxh[4]:=xh[1] + xh[2] + xh[3] - xh[4];
df[a]:=(fxh[a]-f[a])/0.00001;
xh[b]:=x[b];
nf[a,b]:=df[a];
end;
end;
Bagian program eliminasi gauss
{eliminasi gauss}
{a. substitusi dan eliminasi}
for c:=1 to 3 do
begin
for a:=c to 4 do
begin
p[a]:= nf[a,c]/nf[c,c];
p[c]:=0;
for b:=1 to 5 do
nf[a,b]:=nf[a,b]-p[a]*nf[c,b] ;
end;
end;
{b. substitusi balik}
y:=0;
for a:=4 downto 1 do
begin
d[a]:=(nf[a,5]-y)/nf[a,a];
y:=0;
for b:=4 downto a do
y:= y+nf[a,b]*d[b];
end;
for a:=1 to 4 do
x[a]:=x[a]+d[a];
-
Berikut hasil eksekusi program dengan taksiran awal
w = x1 = 23,
x = x2 = 34
y = x3 = 56
z = x4 = 67
dengan jumlah iterasi 10.
Jadi, dapat disimpulkan dengan menggunakan program SPANL di atas, diperoleh hasil :
w = 26,5991
x = -142,5809
y = 11,1483
z = 51,6612