Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

1.

PROGRAM CARI AKAR

Program CariAkar;
Uses winCrt;
Function
f(x:real):real;
begin
f:=(2*x*x-9*x+9);
end;
Var a,b,c,d:real;
Begin
Write('Masukkan nilai a = ');readln(a);
Repeat
a := b;
b := a+1;
Until f(a)*f(b)<=0;
writeln ('akarnya berada pada selang adalah (',a,' sampai',b,')');
End.

2. PROGRAM METODE BAGI DUA

Program Metode_Bagi2;
Uses wincrt;
Function
f(x:real):real;
begin
f:=(2*x*x-9*x+9);
end;
Var a,b,akar,e,t:real;
Begin
write('masukkan nilai a=');readln(a);
write('masukkan nilai b=');readln(b);
write('masukkan nilai e=');readln(e);
Repeat
t:=(a+b)/2;
if f(a)*f(t)<0 then b:=t
else a:=t;
if (abs(b-a)<=e) then akar:=t;
if f(a)*f(t)=0 then akar:=t;
writeln('akar=',akar,' ft=',f(t));
Until f(a)*f(t)=0;
End.
3. METODE NEWTON RAPHSON

Program Newton_Raphson;
Uses winCrt;
function
f(x:real):real;
begin
f:=(x*x-x-6);
end;
function
g(x:real):real;
begin
g:=(2*x-1);
end;
Var a,m,abar,literasi:real;
Begin
write('masukan nilai a='); readln (a);
write('masukan sampai lagkah berapa='); readln(m);
literasi := 1;
if g(a) = 0 then writeln('turunan tidak boleh sama dengan 0, proses gagal')
else
repeat
abar := a - (f(a)/g(a));
a := abar;
literasi := literasi + 1;
writeln('akar =', a,' f(a)=',f(a));
until
literasi = m;
End.

4. METODE POSISI PALSU

Program Posisi_Palsu;
Uses winCrt;
function f(x:real):real;
begin
f:=(2*x*x-9*x+9);
end;
Var a,b,clama,c:real;
Begin
write('masukan nilai a ='); readln(a);
write('masukan nilai b ='); readln(b);
repeat
clama := 2*b-a;
c := b - f(b)*((b-a)/(f(b)-f(a)));
if (a)*f(c)<0 then b:=c
else a:=c;
clama :=c ;
writeln('Akar = ',c,' dan f(T) = ',f(c));
until
f(a)*f(c)=0;
End.

5. METODE ELIMINASI GAUSS

Program Eliminasi_Gauss;
Uses winCrt;
Var x: array[1..10] of real;
a: array[1..10,1..10] of real;
i,j,k,n,s:integer;
p,jumlah:real;
Begin
writeln('|PROGRAM ELIMINASI GAUSS|');writeln;
write('ordo matiks, n='); readln(n);writeln;

{input matriks}
writeln('masukan matriks!');
for i := 1 to n do
begin
for j := 1 to n+1 do
begin
write('a(',i,j,')=');
readln(a[i,j]);
end;
writeln;
end;
writeln('matriks asal');
for i := 1 to n do
begin
for j := 1 to n+1 do
begin
write(a[i,j]:6:2);
end;
writeln;
end;
writeln;

{proses eliminasi gauss}


for k := 1 to n-1 do

{cek pivot apakah = 0}


if a[k,k]<> 0 then
begin
for i := k+1 to n do
begin
p := a[i,k]/a[k,k];
for j := k+1 to n+1 do
begin
a[i,j]:=a[i,j]-p*a[k,j];
end;
a[i,k] := 0;
end;
end;
else

writeln('proses eliminasi gauss');


for i := 1 to n do
begin
for j := 1 to n+1 do
begin
write(a[i,j]:6:2);
end;
writeln;
end;

{substitusi balik}
x[n] := a[n,n+1]/a[n,n];
for i := n-1 downto 1 do
begin
jumlah:=0;
for j := i+1 to n do
begin
jumlah := jumlah + a[i,j]*x[j]
end;
x[i] :=(a[i,n+1]-jumlah)/a[i,i];
end;
writeln;
writeln('proses substitusi balik');
for i := 1 to n do
begin
writeln('x(',i,')=', x[i]:6:2);
end;
end.

6. METODE GAUSS SIEDEL

Program IterasiGaussSidel;
uses winCrt;
var i,j,k,m,n : integer;
tol, er, beda, jumlah : real;
b,x0,x : array [1..10] of real;
a : array [1..10,1..10] of real;

