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

1.

METODE LAGRANGE
program lagrange;
uses wincrt;
var x,y:array[1..10] of real;
i,j,n:integer;
xp,yp,hasil,L:real;
begin
{input}
write('banyaknya titik='); read(n);
writeln;
for i:=0 to n-1 do
begin
write ('x[',i,']=');
read(x[i]);
writeln;
write ('y[',i,']=');
read(y[i]);
writeln;
end;
write('xp =');
read(xp);
{proses}
hasil:=0;
for i:=0 to n-1 do
begin
L:=1;
for j:=0 to n-1 do
begin
if j<>i then
L:=L*((xp-x[j])/(x[i]-x[j]))
end;
hasil:=hasil+L*y[i];
end;
writeln;
writeln('yp=',hasil:2:5);
end.

Program PDB;
program turunan_beda_maju;
uses wincrt;
var a, fa, p, q, r, s, t, h, jumlah :real;
x : array [ 0..100 ] of real;
y : array [ 0..100 ] of real;

f : array [ 0..100 ] of real;


i,n :integer;
begin
writeln (' program untuk fungsi berbentuk f (x) = px^4 + qx^3 + rx^2 + sx + t ');
write (' masukkan nilai p = '); readln (p);
write (' masukkan nilai q = '); readln (q);
write (' masukkan nilai r = '); readln (r);
write (' masukkan nilai s = '); readln (s);
write (' masukkan nilai t = '); readln (t);
writeln ( ' maka fungsinya adalah : ');
write (' f(x) = (',p:2:2,')x^4 + (',q:2:2,')x^3 + (',r:2:2,')x^2 + ');
writeln ('( ',s:2:2,')x + (',t:2:2,')');
writeln (' masukkan titik yang dicari: ');
write (' x0 = '); readln (x[0]);
write (' tebakan awal y0 = '); readln (y[0]);
write (' masukkan banyaknya titik yang diinginkan = '); readln (n);
write (' dengan jarak titik yang diinginkan = '); readln (h);
begin
x[0] := a;
f[0]:= p*x[0]*x[0]*x[0]*x[0] + q*x[0]*x[0]*x[0] + r*x[0]*x[0] + s*x[0] + t;
y[1] := y[0] + h*f[0];
writeln ( ' y',1,' = ',y[1]:2:6);
for i := 1 to n-1 do
begin
x[i] := a + i*h;
f[i]:= p*x[i]*x[i]*x[i]*x[i] + q*x[i]*x[i]*x[i] + r*x[i]*x[i] + s*x[i] + t;
y[i+1] := y[i] + h*f[i];
writeln ( ' y',i+1,' = ',y[i+1]:2:6);
end;
end;
end.
program interpolasi_newton;
uses wincrt;
var p : array [1..100] of real;
q : array [1..100] of real;
b : array [1..100] of real;
x0, x, jumlah, pbagi, faktor, phi, suku : real;
i, j, n : integer;
begin
writeln ( ' program interpolasi newton ');
write ( ' masukkan banyaknya titik interpolasi = '); readln (n);
writeln;
for i := 1 to n do
begin
write ( ' x',i,' = ' ); readln ( p[i]);

write ( ' y',i,' = ' ); readln ( q[i]);


write ( ' (x',i,',y',i,') = (', p[i]:2:2,',', q[i]:2:2,')');
writeln;
writeln;
end;
begin
write ( ' masukkan titik yang dicari = '); readln (x);
write ( ' toleransi = '); readln(phi);
b[1] := q[1];
pbagi := b[1];
faktor := 1;
for i := 2 to n do
begin
b[i] := q[i];
for j := n-1 downto 1 do
begin
b[j] := ( b[j+1] - b[j] )/(p[i] -p[j])
end;
faktor := faktor*(x-p[i-1]);
suku := b[1]*faktor;
pbagi := pbagi + suku;
if abs (suku)<= phi then write ( ' hasil = ',pbagi:2:10);
end;
end;
begin
write ( ' y = ',pbagi:2:6);
end;
end.
program integral_trapesium;
uses wincrt;
var a,b,fa,fb, p, q, r, s, t, integral, jumlah, jumlah1, jumlah2,jumlah3,h:real;
x : array [ 1..100 ] of real;
f : array [ 1..100 ] of real;
i,n :integer;
begin
writeln (' program untuk fungsi berbentuk f (x) = px^4 + qx^3 + rx^2 + sx + t ');
write (' masukkan nilai p = '); readln (p);
write (' masukkan nilai q = '); readln (q);
write (' masukkan nilai r = '); readln (r);
write (' masukkan nilai s = '); readln (s);
write (' masukkan nilai t = '); readln (t);
writeln ( ' maka fungsinya adalah : ');
write (' f(x) = (',p:2:2,')x^4 + (',q:2:2,')x^3 + (',r:2:2,')x^2 + ');
writeln ('( ',s:2:2,')x + (',t:2:2,')');
writeln (' masukkan batas integralnya : ');

write (' batas bawah (a) = '); readln (a);


write (' batas atas (b) = '); readln (b);
write (' masukkan banyaknya selang yang diinginkan = '); readln (n);
begin
fa:=p*a*a*a*a + q*a*a*a + r*a*a + s*a + t;
fb:=p*b*b*b*b + q*b*b*b + r*b*b + s*b + t;
h:= (b-a)/n;
end;
jumlah := 0;
for i:= 1 to n-1 do
begin
x[i]:= a+ i*h;
f[i]:= p*x[i]*x[i]*x[i]*x[i] + q*x[i]*x[i]*x[i] + r*x[i]*x[i] + s*x[i] + t;
jumlah := jumlah + f[i];
end;
begin
integral := (h/2)*(fa + fb + 2*jumlah );
writeln ( ' integral = ',integral:3:10);
end;
end.
program integral_simpson13;
uses wincrt;
var a,b,fa,fb, p, q, r, s, t, integral, jumlah, jumlah1, jumlah2,jumlah3,h:real;
x : array [ 1..100 ] of real;
f : array [ 1..100 ] of real;
i,n :integer;
begin
writeln (' program untuk fungsi berbentuk f (x) = px^4 + qx^3 + rx^2 + sx + t ');
write (' masukkan nilai p = '); readln (p);
write (' masukkan nilai q = '); readln (q);
write (' masukkan nilai r = '); readln (r);
write (' masukkan nilai s = '); readln (s);
write (' masukkan nilai t = '); readln (t);
writeln ( ' maka fungsinya adalah : ');
write (' f(x) = (',p:2:2,')x^4 + (',q:2:2,')x^3 + (',r:2:2,')x^2 + ');
writeln ('( ',s:2:2,')x + (',t:2:2,')');
writeln (' masukkan batas integralnya : ');
write (' batas bawah (a) = '); readln (a);
write (' batas atas (b) = '); readln (b);
write (' masukkan banyaknya selang yang diinginkan = '); readln (n);
begin
fa:=p*a*a*a*a + q*a*a*a + r*a*a + s*a + t;
fb:=p*b*b*b*b + q*b*b*b + r*b*b + s*b + t;
h:= (b-a)/(2*n);
end;

