You are on page 1of 13

TUGAS MATLAB

UAS TEKNIK KOMPUTASI

OLEH
DEDE JULEO
2015310059

DOSEN PEMBIMBING
TAUFALHIDAYAT,MT

TEKNIK ELEKTRO S1
FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT TEKNOLOGI PADANG
2017
SOALNOMORSATUINTERPOLASI

A. INTERPOLASI KUADRAT

LISTING PROGRAM

clear;
clc;
disp ( 'program interpolasiuntukkuadratik');
disp ('=============================');
x=input('masukkannilai x= ');
x1=input('masukkannilaix1= ');
y1=input('masukkannilaiy1= ');
x2=input('masukkannilaix2= ');
y2=input('masukkannilaiy2= ');
x3=input('masukkannilaix3= ');
y3=input('masukkannilaiy3= ');

y=y1*((x-x2)*(x-x3))/((x1-x2)*(x1-x3))+ y2*((x-x1)*(x-x3))/((x2-x1)*(x2-
x3))+ y3*((x-x1)*(x-x2))/((x3-x1)*(x3-x2));
disp(['nilai y= ', num2str(y)]);

hasileksekusi
B. INTERPOLASI LAGRANGE

LISTING PROGRAM
disp('----------------------------');
disp('INTERPOLASI LAGRANGE');
disp('Dede Juleo (2015310059)');
disp('----------------------------');
%membangun objek simbolik x
syms x;
%menginputkan banyaknya titik
b=input('Banyak titik = ');
%menginputkan masing-masing titik
for i=1:b
fprintf('x%d',i)
bx(i)=input(' = ');
fprintf('y%d',i)
by(i)=input(' = ');
end
clc;
%menampilkan titik-titik yang sudah diinputkan ke layar
disp('Titik-titik yang diketahui adalah sebagai berikut:');
for i=1:b
fprintf('(%d,%1.1f)',bx(i),by(i));
end
%inisialisasi fx
fx=0;
fprintf('\n\n');
disp('Nilai masing-masing L(x)');

% mulai proses pencarian q(x), qx1, lx, dan px


for i=1:b
%inisialisasi qx
qx=1;

%perulangan untuk mencari qx


for j=1:b
if (i~=j)
qx=qx*(x-bx(j));
end
end
%mencari qx1 dengan substitusi x ke gx
qx1=subs(qx,x,bx(i));
%mencari lx
lx=qx/qx1;
lx1=collect(lx);

%menampilkan lx
fprintf('L%d(x) = ',i);
disp(lx1);

%mencari fx
fx=fx+by(i)*lx;
end
%menyederhanakan fx menjadi px dan menampilkan ke layar
px=collect(fx);
fprintf('Hasilnya = ');
disp(px);

HASILEKSEKUSI
\
C. INTERPOLASI NEWTON

LISTING PROGRAM

disp('-------------------');
disp('INTERPOLASI NEWTON');
disp('Dede Juleo(2015310059)');
disp('-interpolasi newton');

n=input('jumlah titik= ');


x=zeros(1,n);
F=zeros(1,n);
for i=1:1:n+1
x(1,i)=input(['x(',num2str(i),')=']);
F(1,i)=input(['F(',num2str(i),')=']);
end;
z=input('x akan diinterpolasi= ');
eps=input('epsilon= ');
b(1,1)=F(1,1);
tic
pbagi=b(1,1);
factor=1;
for i=2:1:n
b(1,i)=F(1,i);
for j=i-1:-1:1
b(1,j)=(b(1,j+1)-b(1,j))/(x(1,i)-x(1,j));
end;
factor=factor*(z-x(1,i-1));
suku=b(1,1)*factor;
pbagi=pbagi+suku;
if (abs(suku) <= eps)
break;
end;
end;
interpolasi=pbagi

HASIL EKSEKUSI
2. SOALNOMOR 2 METODEDIFFERENSIAL
A. METODE SELISIH MAJU

LISTING PROGRAM