begin
er := 0; tol:=0.00000001;
writeln('ITERASI GAUSS SIEDEL');writeln;
write('banyak persamaan n= '); readln(n);
write('banyak iterasi m= '); readln(m);writeln;
for i := 1 to n do
begin
for j := 1 to n do
begin
write('a(',i,j,')= '); readln(a[i,j]);
end;
write('b(',i,')= '); readln(b[i]);
x0[i]:=0;
end;
writeln;

writeln('matriks asal');
for i := 1 to n do
begin
for j := 1 to n do
begin
write(a[i,j]:6:2);
end;
writeln(b[i]:6:2);
end;
writeln;

for k := 1 to m do
begin
write ('iterasi ke ',k);
for i := 1 to n do
begin
jumlah := 0;
for j := 1 to n do
if j <> i then
begin
jumlah := jumlah + a[i,j]*x[j];
end;
x[i] := (b[i] - jumlah)/a[i,i];
write(x[i]:8:2);
beda := abs(x[i] - x0[i]);
if beda > er then er := beda;
x0[i]:=x[i];
end;
writeln;

if er < tol then


begin
for i := 1 to n do
writeln (x[i]:8:2);
end;
end;
end.

7. METODE INVERS MATRIKS

Program IversMatriks;
uses winCrt;
var x: array[1..10] of real;
a: array[1..10,1..10] of real;
i,j,k,l,m,n:integer;
p,jumlah:real;
begin
writeln('|INVERS MATRIKS|');writeln;
write('ordo matiks, n='); readln(n);writeln;

{input matriks}
writeln('masukan matriks A!');
for i := 1 to n do
begin
for j := 1 to n do
begin
write('a(',i,j,')=');
readln(a[i,j]);
end;
writeln;
end;
for i := 1 to n do
begin
for j := n+1 to 2*n do
begin
if j = n+i then a[i,j] := 1
else a[i,j] := 0;
end;
end;
writeln('matriks asal');
for i := 1 to n do
begin
for j := 1 to 2*n do
begin
write(a[i,j]:6:2);
end;
writeln;
end;
writeln;

{proses eliminasi gauss tahap 1}


for k := 1 to n-1 do
begin
for i := k+1 to n do
begin
p := a[i,k]/a[k,k];
for j := k+1 to 2*n do
begin
a[i,j]:=a[i,j]-p*a[k,j];
end;
a[i,k] := 0;
end;
end;
writeln('proses eliminasi gauss tahap 1');
for i := 1 to n do
begin
for j := 1 to 2*n do
begin
write(a[i,j]:6:2);
end;
writeln;
end;

{proses eliminasi gauss tahap 2}


for k := n downto 2 do
begin
for i := k-1 downto 1 do
begin
p := a[i,k]/a[k,k];
for j := k+1 to 2*n do
begin
a[i,j]:=a[i,j]-p*a[k,j];
end;
a[i,k] := 0;
end;
end;
writeln('proses eliminasi gauss tahap 2');
for i := 1 to n do
begin
for j := 1 to 2*n do
begin
write(a[i,j]:6:2);
end;
writeln;
end;

{proses eliminasi gauss tahap 3}


for i := 1 to n do
begin
for j := 2*n downto 1 do
begin
a[i,j]:=(a[i,j]/a[i,i]);
end;
end;
writeln('proses eliminasi gauss tahap 3');
for i := 1 to n do
begin
for j := 1 to 2*n do
begin
write(a[i,j]:6:2);
end;
writeln;
end;
writeln;

{tulis matriks invers}


writeln('jadi matriks inversnya:');
for i := 1 to n do
begin
for j := n+1 to 2*n do
begin
write(a[i,j]:6:2);
end;
writeln;
end;
writeln;
end.

8. METODE ITERASI YACOBY

Program IterasiYacoby;
uses winCrt;
var i,j,k,m,n : integer;
tol, er, beda, jumlah : real;
b,x0,x : array [1..10] of real;
a : array [1..10,1..10] of real;
begin
er := 0; tol:=0.00000001;
writeln('ITERASI YACOBI');writeln;
write('banyak persamaan n= '); readln(n);
write('banyak iterasi m= '); readln(m);writeln;
for i := 1 to n do
begin
for j := 1 to n do
begin
write('a(',i,j,')= '); readln(a[i,j]);
end;
write('b(',i,')= '); readln(b[i]);
x0[i]:=0;
end;
writeln;

