Programda kullanıcıdan
- Başlangıç değeri
- Mutlak hata değeri
Program sinx-(x+1)/(x-1) denklemi için g(x)=(x+1)/(x-1), h(x) = sinx alınarak çözülmüştür. Farklı fonksiyonlar için gFonksiyonHesap ve hFonksiyonHesap metodları değiştirilerek uygulanabilir.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //www.delimuhendis.com namespace BasitIterasyonYontemi { class Program { static double baslangicDegeri = 0, yaklasimHatasi = 0; static void Main(string[] args) { Console.Write("Başlangıç değerini girin: "); baslangicDegeri = Convert.ToDouble(Console.ReadLine()); Console.Write("Yaklaşım hatasını girin: "); yaklasimHatasi = Convert.ToDouble(Console.ReadLine()); IterasyonYontemi(); Console.WriteLine("Çıkmak için bir tuşa basınız."); Console.ReadLine(); } static void IterasyonYontemi() { double oncekiHata = -1, donguKosulu = yaklasimHatasi + 1; int iraksama = 0, adimSayisi = 1; while (donguKosulu > yaklasimHatasi) { donguKosulu = Math.Abs(gFonksiyonHesap(baslangicDegeri) - hFonksiyonHesap(baslangicDegeri)); Console.WriteLine("\n\n\nAdim " + adimSayisi + "\ng(x): " + gFonksiyonHesap(baslangicDegeri) + "\nh(x): " + hFonksiyonHesap(baslangicDegeri) + "\nHata: " + donguKosulu); baslangicDegeri = hFonksiyonHesap(baslangicDegeri); adimSayisi++; if (oncekiHata < donguKosulu) iraksama++; Console.WriteLine(iraksama); if (iraksama > 2) { Console.WriteLine("Sonuç sürekli ıraksadığından sonlandırılmıştır."); break; } oncekiHata = donguKosulu; } if (iraksama < 3) { donguKosulu = Math.Abs(gFonksiyonHesap(baslangicDegeri) - hFonksiyonHesap(baslangicDegeri)); Console.WriteLine("\n\n\nAdim " + adimSayisi + "\ng(x): " + gFonksiyonHesap(baslangicDegeri) + "\nh(x): " + hFonksiyonHesap(baslangicDegeri) + "\nHata: " + donguKosulu); } } static double gFonksiyonHesap(double deger) { return (deger+1)/(deger-1); } static double hFonksiyonHesap(double deger) { return Math.Sin(deger); } } }