jumlah1 := 0;
for i:= 1 to n do
begin
x[i]:= a+ (2*i-1)*h;
f[i]:= p*x[i]*x[i]*x[i]*x[i] + q*x[i]*x[i]*x[i] + r*x[i]*x[i] + s*x[i] + t;
jumlah1 := jumlah1 + f[i];
end;
jumlah2 := 0;
for i:= 1 to n-1 do
begin
x[i]:= a+ (2*i-1)*h;
f[i]:= p*x[i]*x[i]*x[i]*x[i] + q*x[i]*x[i]*x[i] + r*x[i]*x[i] + s*x[i] + t;
jumlah2 := jumlah2 + f[i];
end;
begin
integral := (h/3)*(fa + fb + 4*jumlah1 + 2*jumlah2 );
writeln ( ' integral = ',integral:3:10);
end;
end.
program hotelling;
uses wincrt;
type matriks=array[1..10,1..10] of real;
var
brs,klm:integer;
a,b,c:matriks;
x,y,z:integer;
hmax,hmax1,toleransi:real;
lop:integer;
procedure hapus(var m:matriks;b,k:integer);
begin
for x:=1 to b do
for y:=1 to k do
m[x,y]:=0;
end;
procedure input(var m:matriks;b,k:integer);
begin
for x:=1 to b do
for y:=1 to k do
begin
write('data matriks[',x,',',y,'] = ');
readln(m[x,y]);

end;
end;
procedure cetak(var m:matriks;b,k:integer);
begin
for x:=1 to b do
for y:=1 to k do
writeln('data matriks[',x,',',y,'] = ',m[x,y]:0:2);
end;
procedure kali(var m3,m1,m2:matriks;b,k:integer);
begin
for x:=1 to b do
for y:=1 to k do
for z:=1 to 1 do
m3[x,z]:=m3[x,z]+(m1[x,y]*m2[y,z]);
end;
procedure max(var m:matriks;b,k:integer);
begin
hmax:=m[1,1];
for x:=2 to b do
if hmax<m[x,k] then
hmax:=m[x,k];
end;
procedure bagi(var m1,m2:matriks;b,k:integer);
begin
for x:=1 to b do
for y:=1 to k do
m1[x,y]:=m2[x,y]/hmax;
end;
begin
clrscr;
write('Masukkan nilai toleransi : ');
readln(toleransi);
write('Masukkan ordo baris : ');readln(brs);
write('Masukkan ordo kolom : ');readln(klm);writeln;
writeln('Masukkan data matriks A');
writeln('~~~~~~~~~~~~~~~~~~~~~~~');
input(a,brs,klm);
writeln;
writeln('Masukkan data matriks B');
writeln('~~~~~~~~~~~~~~~~~~~~~~~');
input(b,klm,1);

clrscr;
repeat
hmax1:=hmax;
hapus(c,brs,1);
kali(c,a,b,brs,klm);
max(c,brs,1);
writeln(hmax:0:2);
bagi(b,c,brs,1);
until (hmax-hmax1<=toleransi);
writeln(hmax:0:2);
readln;
end.
Program Interpolasi Newton
program interpolasi_newton_widnyana;
uses wincrt;
var p : array [1..100] of real;
q : array [1..100] of real;
b : array [1..100] of real;
x0, x, jumlah, pbagi, faktor, phi, suku : real;
i, j, n : integer;
begin
writeln ( ' program interpolasi newton ');
write ( ' masukkan banyaknya titik interpolasi = '); readln (n);
writeln;
for i := 1 to n do
begin
write ( ' x',i,' = ' ); readln ( p[i]);
write ( ' y',i,' = ' ); readln ( q[i]);
write ( ' (x',i,',y',i,') = (', p[i]:2:2,',', q[i]:2:2,')');
writeln;
writeln;
end;
begin
write ( ' masukkan titik yang dicari = '); readln (x);
write ( ' toleransi = '); readln(phi);
b[1] := q[1];
pbagi := b[1];
faktor := 1;
for i := 2 to n do
begin

b[i] := q[i];
for j := n-1 downto 1 do
begin
b[j] := ( b[j+1] - b[j] )/(p[i] -p[j])
end;
faktor := faktor*(x-p[i-1]);
suku := b[1]*faktor;
pbagi := pbagi + suku;
if abs (suku)<= phi then write ( ' hasil = ',pbagi:2:10);
end;
end;
begin
write ( ' y = ',pbagi:2:6);
end;
end.

You might also like