Bu yöntemde verilen aralığın küçültülerek köke yaklaşılması esas alınmaktadır.
Programda kullanıcıdan
- Aralık için bir alt nokta
- Aralık için bir üst nokta
- Mutlak hata
değerleri istenmektedir.
Programda aralık yarılama yöntemi x2-3x-5 için uygulanmıştır. Eğer istenilirse kod içersinde yer alan FonksiyonHesap metodundaki geri dönüş değeri ayarlanarak farklı fonksiyonlar için uygulanabilir.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace AralikYarilamaYontemi { class Program { static double altNokta = 0, ustNokta = 0, mutlakHata = 0, yeniNokta = 0; static void Main(string[] args) { Console.Write("Alt nokta değerini giriniz:"); altNokta = Convert.ToDouble(Console.ReadLine()); Console.Write("Üst nokta değerini giriniz:"); ustNokta = Convert.ToDouble(Console.ReadLine()); Console.Write("Mutlak hata değerini giriniz:"); mutlakHata = Convert.ToDouble(Console.ReadLine()); BolzonaYontemi(); Console.Write("\n\n\nBulunan kök : " + yeniNokta + "\n\nÇıkmak için herhangi bir tuşa basınız"); Console.ReadLine(); } static void BolzonaYontemi() { if ((FonksiyonHesap(altNokta) * FonksiyonHesap(ustNokta)) < 0) Console.WriteLine("\n\nVerilen aralıkta bir kök vardır."); else { Console.WriteLine("\n\nVerilen aralıkta bir kök yoktur.\n Programdan çıkış yapılıyor..."); Thread.Sleep(3000); Environment.Exit(0); } int adimSayisi = 1; double donguKosulu = mutlakHata + 1; while (donguKosulu > mutlakHata) { yeniNokta = (altNokta + ustNokta) / 2; if ((FonksiyonHesap(altNokta) * FonksiyonHesap(yeniNokta)) < 0) ustNokta = yeniNokta; else altNokta = yeniNokta; donguKosulu = Math.Abs(FonksiyonHesap(altNokta) - FonksiyonHesap(ustNokta)); Console.WriteLine("\nAdım:" + adimSayisi + "\n\nYeni Nokta: " + yeniNokta + " Alt Nokta : " + altNokta + " Üst Nokta: " + ustNokta + "\nAnlık Hata " + donguKosulu + "Mutlak Hata : " + mutlakHata); adimSayisi++; } } static double FonksiyonHesap(double deger) { return (deger * deger) - (3 * deger) - 5; } } }