İkiye Bölme Metodu: Neredeyse Hiç Matematik Bilmeden Denklem Çözmek Mümkün mü?
Denklemler, uygulamalı matematiğin çok önemli bir parçasını oluşturur. Elimize bir problem geldiğinde, o problemi bir denkleme dökmeye çalışırız. Bu problem, temel bilimlere ait bir problem de olabilir, sosyal bilimler problemi de, hiç fark etmez. Algoritmalar ile düşünürüz ve bu yüzden bir denklemi çözmek ve ulaşılan sonucu değerlendirmek, araştırmalarımız için çok önemlidir. Fakat bazı denklemler vardır ki bunları çözmek biraz matematik bilgisi gerektiriyor olabilir ve sizde de yeterli matematik bilgisi olmayabilir. Bir başka durum da, normal yöntemlerle çözülemeyen bir denklemle karşı karşıya olmanızdır. Mesela ne kadar iyi bir matematikçi olursanız olun:
sin(x226)+34/x=lnx\sin(\frac{x}{226})+34/x=lnx
gibi bir denklemi kağıt kalem ile çözmekte zorlanırsınız. Bu yüzden hesap makineleri var! Fakat her hesap makinesi denklem çözemiyor ve diyelim ki sizin elinizde denklem çözemeyen bir hesap makinesi var. Neredeyse hiç matematik kullanmadan, karmaşık bir denklemi, basit bir hesap makinesiyle nasıl çözebiliriz?
İkiye bölme metodu adı verilen bir yöntem ile! Metodu aşağıda anlatacağız; ancak en baştan söyleyelim: Bu metodun da bazı sıkıntılı noktaları var. Öncelikle denklemi çözerken, kökün (yani çözüm veya çözümlerin) aşağı yukarı hangi aralıkta olabileceğini tahmin etmeniz lazım. Bunun için de ara değer teoremi denilen bir teoremi bilmeniz lazım.
"Hani hiç matematik bilmeyecektik?" dediğinizi duyar gibiyiz. Endişe etmenize gerek yok; çünkü bu teorem, oldukça kolay ve son derece kolaylıkla anlayabileceğiniz, hatta muhtemelen ne olduğunu bildiğiniz ama ismini bilmediğiniz bir teorem. Hatta şimdiden söyleyebiliriz: Ara değer teoremini anlamak için, "süreklilik" sözcüğünün anlamını bilmeniz bile yeterlidir. Söz verdiğimiz gibi, yazı boyunca lise düzeyinden hiç çıkmayacağız.
Ara Değer Teoremi
Teorem, basitçe şunu söyler: ff fonksiyonu, bir [a,b][a,b] kapalı aralığında sürekli olsun ve f(a)f(b)<0f(a)f(b)<0 olsun. O halde, bu fonksiyonun verilen aralıkta en az bir kökü vardır.
Teorem, gördüğünüz üzere fazlasıyla kolay. Yine de izah edelim. Diyelim ki süreklilik nedir bilmiyorsunuz, "bir aralıkta süreklilik" kavramını şöyle düşünebilirsiniz: Bir fonksiyon, bir aralıkta sürekli ise, o fonksiyonun grafiğini kalem ile elinizi hiç kaldırmadan çizebilmeniz lazım.
Şekli inceleyerek yukarıda anlattığımız her şeyi özetleyelim: [a,b][a,b] aralığını ss doğrusu üzerinde hayal edin. f(a)f(a) negatif ve f(b)f(b) pozitif verilmiş. Bu fonksiyon, bu aralıkta süreklidir çünkü grafiğini bir kalem ile elinizi hiç kaldırmadan çizebilirsiniz. Görüyorsunuz ki fonksiyon, ss doğrusunu farklı noktalarda kesiyor. Kesmesi lazım, çünkü negatiften pozitife geçerken 0 değerini alması gerekli (çünkü fonksiyon "sürekli").
- Mekanizma Tasarımı ve Oyunlarda Kurallar: Bir Pastanın Eşit Şekilde Bölüştürülmesini Nasıl Sağlarsınız?
- Stratejik Düşünmenin Bir Numaralı İlkesi: Geleceğe Bakın ama Geçmişe Yönelik Akıl Yürütün!
- Nükleer Silahlar, Bir Yandan Var Oluşumuzu Tehdit Ederken, Diğer Yandan Ülkeleri Savaştan Nasıl Caydırıyor?
Burada şuna da dikkat edin: s=0s=0 olan noktalar, bizim için özellikle değerli; çünkü fonksiyonun kökü, fonksiyonu sıfır yapan değerlerdir. İkiye bölme metodunu, sadece ara değer teoremini sağlayan fonksiyonlarda kullanabiliriz. Unutmayın ki bir denklem, f(x)=0f(x)=0 biçiminde yazılabilen matematiksel bir fonksiyondur.
Örnek Bir Fonksiyon
Örneğin profesörünüz bir deney yaptı ve sonuç olarak f(x)=x2−x+ln(x)f(x)=x^2-x+ln(x) fonksiyonu ile tarif edilebilecek bir model geliştirdi. Tamamen somutlaştırmak adına, bu deney, uzayda bir sarkacın ucundaki topun konumunun bir xx anındaki modellemesi olsun. Profesör sizden sarkacın ne zaman başladığı noktaya geleceğini, yani hangi anda f(x)=0f(x)=0 olacağını soruyor olsun. Tabii böylesi bir model bulabilen bir profesör, elbette denklemi de çözmüştür; ancak sizi denemek istiyor diyelim. Kendinizi kanıtlamanız lazım; ancak hesap makineniz sadece temel işlemleri yapabiliyor ve şansa bakın ki internet ve sorabileceğiniz hiç kimse yok. Ne yapmanız lazım?
Önce algoritmayı verip sonra denklem üzerinde uygulayalım.
Aslında maddi destek istememizin nedeni çok basit: Çünkü Evrim Ağacı, bizim tek mesleğimiz, tek gelir kaynağımız. Birçoklarının aksine bizler, sosyal medyada gördüğünüz makale ve videolarımızı hobi olarak, mesleğimizden arta kalan zamanlarda yapmıyoruz. Dolayısıyla bu işi sürdürebilmek için gelir elde etmemiz gerekiyor.
Bunda elbette ki hiçbir sakınca yok; kimin, ne şartlar altında yayın yapmayı seçtiği büyük oranda bir tercih meselesi. Ne var ki biz, eğer ana mesleklerimizi icra edecek olursak (yani kendi mesleğimiz doğrultusunda bir iş sahibi olursak) Evrim Ağacı'na zaman ayıramayacağımızı, ayakta tutamayacağımızı biliyoruz. Çünkü az sonra detaylarını vereceğimiz üzere, Evrim Ağacı sosyal medyada denk geldiğiniz makale ve videolardan çok daha büyük, kapsamlı ve aşırı zaman alan bir bilim platformu projesi. Bu nedenle bizler, meslek olarak Evrim Ağacı'nı seçtik.
Eğer hem Evrim Ağacı'ndan hayatımızı idame ettirecek, mesleklerimizi bırakmayı en azından kısmen meşrulaştıracak ve mantıklı kılacak kadar bir gelir kaynağı elde edemezsek, mecburen Evrim Ağacı'nı bırakıp, kendi mesleklerimize döneceğiz. Ama bunu istemiyoruz ve bu nedenle didiniyoruz.
İkiye Bölme Metodu
Varsayalım ki ff fonksiyonu [a,b][a,b] aralığında ara değer teoremini sağlasın. Bir ϵ\epsilon hata payı ile f(x)=0f(x)=0 denkleminin bir kökünü bulmak için aşağıdaki algoritmayı takip ederiz.
- c=a+b2c=\frac{a+b}{2} olarak alırız; yani aralığın tam orta noktasını... Daha sonra f(c)f(c) değerine bakarız; burada ilkel hesap makinemiz işe yarayacaktır. Bulacağımız değerin mutlak değeri ϵ\epsilon 'dan küçükse kökü bulmuşuz demektir. Değilse, bir sonraki adıma geçeriz.
- f(c)f(a)f(c)f(a) çarpımına bakarız. Bu çarpım negatifse, bb yerine hesapladığımız cc sayısını yazarız ve 1. adımı yeniden uygularız. Eğer pozitifse bu kez aa yerine hesapladığımız cc sayısını yazarız ve 1. adımı yeniden uygularız.
Oldukça ilkel bir algoritmadır ve yakınsama hızı olarak normal sayılabilecek hıza sahiptir; fakat ilkelliğine göre, oldukça hızlı bir algoritmadır, yani sonuca ulaşmak için pek işlem yapmazsınız.
Şimdi, profesörün sorusuna geri dönelim. Böyle bir metodu uygulamaya karar verdik; ancak elimizde aralık yok.
Dahası, bu fonksiyonun sürekli olduğunu nereden biliyoruz? f1=x2,f2=−x,f3=lnxf_1=x^2,f_2=-x,f_3=lnx olsunlar, bu üç fonksiyonun da sürekli olduğunu biliyoruz (görmesi oldukça kolaydır, grafiklerini hatırlayın). Dolayısıyla bunların toplamı olan ff fonksiyonu da süreklidir.
Minik bir analiz daha yapalım: Aradığımız kök, negatif olamaz; çünkü lnxlnx fonksiyonu sadece pozitif gerçek sayılarda tanımlıdır. Pek matematik kullanmama sözü vermiştik, o yüzden analizi fazla uzatmayalım, devam edelim.
Şimdi bir aralık tahmin edelim: Burada hesap makinemizden yararlanabiliriz. 1e\frac{1}{e} değeri için ff fonksiyonu negatif değer alacaktır. Hesap makinesi kullanmadan da bunu görebilirdik; ama matematik kullanmama sözümüz var, bu yüzden ilkel bir hesap makinesi ile bunu doğrulayın. Aynı zamanda ee değeri için ff fonksiyonu pozitif değer alacaktır, bunu da kontrol edin.
Bunları tahmin etmek esasında çok zor değildir, çünkü 1e\frac{1}{e} değeri 1'den küçüktür ve 1'den küçük sayılar için x2−x<0x^2-x<0 olur. Ayrıca ln(1e)<0\ln(\frac{1}{e})<0 olduğunu da biliyoruz dolayısıyla (1e)2−1e+ln1e<0(\frac{1}{e})^2-\frac{1}{e}+\ln \frac{1}{e}<0 olur. Öbür taraftan 1">e>1e>1 'dir ve 1'den büyük sayılar için 0">x2−x>0x^2-x>0 olur ve 0">lne>0\ln e>0 olur dolayısıyla 0">e2−e+lne>0e^2-e+\ln e >0 olur. Lise düzeyinde matematik bilgisi kullanıyoruz hala! Hiç lisans düzeyinde bir matematik kullanmadık.
Dolayısı ile f(x)=x2−x+lnxf(x)=x^2-x+\ln x fonksiyonunun [1e,e][\frac{1}{e},e] aralığında bir kökü vardır ve biz bunu ikiye bölme metodu ile hesaplayabiliriz. Hata payını da çok küçük belirleyelim: ϵ=10−5\epsilon=10^{-5} olarak seçelim.
Algoritmanın Kağıt, Kalem ve Basit Bir Hesap Makinesi ile Uygulanması
Algoritma biraz eski olduğundan ve matematiksel altyapısı çok zayıf olduğundan bazen uzun sürebilir. Tabii bu bilgisayar için pek problem değildir ancak kağıt kalem ile yapıyorsanız kağıt zayiatı yüksek olabilir. İlk adımları burada yapacağız, daha sonra ise MATLAB üzerinden tam çözümü vereceğiz. Hazırsanız adım adım yapmaya başlayalım.
1. Adım
- c=e−1+e2=1.5431c=\frac{e^{-1}+e}{2}=1.5431 ve
- f(e−1)=−1.2325,f(e)=5.6708f(e^{-1})=-1.2325, f(e)=5.6708 ve f(c)=f(1.5431)=1.2718f(c)=f(1.5431)=1.2718 ve
- hata payı 10^{-5}">∣f(1.5431)∣=1.2718>10−5|f(1.5431)|=1.2718 > 10^{-5} olduğundan bir sonraki adıma geçmeliyiz.
- f(e−1)f(1.5431)<0f(e^{-1})f(1.5431)<0 olduğundan yeni aralığımız [e−1,1.5431][e^{-1},1.5431] olur.
2. Adım
- c=e−1+1.54312=0.9555c=\frac{e^{-1}+1.5431}{2}=0.9555 ve
- f(0.9555)=−0.0881f(0.9555)=-0.0881 dolayısıyla hata payı 10^{-5}">∣f(0.9555)∣=0.0881>10−5|f(0.9555)|=0.0881>10^{-5} olduğundan bir sonraki adım için aralık oluşturmalıyız.
- f(0.9555)f(1.5431)<0f(0.9555)f(1.5431)<0 olduğundan yeni aralığımız [0.9555,1.5431][0.9555,1.5431] olur.
3. Adım
- c=0.9555+1.54312=1.2493c=\frac{0.9555+1.5431}{2}=1.2493 ve
- f(1.2493)=0.5340f(1.2493)=0.5340
- dolayısıyla hata payı 10^{-5}">∣f(1.2493)∣=0.5340>10−5|f(1.2493)|=0.5340> 10^{-5} olduğundan, yine algoritmayı devam ettirmeliyiz,
- f(1.2493)f(0.9555)<0f(1.2493)f(0.9555)<0 olduğundan yeni aralığımız [0.9555,1.2493][0.9555,1.2493] olur.
4. Adım
- c=0.9555+1.24932=1.1024c=\frac{0.9555+1.2493}{2}=1.1024 ve
- f(1.1024)=0.2103f(1.1024)=0.2103 ve
- hata payı 10^{-5}">∣f(0.2103)∣=0.2103>10−5|f(0.2103)|=0.2103>10^{-5} olduğundan algoritmayı devam ettirmeliyiz.
- f(1.1024)f(0.9555)<0f(1.1024)f(0.9555)<0 olduğundan yeni aralığımız [0.9555,1.1024][0.9555,1.1024] olur.
Görüleceği üzere algoritma biraz uzun sürüyor. Biz, burada algoritmayı devam ettirmeyi kesiyoruz çünkü algoritma toplam 19 adımda bize toplam sonucu veriyor. Algoritmayı, alıştırma olarak kağıt kalem ve hesap makinesi ile sürdürmenizi tavsiye ederiz, biz MATLAB kodu ile çözdük. Sonuçta kurallar arasında çevrimdışı bir program ile çözmek yasak değil. Merak etmeyin, hile yapmadık algoritmayı koda döktük sadece. MATLAB bilenlerin kodu incelemesini tavsiye ederiz.
MATLAB Kodu ile Çözümü
f= @(x) x^2-x+log(x);
b=exp(1);
a=exp(-1);
k=10^(-5);
c=(a+b)/2;
i=1;
d=linspace(exp(-1),exp(1),100);
e=d.^2-d+log(d);
while abs(f(c))> k
c=(a+b)/2;
if f(a)*f(c)<0
b=c;
else
a=c;
end
i=i+1;
v(i)=c
end
plot(d,e,v,0,'*')
i
c
Kodu direkt derlerseniz, karşınıza bir grafik de çıkacaktır. Bu grafikte, fonksiyonun grafiği verilmiştir ve her adımda bulunan orta nokta da işaretlenmiştir. Sayma amacı ile koyduğumuz i değişkeninin değeri kodun sonunda 19 değerini verecektir. Yani 19 adımda problem çözülmüştür. (Evet elle yapması birazcık zor olabilir; ama sonuçta lise seviyesi matematik ile çözmek var işin ucunda.) Sonucun ise 1 olduğu hesaplanmıştır. Aslında görmesi zor bir sonuç da değildir 12−1+ln1=01^2-1+\ln 1=0 eşitliği sağlanır. Ayrıca bahsedilen grafik, aşağıdadır.
Her bir yıldız bir adımda bulunan orta noktaya tekabül etmektedir. Görülüyor ki 1 civarına doğru noktalar gittikçe yığılmıştır. Zaten beklenilen bir şeydir, çünkü kök 1'dir. Bu sonucu profesöre gösterdiğinizde çok mutlu olacağından eminiz.
İçeriklerimizin bilimsel gerçekleri doğru bir şekilde yansıtması için en üst düzey çabayı gösteriyoruz. Gözünüze doğru gelmeyen bir şey varsa, mümkünse güvenilir kaynaklarınızla birlikte bize ulaşın!
Bu içeriğimizle ilgili bir sorunuz mu var? Buraya tıklayarak sorabilirsiniz.
Soru & Cevap Platformuna Git- 13
- 3
- 1
- 1
- 1
- 1
- 0
- 0
- 0
- 0
- 0
- 0
Evrim Ağacı'na her ay sadece 1 kahve ısmarlayarak destek olmak ister misiniz?
Şu iki siteden birini kullanarak şimdi destek olabilirsiniz:
kreosus.com/evrimagaci | patreon.com/evrimagaci
Çıktı Bilgisi: Bu sayfa, Evrim Ağacı yazdırma aracı kullanılarak 30/12/2024 20:02:45 tarihinde oluşturulmuştur. Evrim Ağacı'ndaki içeriklerin tamamı, birden fazla editör tarafından, durmaksızın elden geçirilmekte, güncellenmekte ve geliştirilmektedir. Dolayısıyla bu çıktının alındığı tarihten sonra yapılan güncellemeleri görmek ve bu içeriğin en güncel halini okumak için lütfen şu adrese gidiniz: https://evrimagaci.org/s/9683
İçerik Kullanım İzinleri: Evrim Ağacı'ndaki yazılı içerikler orijinallerine hiçbir şekilde dokunulmadığı müddetçe izin alınmaksızın paylaşılabilir, kopyalanabilir, yapıştırılabilir, çoğaltılabilir, basılabilir, dağıtılabilir, yayılabilir, alıntılanabilir. Ancak bu içeriklerin hiçbiri izin alınmaksızın değiştirilemez ve değiştirilmiş halleri Evrim Ağacı'na aitmiş gibi sunulamaz. Benzer şekilde, içeriklerin hiçbiri, söz konusu içeriğin açıkça belirtilmiş yazarlarından ve Evrim Ağacı'ndan başkasına aitmiş gibi sunulamaz. Bu sayfa izin alınmaksızın düzenlenemez, Evrim Ağacı logosu, yazar/editör bilgileri ve içeriğin diğer kısımları izin alınmaksızın değiştirilemez veya kaldırılamaz.