Coding :
clear all;
clc;
disp('+--------------------------------------------------------+');
disp('+ Persamaan Tak Linear +');
disp('+--------------------------------------------------------+');
disp(' Tugas Kelompok Ketode Numerik');
disp(' by : Kelompok Fauzi');
disp('Menu Pilihan');
disp('1. Metode Regula Falsi');
disp('2. Metode Biseksi');
disp('3. Metode Secant');
disp('4. Metode Newton-Raphson');
disp('5. Metode Tabel');
disp('6. Metode Iterasi');
disp('7. SOAL 1');
disp('8. SOAL 2');
disp('9. SOAL 3');
disp('');
pilih=input('Masukan nomor pilihan [1-9] :');
switch pilih
case 1
% Metode Regula Falsi
clc;
clear;
disp('Program Metode Regula Falsi');
disp('=============================');
disp('Untuk Contoh Persamaan : xe^(-x)+1');
disp('Persamaan Ditulus: x*exp(-x)+1');
disp('range x= [-1,0]');
%deklarasi awal
f=input('Silakan masukkan persamaan f(x): ');
a=input('Masukkan batas bawah = ');
b=input('Masukkan batas atas = ');
epsilon=input('Masukkan nilai toleransi error= ');
N=input('Masukkan jumlah iterasi maksimum = ');
E=abs(a-b);
fprintf('---------------------------------------------------------------------------\n')
fprintf(' i a b x f(x) f(a) f(b)\n ')
fprintf('---------------------------------------------------------------------------\n')
%Perulangan
i=0;
while (E>epsilon & i<N )
i=i+1;
fprintf('%5.0f%12.7f%12.7f',i,a,b);
fa=subs(f,x,a); %Persamaan : xe^(-x)+1=0, dimana x dimasukan batas bawah(a)
fb=subs(f,x,b); %Persamaan : xe^(-x)+1=0, dimana x dimasukan batas atas(b)
x = (fb*a-fa*b)/(fb-fa); %Rumus Regula Falsi
fx= x*exp(-x)+1; %Masukkan x yang didapat kedalam persamaan
if (fx*fa<0) %Kondisi jika fx dan fa berlainan tanda/ hasil kali negatif
b=x;
fb=fx;
else %Jika tidak
a=x;
fa=fx;
end
E=abs(b-a); %Selisih batas atas dan bawah baru
fprintf('%12.7f%12.7f%12.7f%12.7f\n', x,fa,fx,f(b));
end
disp('----------------------------------------------------------------------------')
fprintf('Akarnya adalah = %12.7f\n');
case 2
% Metode Biseksi
clc;
clear;
disp('Metode Biseksi ');
disp('===============');
disp('Untuk Contoh Persamaan : xe^(-x)+1');
disp('Persamaan yang ditulis: x*exp(-x)+1');
disp('Batas x= [-1,0]');
%Deklarasi awal
syms x;
f=input('persamaan f(x): ');
a=input('batas atas : ');
b=input('batas bawah : ');
et=input('Masukkan Nilai Toleransi Error : ');
t=abs(b-a);
cAwal=a;
cAkhir=b;
disp(' i a b c f(a) f(b) f(c) E');
disp('----------------------------------------------------------------');
%Perulangan
i=1;
while (t > et ) & (cAwal ~= cAkhir) ;
fa=subs(f,x,a);
%Mensubtitusikan f sbg fungsi, x sbg variabel yang digunakan,
%a sbg variabel yang nilainya kan dimasukkan kedalam x
fb=subs(f,x,b);
%Mensubtitusikan f sbg fungsi, x sbg variabel yang digunakan,
%b sbg variabel yang nilainya kan dimasukkan kedalam x
cAwal=cAkhir;
c=(a+b)/2; %Rumus Biseksi
cAkhir=c;
fc= subs(f,x,c);
fprintf('%3.0f %6.4f %6.4f %12.10f %7.4f %7.4f %7.4f %7.4f \n', i, a, b, c, fa, fb, fc, e);
if fa*fc < 0
b=c;
else
a=c;
end
t=abs(b-a);
i=i+1;
end
disp('jadi, akar persamaan yang diperoleh adalah');
fprintf('%3.8f',fc);
case 3
%Metode Secant
clc;
clear;
disp('Program Metode Secant');
disp('======================');
disp('Penyelesaian untuk Persamaan : x^2-(x+1)e^(-x)=0');
disp('Pendekatan awal yang dicoba (fx0) yaitu 0.8');
%deklarasi awal
disp('penyelesaian dengan algoritma Secant');
x0=input('masukkan nilai pendekatan awal : ');
epsilon=input('Masukkan Nilai Toleransi Error : ');
N=input('Masukkan jumlah iterasi maksimum : ');
x1=x0+1;
E=abs(x0-x1);
fprintf('----------------------------------------------------------------------------\n')
fprintf(' i x0 x1 fmid f(xO) f(X) E\n ')
fprintf('----------------------------------------------------------------------------\n')
%perulangan
i=0;
while (E>epsilon & i<N )
i=i+1;
fprintf('%5.0f%12.7f%12.7f',i,x0,x1);
fx0= x0^2-(x0+1)*exp(-x0); %Persamaan tak linear tuk pendekatan awal
fx1= x1^2-(x1+1)*exp(-x1); %Persamaan tak linear tuk pendekatan selanjutnya
xi =(x1-(fx1*(x1-x0))./(fx1-fx0)); %Rumus metode secant
fxi= xi^2-(xi+1)*exp(-xi);
if (fx0*fxi >0)
x0=xi;
else
x1=xi;
end
E=abs(x1-x0);
fprintf('%12.7f%12.7f%12.7f%12.7f\n', xi,fx0,fxi,E);
end
disp('------------------------------')
fprintf('Akarnya Adalah = %10.8f\n',xi);
case 4
% Metode Newton Rhapson
clc;
dlear;
disp('Program Metode Newton Raphson');
disp('=============================');
disp('- persamaan yang digunakan adalah f(x)=e^x-5x^2');
disp('- dengan nilai e=0.00001');
%Deklarasi awal
E=0.00001; %Toleransi error
x0=input('Masukkan Tebakan awal :');
i=0;
M=9;
xb=0;
disp('________________________________________________');
disp(' i xi f(xi) epsilon');
disp('_______________________________________________');
%Perulangan
while (E<M)
fx=exp(x0)-5*x0^2; %rumus f(x)=e^x-5x^2
gx=exp(x0)-10*x0; %Turunan dari f(x)
xb=x0-(fx/gx); %rumus Newton Rhapson
M= abs(x0-xb); %selisih batas atas dan bawah
x0=xb;
i=i+1;
fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,xb,fx,M);
end
disp('------------------------------')
fprintf('Akarnya Adalah = %10.8f\n',xb);
%Cetak akar
case 5
%Metode Tabel
clear all,clc;
disp('Program Metode Tabel');
disp('=============================');
disp('- persamaan yang digunakan adalah f(x)=x+e^x');
disp('- dengan range x=[-1,0]');
%Deklarasi
bawah =input('masukkan Batas Bawah (nilai terendah) : ');
atas =input('masukkan Batas Ats (nilai tertinggi) : ');
tengah=atas-bawah/10; %rumus metode tabel
disp('nilai dibagi 10 bagian : ');
disp('=');
fx=0;
%Perulangan
for x=1:11
x=bawah;
disp([('nilai-nilai x : ') num2str(x)]);
%rumus x
f=x+exp(x);
disp([('nilai-nilai f(x) : ') num2str(f)]);
disp('=');
%rumus f(x)
if x==0;
disp('nilai ini adalah nilai yang mendekati 0')
disp([('jadi nilai persamaan non linearnya adalah : ') num2str(fx)]);
end
%nilai yang mendekati 0 adalah hasilnya
x=bawah+tengah;
bawah=x;
end
disp('nilai yang mendekati 0 adalah f(x) ') ;
disp([('dengan nilai jangkauan antara : ') num2str(bawah) (' dan ') num2str(atas)]);
case 6
clear all,clc;
disp('Program Metode Iterasi Sederhana');
disp('================================');
disp('- persamaan yang digunakan adalah fx = x^2-2x-3');
disp('- dengan Tebakan awal 4');
x0 = input ('nilai tebakan awal = ');
e = input ('nilai toleransi error = ');
N=0;
disp('_______________________________________________');
disp(' i 4 1 error');
disp('_______________________________________________');
%Perulangan
i=1;
for (i = 1 : 100)
xr = sqrt((2.*x0)+3);
fx = (xr.^2)-(2.*xr)-3;
N = xr - x0;
if (N < 0)
N = -N;
else
N = N;
end
x0 = xr;
fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,x0,N,e);
i=i+1;
if N > e
continue ;
else
break ;
end
end
disp('------------------------------')
fprintf('Akarnya Adalah = %10.8f\n',x0);
%Cetak akar
case 7
%dak tau
case 8
%SOAL KURANG JELAS, PERSAMAAN TIDAK DIKETAHUI
disp('%SOAL KURANG JELAS, PERSAMAAN TIDAK DIKETAHUI ');
case 9
% SOAL 3
clc;
clear;
disp('SOAL 3');
disp('=============================');
disp('- persamaan yang digunakan adalah f(x)=x^2 + e^(-2x)');
disp('- pada range [0, 10]');
%Deklarasi awal
E=0.0001; %Toleransi error
x0=input('Masukkan Tebakan awal akar :');
i=0;
M=9;
xb=0;
x=x0;
disp('_______________________________________________');
disp(' i xi f(xi) epsilon');
disp('_______________________________________________');
%Perulangan
while (E<M)
fx=x^2+exp(-2*x)*sin(x); %rumus persamaan
gx=2*x+exp(-2*x)*sin(x)+exp(-2*x)*cos(x); %Turunan dari rumus fx diatas
xb=x-(fx/gx); %rumus Newton Rhapson
M= abs(x-xb);
x=xb;
i=i+1;
fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,xb,fx,M);
end
disp('------------------------------')
fx0=x0^2+exp(-2*x0)*sin(x0);
fprintf('Nilai Pucaknya Adalah = %10.8f\n',fx0);
%Cetak akar
otherwise
disp('Maaf, Data yang anda input tidak diketahui ');
return ;
end;
Hasil :
clear all;
clc;
disp('+--------------------------------------------------------+');
disp('+ Persamaan Tak Linear +');
disp('+--------------------------------------------------------+');
disp(' Tugas Kelompok Ketode Numerik');
disp(' by : Kelompok Fauzi');
disp('Menu Pilihan');
disp('1. Metode Regula Falsi');
disp('2. Metode Biseksi');
disp('3. Metode Secant');
disp('4. Metode Newton-Raphson');
disp('5. Metode Tabel');
disp('6. Metode Iterasi');
disp('7. SOAL 1');
disp('8. SOAL 2');
disp('9. SOAL 3');
disp('');
pilih=input('Masukan nomor pilihan [1-9] :');
switch pilih
case 1
% Metode Regula Falsi
clc;
clear;
disp('Program Metode Regula Falsi');
disp('=============================');
disp('Untuk Contoh Persamaan : xe^(-x)+1');
disp('Persamaan Ditulus: x*exp(-x)+1');
disp('range x= [-1,0]');
%deklarasi awal
f=input('Silakan masukkan persamaan f(x): ');
a=input('Masukkan batas bawah = ');
b=input('Masukkan batas atas = ');
epsilon=input('Masukkan nilai toleransi error= ');
N=input('Masukkan jumlah iterasi maksimum = ');
E=abs(a-b);
fprintf('---------------------------------------------------------------------------\n')
fprintf(' i a b x f(x) f(a) f(b)\n ')
fprintf('---------------------------------------------------------------------------\n')
%Perulangan
i=0;
while (E>epsilon & i<N )
i=i+1;
fprintf('%5.0f%12.7f%12.7f',i,a,b);
fa=subs(f,x,a); %Persamaan : xe^(-x)+1=0, dimana x dimasukan batas bawah(a)
fb=subs(f,x,b); %Persamaan : xe^(-x)+1=0, dimana x dimasukan batas atas(b)
x = (fb*a-fa*b)/(fb-fa); %Rumus Regula Falsi
fx= x*exp(-x)+1; %Masukkan x yang didapat kedalam persamaan
if (fx*fa<0) %Kondisi jika fx dan fa berlainan tanda/ hasil kali negatif
b=x;
fb=fx;
else %Jika tidak
a=x;
fa=fx;
end
E=abs(b-a); %Selisih batas atas dan bawah baru
fprintf('%12.7f%12.7f%12.7f%12.7f\n', x,fa,fx,f(b));
end
disp('----------------------------------------------------------------------------')
fprintf('Akarnya adalah = %12.7f\n');
case 2
% Metode Biseksi
clc;
clear;
disp('Metode Biseksi ');
disp('===============');
disp('Untuk Contoh Persamaan : xe^(-x)+1');
disp('Persamaan yang ditulis: x*exp(-x)+1');
disp('Batas x= [-1,0]');
%Deklarasi awal
syms x;
f=input('persamaan f(x): ');
a=input('batas atas : ');
b=input('batas bawah : ');
et=input('Masukkan Nilai Toleransi Error : ');
t=abs(b-a);
cAwal=a;
cAkhir=b;
disp(' i a b c f(a) f(b) f(c) E');
disp('----------------------------------------------------------------');
%Perulangan
i=1;
while (t > et ) & (cAwal ~= cAkhir) ;
fa=subs(f,x,a);
%Mensubtitusikan f sbg fungsi, x sbg variabel yang digunakan,
%a sbg variabel yang nilainya kan dimasukkan kedalam x
fb=subs(f,x,b);
%Mensubtitusikan f sbg fungsi, x sbg variabel yang digunakan,
%b sbg variabel yang nilainya kan dimasukkan kedalam x
cAwal=cAkhir;
c=(a+b)/2; %Rumus Biseksi
cAkhir=c;
fc= subs(f,x,c);
fprintf('%3.0f %6.4f %6.4f %12.10f %7.4f %7.4f %7.4f %7.4f \n', i, a, b, c, fa, fb, fc, e);
if fa*fc < 0
b=c;
else
a=c;
end
t=abs(b-a);
i=i+1;
end
disp('jadi, akar persamaan yang diperoleh adalah');
fprintf('%3.8f',fc);
case 3
%Metode Secant
clc;
clear;
disp('Program Metode Secant');
disp('======================');
disp('Penyelesaian untuk Persamaan : x^2-(x+1)e^(-x)=0');
disp('Pendekatan awal yang dicoba (fx0) yaitu 0.8');
%deklarasi awal
disp('penyelesaian dengan algoritma Secant');
x0=input('masukkan nilai pendekatan awal : ');
epsilon=input('Masukkan Nilai Toleransi Error : ');
N=input('Masukkan jumlah iterasi maksimum : ');
x1=x0+1;
E=abs(x0-x1);
fprintf('----------------------------------------------------------------------------\n')
fprintf(' i x0 x1 fmid f(xO) f(X) E\n ')
fprintf('----------------------------------------------------------------------------\n')
%perulangan
i=0;
while (E>epsilon & i<N )
i=i+1;
fprintf('%5.0f%12.7f%12.7f',i,x0,x1);
fx0= x0^2-(x0+1)*exp(-x0); %Persamaan tak linear tuk pendekatan awal
fx1= x1^2-(x1+1)*exp(-x1); %Persamaan tak linear tuk pendekatan selanjutnya
xi =(x1-(fx1*(x1-x0))./(fx1-fx0)); %Rumus metode secant
fxi= xi^2-(xi+1)*exp(-xi);
if (fx0*fxi >0)
x0=xi;
else
x1=xi;
end
E=abs(x1-x0);
fprintf('%12.7f%12.7f%12.7f%12.7f\n', xi,fx0,fxi,E);
end
disp('------------------------------')
fprintf('Akarnya Adalah = %10.8f\n',xi);
case 4
% Metode Newton Rhapson
clc;
dlear;
disp('Program Metode Newton Raphson');
disp('=============================');
disp('- persamaan yang digunakan adalah f(x)=e^x-5x^2');
disp('- dengan nilai e=0.00001');
%Deklarasi awal
E=0.00001; %Toleransi error
x0=input('Masukkan Tebakan awal :');
i=0;
M=9;
xb=0;
disp('________________________________________________');
disp(' i xi f(xi) epsilon');
disp('_______________________________________________');
%Perulangan
while (E<M)
fx=exp(x0)-5*x0^2; %rumus f(x)=e^x-5x^2
gx=exp(x0)-10*x0; %Turunan dari f(x)
xb=x0-(fx/gx); %rumus Newton Rhapson
M= abs(x0-xb); %selisih batas atas dan bawah
x0=xb;
i=i+1;
fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,xb,fx,M);
end
disp('------------------------------')
fprintf('Akarnya Adalah = %10.8f\n',xb);
%Cetak akar
case 5
%Metode Tabel
clear all,clc;
disp('Program Metode Tabel');
disp('=============================');
disp('- persamaan yang digunakan adalah f(x)=x+e^x');
disp('- dengan range x=[-1,0]');
%Deklarasi
bawah =input('masukkan Batas Bawah (nilai terendah) : ');
atas =input('masukkan Batas Ats (nilai tertinggi) : ');
tengah=atas-bawah/10; %rumus metode tabel
disp('nilai dibagi 10 bagian : ');
disp('=');
fx=0;
%Perulangan
for x=1:11
x=bawah;
disp([('nilai-nilai x : ') num2str(x)]);
%rumus x
f=x+exp(x);
disp([('nilai-nilai f(x) : ') num2str(f)]);
disp('=');
%rumus f(x)
if x==0;
disp('nilai ini adalah nilai yang mendekati 0')
disp([('jadi nilai persamaan non linearnya adalah : ') num2str(fx)]);
end
%nilai yang mendekati 0 adalah hasilnya
x=bawah+tengah;
bawah=x;
end
disp('nilai yang mendekati 0 adalah f(x) ') ;
disp([('dengan nilai jangkauan antara : ') num2str(bawah) (' dan ') num2str(atas)]);
case 6
clear all,clc;
disp('Program Metode Iterasi Sederhana');
disp('================================');
disp('- persamaan yang digunakan adalah fx = x^2-2x-3');
disp('- dengan Tebakan awal 4');
x0 = input ('nilai tebakan awal = ');
e = input ('nilai toleransi error = ');
N=0;
disp('_______________________________________________');
disp(' i 4 1 error');
disp('_______________________________________________');
%Perulangan
i=1;
for (i = 1 : 100)
xr = sqrt((2.*x0)+3);
fx = (xr.^2)-(2.*xr)-3;
N = xr - x0;
if (N < 0)
N = -N;
else
N = N;
end
x0 = xr;
fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,x0,N,e);
i=i+1;
if N > e
continue ;
else
break ;
end
end
disp('------------------------------')
fprintf('Akarnya Adalah = %10.8f\n',x0);
%Cetak akar
case 7
%dak tau
case 8
%SOAL KURANG JELAS, PERSAMAAN TIDAK DIKETAHUI
disp('%SOAL KURANG JELAS, PERSAMAAN TIDAK DIKETAHUI ');
case 9
% SOAL 3
clc;
clear;
disp('SOAL 3');
disp('=============================');
disp('- persamaan yang digunakan adalah f(x)=x^2 + e^(-2x)');
disp('- pada range [0, 10]');
%Deklarasi awal
E=0.0001; %Toleransi error
x0=input('Masukkan Tebakan awal akar :');
i=0;
M=9;
xb=0;
x=x0;
disp('_______________________________________________');
disp(' i xi f(xi) epsilon');
disp('_______________________________________________');
%Perulangan
while (E<M)
fx=x^2+exp(-2*x)*sin(x); %rumus persamaan
gx=2*x+exp(-2*x)*sin(x)+exp(-2*x)*cos(x); %Turunan dari rumus fx diatas
xb=x-(fx/gx); %rumus Newton Rhapson
M= abs(x-xb);
x=xb;
i=i+1;
fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,xb,fx,M);
end
disp('------------------------------')
fx0=x0^2+exp(-2*x0)*sin(x0);
fprintf('Nilai Pucaknya Adalah = %10.8f\n',fx0);
%Cetak akar
otherwise
disp('Maaf, Data yang anda input tidak diketahui ');
return ;
end;
Hasil :
No comments:
Post a Comment