Professional Documents
Culture Documents
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
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
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;
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.