27 Haziran 2017 Salı

Nonlineer Denklemlerde Çözüm Metotları: Yarıya Bölme


Cebirsel olarak çözümü bulunamayan bir nonlineer denklemin veya nonlineer denklem sistemlerinin çözümü veya çözümleri için sayısal yöntemler geliştirilmiştir. Bilgisayar teknolojisinin ve işlemci güçlerinin artışıyla bu yöntemler kullanışlı olmaya başlamıştır. Bu yazıda, daha özel bir denklemin çözümü için uyguladığım (http://butakdirde.blogspot.com.tr/2016/12/kesisen-ustel-ile-dogru-denklemi.html) bir yöntemi daha genel olarak ifade edeceğim.
Metot, bir f(x) için, f(x0)=0 değerine götüren x0 değerini, veya bu değere yakın olan hatalı bir değerin iteratif yöntemle bulmayı amaçlamaktadır.

Yardımcı Teorem:
F, [a,b] aralığında sürekli  ve fonksiyonun değer kümesi [α,β] aralığı olsun.
 vardır. Bunun tersini düşündüğümüzde ise
 vardır.

Yardımcı Teorem ile:
F’in [a,b] aralığında bire bir ve örten bir fonksiyon olduğu düşünülürse,  olsun:
 vardır.

Denklemin Çözümü:
Teoremde ifade edilen gibi bir fonksiyon var olsun. Her noktasında bire bir ve örten olmasa bile seçilecek olan [XR,XL] aralığında bire bir ve örten olsun.
Bu aralıkta sadece bir tane kökü olunduğu bilinsin. Daha önceki yazımda baskın olarak bu aralığın tahmini ve kesin ifade edilişi üzerinde durmuştum: 
Mantıksal ifade edilmesi açısından bir g fonksiyonu tanımlansın:
Fonksiyonda 0 değerini verecek olan kök u değeri civarında [XR,XL] aralığı keyfi olarak belirlensin. Bunun nasıl belirleneceği denkleme göre değişebilir. Yardımcı teorem sonucunda
 vardır.
Şeklinde yeni bir değer için u’yu içinde barındıracak yeni bir aralık belirlenebilir.
Olması için
Olması gerekir. Bir X için,
Sonucuna bakılarak eşitsizlik sağlanabilir. Aynı zamanda XM ile aralık küçülecektir. Böylece u’nun değerine sınır getirilebilir. Hata belirlenerek yaklaşık hesabı yapılabilir.
Bunun sonucunda döngü kesilerek  aralığında olduğu bulunmuş olsun. Bu ifade u’nun hangi aralıkta olduğunu söylemesine karşın hangisine daha yakın olduğunu söylememektedir. U’nun en hatalı hali,
Olabilir. Böylece
Elde edilir. Burada dikkat edilirse
İfadesi bir sonraki döngü sonucunda bulunacak olan XM değeridir.  
Algoritma:  
Algoritma için başlangıç aralığı olan [a,b] gerekiyor ve a’nın veya b’nin bir kök olmasın. Algoritma başlangıcında bir şart ile bu gereklilik kaldırılabilir.
Algoritmanın dezavantajlarından bahsedecek olursak, başlangıç aralığını belirlemek ve aralıkta çift kök varsa bunu görememesi olarak söyleyebiliriz.

Matlab Uygulama:
G fonksiyonunu tanımlayalım:
function [y] = g(x)
    if(x>0)
        y = 1;
    elseif(x<0) 
        y=-1; 
    else  
        y = 0; 
    end
end

Kökü bulacağımız program:

f = @(x) exp(2*x)-x^2;  %kök aranacak fonksiyon
a = -2; %kökün aranacağı aralık değerleri
b = 0;
TD = 0.01;

stop = 0; step = 0;
XR = a;
XL = b;
GR = g(f(XR));
GL = g(f(XL));

if GR*GL~=-1
   stop = 1;
   disp('Tek Kök Yok');
end

while stop == 0
   XM = (XR+XL)/2;    step = step + 1;
   GM = g(f(XM));
   if((abs(XL-XR)<TD)||(GM==0))
       stop = 1;
       disp(XM);
    break;
   end 
  
   if(GR*GM == -1)
       XL = XM;
       GL = g(f(XL));
   else
       XR = XM;
       GR = g(f(XR));
   end
end

Program çıktısı:
-0.5664
Step değişkeni ise 9’dur. 9 kez bölünerek elde edildi.
Grafik çizdirerek elde edilen sonuç:
-0.56714329

Hiç yorum yok:

Yorum Gönder