disp('----------------------------');
disp('Diferensiasi Numerik Selisih Maju');
disp('Dede Juleo (2015310059)');
disp('----------------------------');
syms x;
f=5*x^3-4*x^2+5*x+59%penginput nili f(x)
pretty (f) %memperbaiki nilai f(x)
df=diff (f) %turunan dari nilai f(x)
pretty (df) %memperbaiki turunan nilai f(x)
%turunan numerik
xo=0.59; h=0.01; %pemisahan nilai xo dan nilai h
f2=subs(f,xo+h); %pengganti nilai dalam fungsi(f,xo+h)
f3=subs(f,xo); %pengganti nilai dalam fungsi(f,xo)
fd=(f2-f3)/(h) %pengganti nilai pada rumus(f2-f3)/(h)

eksak=subs(df,xo) %mengeksekusi nilai

error=abs(eksak-fd) %menghitung nilai absolut


B. Metode Selisih Tengah
Listing Program

Listing program

disp('----------------------------');
disp('--------------------------- ');
disp('Dede Juleo (2015310059)');
disp('-metodeselisihtengah');
syms x;
f=5*x^3-4*x^2+5*x+59%penginput nili f(x)
pretty (f) %memperbaiki nilai f(x)
df=diff (f) %turunan dari nilai f(x)
pretty (df) %memperbaiki turunan nilai f(x)
%turunan numerik
xo=0.59; h=0.01; %pemisahan nilai xo dan nilai h
f2=subs(f,xo+h); %pengganti nilai dalam fungsi(f,xo)
f3=subs(f,xo-h); %pengganti nilai dalam fungsi(f,xo-h)
fd=(f2-f3)/(h) %pengganti nilai pada rumus(f2-f3)/(h)

eksak=subs(df,xo) %mengeksekusi nilai

error=abs(eksak-fd) %menghitung nilai absolut

HASIL EKSEKUSI
C. METODE SELISIH MUNDUR

LISTING PROGRAM

disp('----------------------------');
disp('Metode Selisih mundur ');
disp('Dede Juleo (2015310059)');
disp('----------------------------');
syms x;
f=5*x^3-4*x^2+5*x+59%penginput nili f(x)
pretty (f) %memperbaiki nilai f(x)
df=diff (f) %turunan dari nilai f(x)
pretty (df) %memperbaiki turunan nilai f(x)
%turunan numerik
xo=0.59; h=0.01; %pemisahan nilai xo dan nilai h
f2=subs(f,xo); %pengganti nilai dalam fungsi(f,xo)
f3=subs(f,xo-h); %pengganti nilai dalam fungsi(f,xo-h)
fd=(f2-f3)/(h) %pengganti nilai pada rumus(f2-f3)/(h)

eksak=subs(df,xo) %mengeksekusi nilai

error=abs(eksak-fd) %menghitung nilai absolut

HASIL EKSEKUSI
3. SOALNOMOR 3 METODE INTEGRAL
A. SIMPSON 3/8

LISTING PROGRAM

f= @(x) 5*x.^3 - 4*x.^2 + 5*x + 59 ;


a= 0 ; % a, batasbawahintegrasi
b= 4 ; % b, batasatasintegrasi
n=10 ; % n, jumlahsegmenmaksimum

% Menampilkan input apa yang sedangdigunakan


