Skip to content

Instantly share code, notes, and snippets.

@ChristopherAT
Last active September 18, 2016 08:19
Show Gist options
  • Save ChristopherAT/cf57866d53f271fb5d85231fd598b241 to your computer and use it in GitHub Desktop.
Save ChristopherAT/cf57866d53f271fb5d85231fd598b241 to your computer and use it in GitHub Desktop.
(12/330958/PA/14416 : modul 2)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% Fungsi ini digunakan untuk mencari solusi dari sistem
% persamaan dengan n variabel berbentuk x=F(x)
%
% Cara menjalankan program, ketik perintah dibawah ini dalam
% Command Window: Iterasi_N_Variabel(func,x0,tol)
%
% INPUT:
% func = Isi fungsi yang berisikan sistem persamaan yang akan
% dicari solusinya
% x0 = Tebakan awal dalam vektor, contoh: [0.1;2;5]
% tol = Toleransi kesalahan pendekatan solusi yang diperbolehkan
%
% OUTPUT:
% x1 = Solusi dalam vektor
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
function x1=Iterasi_N_Variabel(func,x0,tol)
if nargin==2 % Jika variabel yang dimasukan hanya 2,
tol=0.00001; % Kemungkinan user lupa memasukan nilai
end % toleransi, ambil toleransi standar = 10^-5
iterasi=0; % Untuk menghitung jumlah iterasi
n=norm(x0); % n menyimpan banyaknya variabel
% Agar perulangan dibawah bisa berjalan
r=tol+1; % Jika diisi dengan r=sqrt(dot(x1-x0,x1-x0))
% Program tidak dapat berjalan untuk tebakan awal 0
if x0==feval(func,x0) % Jika x0=F(x0) berarti x0 adalah solusi
return; % yang dicari, progam selesai
end %
while r>tol && iterasi<1000 %
x1=feval(func,x0); % Program tidak akan berhenti sampai
r=sqrt(dot(x1-x0,x1-x0)); % sebelum x0-f(x0) kurang dari toleransi
x0=x1; % atau jika iterasi sudah melebihi 1000 kali
iterasi=iterasi+1; %
end
if (iterasi>=1000) % Iterasi dibatasi sampai 1000 kali
disp('Iterasi terlalu banyak'); % Jika sudah sampai batas, output adalah
% nilai x1 terakhir yang diperoleh
else
text=sprintf('Iterasi: %d',iterasi); % Digunakan untuk menampilkan program
disp(text); % berhenti di iterasi keberapa
end
return;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment