6.5 Aral¬k üzerinde s¬f¬ryerleri
6.5.2 Vektörel Newton Yöntemi
-1 -0.5 0 0.5 1 -1
-0.5 0 0.5 1
-1 -0.5 0 0.5 1
-1 -0.5 0 0.5 1
-1 -0.5 0 0.5 1
-1 -0.5 0 0.5 1
-1 -0.5 0 0.5 1
-1 -0.5 0 0.5 1
¸
Sekil 6.5: xn 1 inn = 3;5;7ve 9 için s¬f¬ryerleri.
>> df=inline(’cos(x)+1./x.^2’)
>> X¤=cvNewton(f,df,10,1)
X¤ = -9.3172 -6.4391 -2.7726 -1.1142 1.1142 2.7726 6.4391 9.3172 Elde edilen s¬f¬ryerleri ve fonksiyon gra…¼gi ¸Sekil 6.6 de gösterilmektedir.
-10 -8 -6 -4 -2 0 2 4 6 8 10
-10 -8 -6 -4 -2 0 2 4 6 8 10
¸
Sekil 6.6: f(x) =sin(x) 1=x fonksiyonu gra…¼gi ve s¬f¬ryerleri(*) S¬f¬ryerini içeren aral¬kta fonksiyonun i¸saret de¼gi¸stirmemesi durumunda vektörel ikiye bölme yöntemi yerine vektörelNewtonyönteminin kullan¬lmas¬
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
uygundur. A¸sa¼g¬daki örnekte fonksiyonun s¬f¬ryerlerinde i¸saret de¼gi¸stirmedi-
¼
gine dikkat ediniz.
ÖRNEK 6.14. f(x) = sec(x) 1 fonksiyonunun [ 10;10] aral¬¼g¬ndaki s¬- f¬ryerlerini Program 6.5 ile belirleyiniz.
Çözüm. >>f=inline(’sec(x)-1’)
>>df=inline(’sec(x).*tan(x)’)
>>X¤=cvNewton(f,df,10)
>>X¤ =-6.2832 -0.0000 6.2832
-8 -6 -4 -2 0 2 4 6 8
-100 -80 -60 -40 -20 0 20
¸
Sekil 6.7: sec(x)-1 fonksiyonu ve s¬f¬ryerleri
Al¬¸st¬rmalar 6.2.
1. Vektörel ikiye bölme yöntemine ait algoritma6.2 için uygun program haz¬rlayarak a¸sa¼g¬da verilen fonksiyonlar¬n kar¸s¬lar¬nda belirtilen ar- al¬klardaki s¬f¬ryerlerini belirleyiniz.
(a) f(x) =x3+ 3x2 2x 1;[ 5;5]
(b) f(x) = cos(x) 1=x2;[ 8;8]
(c) f(x) =e x2 sin(x);[ 7;7]
(d) f(x) = tan(x) cos(x);[ 10;10]
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
2. Yukar¬da verilen 6.3 algoritmas¬na ait cvNewton isimli Program 6.5 a¸sa¼g¬da verilmi¸stir. cvNewton program¬n¬ yukar¬da bölüm sonunda ve- rilen çözümlü örnekler üzerinde test yap¬n¬z. Ayn¬sonuçlar¬elde ediyor musunuz?
3. Soru 2 de inceledi¼giniz program¬, Soru 1 de verilen örnekler üzerinde de test yap¬n¬z. Vektörel ikiyebölme yöntemi ile ayn¬sonuçlar¬elde ediyor musunuz?
4. Proje(Polinomlar için Vektörel Newton Yöntemi): Fonksiyon ve türevini kullan¬c¬dan alarak belirtilen yar¬çapl¬ disk içerisindeki tüm s¬f¬ryer- lerini belirleyen 6.3 algoritmas¬n¬, verilen polinomun tüm s¬f¬ryerle- rini bulacak biçimde ve CVNewtonp ismiyle geli¸stiriniz. Kullan¬c¬n¬n sadece polinomun katsay¬lar vektörünün girmesi yeterli olmal¬d¬r.(·Ipucu:
Öncelikle verilen bilgiden hareketle s¬f¬ryerlerini içeren disk yar¬çap¬n¬
ilgili teoriyi ara¸st¬rarak tahmin ediniz. Ayr¬ca türev polinomunun kat- say¬lar vektörünü, verilen polinom katsay¬lar vektörü yard¬m¬yla belir- leyiniz.) Test sonuçlar¬n¬z¬ MATLAB/OCTAVE roots fonksiyonu ile elde edebilece¼giniz sonuçlarla kar¸s¬la¸st¬r¬n¬z.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
Algoritma 6.3 Disk içersindeki tüm kökler için Vektörel Newton Algorit- mas¬
1. input: f; df; r; secenek; dx; secenek = 0:reel s¬f¬ryerleri,secenek = 1:tüm s¬f¬ryerleri
2. varsay¬lan de¼gerler: secenek= 0; dx= 0:1;
3. Reel s¬f¬ryerler için X0 = r:dx:r;
4. Tüm s¬f¬ryerleri içinX = [ r :dx:r]x[ r :dx:r];Y =X;Z =X+iY; 5. Z matrisinin sat¬rlar¬n¬uç uca ekleyerek X0 ba¸slang¬ç vektörü olu¸stur;
6. Xf f(X0) = 0;
7. sayac= 0;M axsayac= 15;carp= 1e10;eps= 1E 14;
8. M axsayacde¼gerine ula¸s¬lana kadar a¸sa¼g¬dadakileri tekrarla;
(a) df(X0)vektörünü hesapla vedf(X0)6= 0 olan i0 indislerini belirle;
(b) X0 X0(i0);
(c) X1 X0 f(X0):=df(X0);
(d) jX1j< re¸sitsizli¼gini sa¼glayanii indislerini belirle;
(e) X0 X0(ii); X1 X1(ii);
(f) f ark jX1 X0j;
(g) f ark epse¸sitsizli¼gini sa¼glayanj0indislerini belirle;
(h) f ark > epse¸sitsizli¼gini sa¼glayanj1indislerini belirle;
(i) sayac sayac+ 1;
(j) Xf X0(j0);yak¬nsayan bile¸senleri Xf vektörüne y¬¼g;
(k) X0 X1(j1);yak¬nsamayan bile¸senleri güncel ba¸slang¬ç vektörü ola- rak al;
(l) X0 bo¸s ise mevcut Xf f i kullan¬c¬ya ilet;
(m) secenek= 1 ise
i. reel ve sanal k¬s¬mlar¬virgülden sonra on basama¼ga kadar yuvarla;
ii. fakl¬bile¸senleri belirle veXf f vektöründe biriktir.
(n) secenek= 0 ise
i. yak¬nsak bile¸senleriXf f vektöründe biriktir;
ii. Xf f vektörünü s¬rala;
iii. ard¬¸s¬k elemanlar aras¬ndaki fark¬dx den büyük olanlar¬ farkl¬
kabul et.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
function X1=newtonsqv(F,X0)
%---
% Quasi Newton- Newton benzeri yöntem
% Nonlineer sistem s¬f¬r yeri belirler.
% Jacobiyen say¬sal yakla¸s¬mla belirlenir.
% F nin tek bir fonksiyon olmas¬ durumunda, kiri¸s yöntemine indirgenir.
% ec, 13 Nisan 2019.
%--- min_deger=1e-5; max_deger=1e5;max_sayac=40;
test=1;sayac=0;
X1=X0+0.1;
while test
Yp=jacobi(F,X0,X1);
Y=F(X1);
Delx=-Yp \ Y;
X2=X1+Delx;
sayac=sayac+1;
fark=norm(X2-X1,inf);
test=(fark>min_deger)&(norm(X2,inf)<max_deger)&(sayac<max_sayac);
X0=X1;X1=X2;
end
%Yak¬nsamama durumunda mesajlar ....
function J=jacobi(F,X0,X1) n=length(X0);
for i=1:n for j=1:n;
dxv=zeros(n,1);
dx=X1(j)-X0(j);
dxv(j)=dx;
J(i,j)=(F(X1)(i)-F(X1-dxv)(i))/(X1(j)-X0(j));
end end
Program 6.3: Nonlineer sistemler için Newton benzeri yöntemi uygulamas¬
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
% S¬f¬ryerlerini içeren aral¬k uc noktalar vektörü
% ve tesadüfen bulunan s¬f¬ryerlerini
% ça¼g¬ran programa gönderir.
% A: sol uç noktalar
% B: sa¼g uç noktalar
%--- function [A,B,sifirlar]=ikibolaralik(f,a,b,dx) test=1;
A=[];B=[];sifirlar=[];
while test if f(a)==0
sifirlar=[sifirlar;a];
end
if f(a+dx)==0
sifirlar=[sifirlar;a+dx];
end
if f(a)*f(a+dx)<0
A=[A;a];B=[B;a+dx];
end a=a+dx;
if a>=b test=0;
end end
Program 6.4: ·I¸saret de¼gi¸sim aral¬klar uygulamas¬
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
function Xff=cvnewton(f,df,r,secenek,dx)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Vektörel Newton B(0,r) deki komplex/reel kökleri bulur
% secenek girilmezse reel s¬f¬ryerlerini bulur.
% secenek=1 ise tüm s¬f¬ryerlerini bulur.
% ec, May¬s, 2015
% Bu program [7] de verilen program¬n geli¸stirilmi¸s versiyonudur.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
carp=1e6; %kompleks kökler için yuvarlama parametresi sayac=0; %sayac de¼gi¸skeni
eps=1E-14; %yak¬nsama kontrol parameteresi maxsayac=25; % maximum iterasyon say¬s¬
if nargin==3 secenek=0;dx=0.1;
end;
if nargin==4 dx=0.1;
end
if secenek==0
X0=-r:dx:r;X0=X0’; %reel s¬f¬ryerleri için ba¸slang¬ç elseif secenek==1 % tahmin vektörü
x=-r:dx:r;y=j*x;n=length(x);n2=n*n;
[X,Y]=meshgrid(x,y);
Z=X+Y;
X0=reshape(Z,n2,1); % tüm s¬f¬ryerleri için ba¸slang¬ç
% tahmin vektörü(reel ve kompleks) else error(’kullan¬m: Xf=cvnewton(f,df,r,secenek,dx)’);
end
test=sayac<maxsayac; % döngü de¼gi¸skeninin ilk de¼geri 1 e e¸sit ii=find(f(X0)==0); % tesadüfen bulunabilen s¬f¬ryerleri
Xf=X0(ii); % s¬f¬ryerlerini saklayan vektörel de¼gi¸sken while test
df0=df(X0); %türevin X0 daki de¼gerler vektörü
i0=find(df0~=0); % türevin s¬f¬rdan farkl¬ oldu¼gu indisler X0=X0(i0); %turevi s¬f¬rdan farkl¬ ba¸slang¬ç de¼gerleri X1=X0-f(X0)./df(X0); %Vektörel Newton ad¬m¬
ii=find(abs(X1)<r); % r yar¬çapl¬ bölgedeki s¬f¬ryerleri indisleri X0=X0(ii);
X1=X1(ii);
fark=abs(X1-X0); %yakla¸s¬mlar aras¬ fark
j0=find(fark<=eps); %yak¬nsayan bile¸senlerin indisleri j1=find(fark>eps); %yak¬nsamayan bile¸senlerin indisleri sayac=sayac+1; %döngü de¼gi¸sken de¼ger art¬r¬m¬
if length(j0)>0
Xf=[Xf;X1(j0)]; % yak¬nsayan bile¸senleri X vektörüne diz end
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
if length(j1)>0
X0=X1(j1); % yak¬nsamayan bile¸senlerle devam et end
if isempty(X0)
break; %bölgede yak¬nsamayan bile¸sen yoksa döngüden ç¬k end
test=sayac<maxsayac; % maxsayac ula¸s¬lana kadar i¸slemleri tekrarla end
if secenek==1
Xfr=round(carp*real(Xf))/carp; %reel k¬s¬mlar¬ yuvarla Xfs=round(carp*imag(Xf))/carp; % sanal k¬s¬mlar¬ yuvarla
Xfy=round(carp*Xfr)/carp+i*round(carp*Xfs)/carp; %yuvarlanm¬¸s degerler Xff=unique(Xfy); %farkl¬ olan yuvarlanm¬¸s degerleri belirle
else
ii=find(abs(f(Xf))<1e-5); % yak¬nsak bilesen indisleri if length(ii)>0
Xf=Xf(ii);
Xf=sort(Xf); %s¬rala
Xff(1)=Xf(1);n=length(Xf)-1;
for ii=2:n
if abs(Xf(ii+1)-Xf(ii))>dx
Xff=[Xff;Xf(ii+1)]; %farkl¬ olanlar¬ seç end
end
else display(’No reel zeros’);
end end
Program 6.5: Geli¸stirilmi¸s Vektörel Newton yöntemi uygulamas¬
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
[1] Atkinson, K. An Introduction to Numerical Analysis, John Wiley &
Sons, 1988.
[2] Co¸skun, E. OCTAVE ile Say¬sal Hesaplama ve Kod- lama(URL:aves.ktu.edu.tr/erhan/dokumanlar).
[3] Co¸skun, E. Maxima ile Sembolik Hesaplama ve Kod- lama(URL:aves.ktu.edu.tr/erhan/dokumanlar).
[4] Edwards & Penney, çeviri ed. Ak¬n, Ö., Diferensiyel Denklemler ve S¬n¬r De¼ger Problemleri, Palme Yay¬nc¬l¬k, 2006.
[5] Hildebrand, F. B., Introduction to Numerical Analysis, Dover Publica- tions, Inc., 1987.
[6] Kincaid, D., Cheney, W., Numerical Analysis, Brooks/Cole, 1991.
[7] Memo¼glu, M., Vektörel S¬f¬ryeri ve ektremum nokta belirleme algorit- malar¬, Yüksek Lisans Tez Çal¬¸smas¬, KTÜ, 2012.
[8] OCTAVE, GNU özgür yaz¬l¬m(URL:OCTAVE.sourceforge.net).
[9] Pottmeyer, L., News on quadratic polynomials, Snapshots of modern mathematics from Oberfolfach, 2/2017(URL:imaginary.org).
[10] Press, H. W. ve ark., Numerical Recipes in C, Cambridge University Press, 1988.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r