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.
Yardımcı
Teorem ile:
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
Ş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