disp('_________________________________ Simpson
3/8_________________________________');
disp('Nama : Dede Juleo 2015310059');
disp(sprintf('\n\n********************************Input
Data**********************************\n'))
disp(sprintf(' f(x), integrand function'))
disp(sprintf(' a = %g, batasbawahintegrasi',a))
disp(sprintf(' b = %g, batasatasintegrasi',b))
disp(sprintf(' n = %g, jumlahsubdivisi',n))
format shortg

exact = quad(f,a,b); % Tentukansolusi yang tepat


nstep = floor(log2(n)) ; % Tentukanjumlahsegmen yang
berbedauntukdipertimbangkan

for i=0:nstep-1

% Tentukanjumlahsegmendan h
NN(i+1)=2^(i+1) ;
h=(b-a)/NN(i+1) ;

% Gunakanaturanuntukmenemukanaproksimasi
integral = f(a) + f(b) ;
for j=1:2:NN(i+1)-1
integral = integral + 3*f(a+h*j) ;
end
for j=2:2:NN(i+1)-2
integral = integral + 3*f(a+h*j) ;
end
for j=3:2:NN(i+1)-3
integral = integral + 2*f(a+h*j) ;
end
integral = integral * 3 * h/8 ;
YY(i+1)=integral ;

% Hitunglah Error
Et(i+1)=exact-integral ;
Etabs(i+1)=abs((integral-exact)/exact) ;
if(i > 0)
Ea(i+1)=YY(i+1)-YY(i) ;
Eaabs(i+1)=abs((YY(i+1)-YY(i))/YY(i)) ;
SD(i+1)=floor((2-log10(Eaabs(i+1)/0.5))) ;
if(SD(i+1)<0)
SD(i+1)=0
end
else
Ea(1)=0 ;
Eaabs(1)=0 ;
SD(1)=0 ;
end

end
% Berikutinimembangundanmenampilkantabelnilai
disp(sprintf('\n\n************************Table Nilaisimpson
3/8******************************\n'))

disp(' Approx True Relative ApproxRelAppr


Sig ')
disp(' n Integral Error True Error Error Error
Digits ')
disp('---------------------------------------------------------------------
------------')

for i=1:nstep

if(i > 1)
if(exact || YY(i) > 0)
disp(sprintf('%4i %+1.3e %+1.3e %+1.3e %+1.3e %+1.3e
%2i',NN(i),YY(i),Et(i),Etabs(i),Ea(i),Eaabs(i),SD(i) ))
else
disp(sprintf('%4i %+1.3e %+1.3e n/a %+1.3e n/a
n/a',NN(i),YY(i),Etabs(i),Ea(i)))
end
else
disp(sprintf('%4i %+1.3e %+1.3e %+1.3e n/a n/a
n/a',NN(i),YY(i),Et(i),Etabs(i)))
end
end
disp('---------------------------------------------------------------------
------------')

% FungsiinimendeteksiinformasitentangAnda
scnsize = get(0,'ScreenSize'); %
Screensizedanmencobauntukkemudianmenempatkan/ukurangrafik yang sesuai.

% Grafik: Kodeberikutmenampilkanpenggambarangrafisdarimetodeini.
x(1)=a ;
y(1)=f(a) ;
hold on
for i=1:n
x(i+1)=a+i*h ;
y(i+1)=f(x(i+1)) ;
end

for i=1:2:n
bg = i ;
ed = i + 2 ;
coeffs = polyfit(x(bg:ed), y(bg:ed), 2);
poly_x1 = [x(bg):(x(ed) - x(bg))/1000:x(ed)];
poly_y1 = coeffs(1)*poly_x1.^2 + coeffs(2)*poly_x1 + coeffs(3);
poly_x1 = [poly_x1(1) poly_x1 poly_x1(end)];
poly_y1 = [0 poly_y1 0];
fill(poly_x1, poly_y1, 'y')
end
xrange=a:(b-a)/1000:b;
plot(xrange,f(xrange),'k','Linewidth',2)
title('FungsiintegrasidanpenggambarangrafisAturan 3/8 Simpson')

hasileksekusi
B. METODE INTEGRAL TRAPEZOIDA

Listing program

disp('----------------------------');
disp('INTEGRAL TRAPEZOIDA');
disp('Dede Juleo (2015310059)');
disp('----------------------------');
syms x;
a=input('Batas bawah a = ');
b=input('Batas atas b = ');

y=input('Fungsi y = '); m=input('Jumlah interval m = '); h=(b-a)/m;


h1=h/2;
j1=subs(y,x,a); j2=subs(y,x,b); jml=j1+j2;
t=h;
for i=1:(m-1),
j3=(b-a)*subs(y,x,t);
jml=jml+j3;
t=t+h;
end; hsl=jml*h1; disp('Hasil ='); disp(hsl);

HASILEKSEKUSI
C. METODE INTEGRAL SIMPSON 1/3

LISTING PROGRAM

clc;
clear all;
close all;

f=@(x)(5*x^3-4*x^2+5*x+59); %Change here for different function


a=0;b=4; %Given limits
n=b-a; %Number of intervals
h=(b-a)/n;
p=0;

for i=a:b
p=p+1;
x(p)=i;
y(p)=5*i^3-4*i^2+5*i+59; %Change here for different function
end

l=length(x);
x
y
answer=(h/3)*((y(1)+y(l))+2*(y(1)+y(3))+4*(y(2)+y(4)))

Hasileksekusi

You might also like