• Nenhum resultado encontrado

Vektörel Newton Yöntemi

No documento Nonlineer cebirsel denklemler (páginas 36-46)

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

No documento Nonlineer cebirsel denklemler (páginas 36-46)

Documentos relacionados