Anda di halaman 1dari 4

Dian Hikmawan/13513139

1. Diketahui persamaan f(x) = 3 + 2 2 + 3 6 = 0 dan = 0,001. Carilah akar


persamaannya menggunakan Metode Bisection menggunakan MATLAB.
Kode
clear;
clc;

syms x; % Menentukan simbol

f = x^3+2*x^2+3*x-6; % Menentukan fungsi


g = 0.001; % Menentukan galat
xl = -1; % Menentukan batas bawah
xu = 9; % Menentukan batas atas

% Substitusi
fxl = subs (f, xl); % Substitusi xl
fxu = subs (f, xu); % Substitusi xu

xr = (xl+xu)/2; % Mencari nilai xr


fxr = subs (f, xr); % Substitusi xr

e = abs (xr-xl); % Mencari nilai error

if fxl*fxu > 0 % Jika bertanda sama


disp('f(xl) dan f(xu) harus berbeda tanda');
return; % Program berhenti
end;

% Pembuatan tabel
disp ('i - xl - xu - xr - fxl - fxu - fxr - fxl*fxr - e');
disp ('-------------------------------------------------');

i = 1; % Petunjuk iterasi

while e > g % Akan berulang hingga nilai error kurang dari galat
fxl = subs (f, xl); % Substitusi xl
fxu = subs (f, xu); % Substitusi xu
xr = (xl+xu)/2; % Mencari nilai xr
fxr = subs (f, xr); % Substitusi xr

% Mencari nilai error baru


if fxl*fxr > 0 % Jika f(xl)*f(xr) lebih besar dari 0
e = abs (xr-xl);
else % Jika f(xl)*f(xr) tidak lebih besar dari 0
e = abs (xr-xu);
end;

% Menampilkan nilai
fprintf ('%.d %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f\n', i, xl, xu, xr,
fxl, fxu, fxr, fxl*fxr, e);

% Mengganti nilai xr
if fxl*fxr > 0 % Jika f(xl)*f(xr) lebih besar dari 0
xl = xr;
else % Jika f(xl)*f(xr) tidak lebih besar dari 0
xu = xr;
end;

i = i+1; % Untuk menambah iterasi


end;

Screenshoot

2. Diketahui persamaan f(x) = dan = 0,001. Carilah akar persamaannya


menggunakan Metode Regulasi Falsi menggunakan MATLAB.
clear;
clc;
syms x; % Menentukan simbol
f = exp(-x)-x; % Menentukan fungsi
g = 0.001; % Menentukan galat
xl = -1; % Menentukan batas bawah
xu = 9; % Menentukan batas atas
fxl = subs (f, xl); % Substitusi xl
fxu = subs (f, xu); % Substitusi xu
xr = xu - ((fxu*(xl-xu))/(fxl-fxu)); % Mencari nilai xr
fxr = subs (f, xr); % Substitusi xr
e = abs (xr-xl); % Mencari nilai error
if fxl*fxu > 0 % Jika bertanda sama
disp('f(xl) dan f(xu) harus berbeda tanda');
return; % Program berhenti
end;
% Pembuatan tabel

disp ('i - xl - xu - xr - fxl - fxu - fxr - fxl*fxr - e');


disp ('-------------------------------------------------');
i = 1; % Petunjuk iterasi
while e > g % Akan berulang hingga nilai error kurang dari galat
fxl = subs (f, xl); % Substitusi xl
fxu = subs (f, xu); % Substitusi xu
xr = xu - ((fxu*(xl-xu))/(fxl-fxu)); % Mencari nilai xr
fxr = subs (f, xr); % Substitusi xr
% Mencari nilai error baru
if fxl*fxr > 0 % Jika f(xl)*f(xr) lebih besar dari 0
e = abs (xr-xl);
else % Jika f(xl)*f(xr) tidak lebih besar dari 0
e = abs (xr-xu);
end;
% Menampilkan nilai
fprintf ('%.d %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f\n', i, xl,
xu, xr, fxl, fxu, fxr, fxl*fxr, e);
% Mengganti nilai xr
if fxl*fxr > 0 % Jika f(xl)*f(xr) lebih besar dari 0
xl = xr;
else % Jika f(xl)*f(xr) tidak lebih besar dari 0
xu = xr;
end;
i = i+1; % Untuk menambah iterasi
end;

Screenshoot

Anda mungkin juga menyukai