writeln('matriks asal');
for i := 1 to n do
begin
for j := 1 to n do
begin
write(a[i,j]:6:2);
end;
writeln(b[i]:6:2);
end;
writeln;

for k := 1 to m do
begin

for i := 1 to n do
begin
x0[i]:=x[i]
end;
write ('iterasi ke ',k);
for i := 1 to n do
begin
jumlah := 0;
for j := 1 to n do
if j <> i then
begin
jumlah := jumlah + a[i,j]*x0[j];
end;
x[i] := (b[i] - jumlah)/a[i,i];
write(x[i]:8:2);
beda := abs(x[i] - x0[i]);
if beda > er then er := beda;
end;
writeln;

if er < tol then


begin
for i := 1 to n do
writeln (x[i]:8:2);
end;
end;
end.
9. PROGRAM TRIDIAGONAL

program Tridiagonal;
uses wincrt;
var
n,i,j,k:integer;
a,b,c,d,z:array [1..10] of real;
p:real;
{input}
begin
write ('n= ');readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');readln (a[i]);
write('b[',i,']= ');readln (b[i]);
write('c[',i,']= ');readln (c[i]);
write('d[',i,']= ');readln (d[i]);
end;
writeln;
{proses}
for i:=1 to n-1 do
begin
p:=c[i+1]/a[i];
a[i+1]:=a[i+1]-p*b[i];
d[i+1]:=d[i+1]-p*d[i];
z[n]:=d[n]/a[n];
end;
writeln;
for k:=n downto 1 do
begin
z[k]:=(d[k]-b[k]*z[k+1])/a[k];
writeln('x[',k,']= ',z[k]:2:2);
end;

writeln;
end.

10. METODE TRAPESIUM

Program Met_Trapesium;
Uses winCrt;
function f(x:real):real;
begin
f:=(x*x-2*x+1);
end;
Var a,b,h,int,sum:real;
n,i:integer;
x:array[0..100] of real;
y:array[0..100] of real;

Begin
writeln('masukan batas-batas integrasi!');
write('a =');readln(a);
write('b =');readln(b);
write('masukan nilai partisi :');readln(n);
h:= abs((a-b)/n);
for i := 0 to n do
begin
x[i]:= b + i* h;
y[i]:= f(x[i]);
end;
for i := 1 to n-1 do
begin
sum := sum + 2*y[i];
end;
int := (h/2)*(y[0] + y[n] + sum);
writeln ('integralnya =', int:6:2);
end.

11. METODE HOTELLING (Mencari Vektor Eigen)

Program met_hotelling;
uses winCrt;
Var i,j,n,m:integer;
a:array[1..10,1..10] of real;
b:array[1..10] of real;
v:array[1..10] of real;
w:array[1..10] of real;
tol,lamda,lamda2:real;

Begin
write('maukan ordo matrik n=');readln(n);
write('masukan toleransi=');readln(tol);
writeln;
writeln('input matriks a!');
for i := 1 to n do
begin
for j:= 1 to n do
begin
write('a(',i,j,')=');readln(a[i,j]);
end;
end;

{cetak matriks a}
for i:= 1 to n do
begin
for j:= 1 to n do
begin
write(a[i,j]:6:2);
end;
writeln;
end;
writeln;

writeln('masukan tebakan awal!');


for i := 1 to n do
begin
write('b(',i,')=');readln(b[i]);
end;
{cetak matriks tebakan awal}
for i:= 1 to n do
begin
writeln(b[i]:6:2);
end;
writeln;

{proses}
writeln('matrik a x matrik v = lamda x matrik w');
writeln;
for i:= 1 to n do
begin
for j:= 1 to n do
begin
v[i] := v[i] + a[i,j] * b[j];
end;
end;

repeat
writeln('matrik v=');
for i:= 1 to n do
begin
writeln(v[i]:6:2);
end;
lamda := v[1];
writeln('lamda =' , lamda:6:2);
writeln('matriks w=');
for i := 1 to n do
begin
w[i] := v[i]/lamda;
writeln(w[i]:6:2);
end;
writeln;
for i := 1 to n do
begin
v[i]:=0;
for j := 1 to n do
begin
v[i] := v[i] + a[i,j] * w[j];
end;
end;
lamda2 := v[1];
until abs(lamda2-lamda) < tol;
writeln('sehingga nilai eingenya =', lamda2:6:2);
end.

You might also like