3.
Algoritma Pemrograman
a. Mendefinisikan fungsi f(x)
b. Menentukan batas bawah (a) dan batas atas (b)
c. Ketika f(a).f(b)>0 tidak ada penyelesaian
d. Menentukan tolerasi error (e)
e. Hitung f_a=f(a) dan f_b=f(b)
f. Untuk iterasi c=c+1 atau error>es
a∗fb−b∗fa
x=
fb−fa
Hitung error=|f(x)|
Jika f(x).f_a<0 maka b=x dan f_b=f(x), jika tidak a=x dan f_a=f(x)
g. Akar persamaan adalah x
Code Program:
clear all;
clc;
syms x
s=input('Masukkan persamaan non linier f(x)= ');
f=inline(s);
a=input('Batas bawah: ');
b=input('Batas atas: ');
while f(a)*f(b)>0
disp('Interval yang dimasukkan tidak ada penyelesaian, silakan
diulangi');
disp(' ');
a=input('Batas bawah: ');
b=input('Batas atas: ');
end
X=a:0.001:b;
awal=cputime;
if f(a).*f(b)~=0
f_a=f(a);f_b=f(b);
e=input('Toleransi kesalahan= ');
E=1; c=0;
disp('=================================================')
disp('iterasi a b c f(a) f(c) f(b) E')
disp('=================================================')
while E>e
c=c+1;x1=a;x2=b;
x=(a*f_b-b*f_a)/(f_b-f_a);
if f(x).*f_a<0
b=x;f_b=f(x);
else
a=x;f_a=f(x);
end
E=abs(f(x));
disp([c x1 x2 x f_a f_b f(x) E])
end
disp('=================================================')
akhir=cputime;
disp(['Diperoleh x= ' num2str(x) ' dan f(' num2str(x) ')=' num2str(f(x))
' dengan error= ' num2str(E)])
disp(['Waktu komputasi= ' num2str(akhir-awal) 'detik'])
else
if f(a)==0;
disp(['x= ' num2str(a)])
else
disp(['x= ' num2str(b)])
end
end
Output:
Tidak terdapat penyelesaian karena f(a).f(b)>0 dibuktikan dengan
f(2,5)= -2,472407424
f(4)= -3,965100503
dan
f(2,5)*f(4)=9,803343921>0
Sehingga fungsi tersebut tidak memiliki akar