Last active
September 18, 2016 08:19
-
-
Save ChristopherAT/cf57866d53f271fb5d85231fd598b241 to your computer and use it in GitHub Desktop.
(12/330958/PA/14416 : modul 2)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % | |
% 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