BM 206 SAYISAL ÇÖZÜMLEME
Prof. Dr. Kurtuluş SOYLUK
web: w3.gazi.edu.tr/~ksoyluk
2.1.1.1 MATLAB M-FILE: bisection
İkiye Bölme Yöntemi için Algoritma:
function root=bisection(func,xa,xu,es,maxit)
if f(xa)*f(xu)>0
Stop
iter=0
xr=xa
DO
xrold=xr
xr=(xa+xu)/2
iter=iter+1
if xr≠0 then
end if
test=f(xa)*f(xr)
if test<0
xu=xr
elseif test>0 xa=xr
else
end if
if
or iter>=maxit Exit
END DO
root=xr
MATLAB: Bisection (İkiye Bölme Yöntemi)
Sayfa 1
BM 206 SAYISAL ÇÖZÜMLEME
Prof. Dr. Kurtuluş SOYLUK
web: w3.gazi.edu.tr/~ksoyluk
function root=bisection(func,xa,xu,es,maxit)
%
% İkiye Bölme Yöntemi ile Kök Hesabı
% func=fonksiyon
% xa,xu=alt ve üst sınır tahminleri
% es=durdurma kriteri (%)
% maxit=izin verilen max iterasyon sayısı
%
if func(xa)*func(xu)>0
% tahminler işaret değişimini kıskaca almıyorsa
error ('kok kiskaca alinamadi') % hata mesajı yaz ve programı sonlandır
return
end
%
if nargin<5, maxit=50; end
% maxit girilmemişse 50 olarak al
if nargin<4, es=0.001; end
% es girilmemişse 0.001 olarak al
%
iter=0;
xr=xa;
while (1)
xrold=xr;
xr=(xa+xu)/2;
iter=iter+1;
if xr ~=0, ea=abs((xr-xrold)/xr)*100; end
test=func(xa)*func(xr);
if test<0
xu=xr;
elseif test>0
xa=xr;
else
ea=0;
end
if ea<=es | iter>=maxit, break, end
end
root=xr;
Yukarıdaki m-file bisection.m olarak kaydedilip, komut penceresine aşağıdaki işlem
yazılarak kök bulunur.
>> bisection(@(x) x^3+2*x^2-10,1,2,0.0001)
ans =
1.6542
MATLAB: Bisection (İkiye Bölme Yöntemi)
Sayfa 2
Download

bm 206 sayısal çözümleme