Basit İterasyon Yöntemi

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);
        }
        
    }
}

 

Become a patron at Patreon!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: