Simpson 1/3 Yöntemi

Programda kullanıcıdan

  • İntegral alt sınır değeri
  • İntegral üst sınır değeri
  • Aralık sayısı

Yöntem farklı fonksiyonlar için uygulanmak istenirse, FonksiyonHesap ve IntegralHesap (hata kontrolü için) metodunun geri dönüş değeri istenilen şekilde değiştirilmelidir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Simpson1e3Yontemi
{
    class Program
    {
        static double altSinir = 0, ustSinir = 0, aralikSayisi = 0;
        static double aralikDegeri = 0, sonuc = 0, analitik = 0;

        static void Main(string[] args)
        {
            Console.Write("İntegral alt sınır değerini giriniz: ");
            altSinir = Convert.ToDouble(Console.ReadLine());
            Console.Write("İntegral üst sınır değerini giriniz: ");
            ustSinir = Convert.ToDouble(Console.ReadLine());
            Console.Write("Aralık sayısını giriniz: ");
            aralikSayisi = Convert.ToDouble(Console.ReadLine());

            Simpson();
            Console.ReadLine();
        }

        static void Simpson()
        {
            aralikDegeri = (ustSinir - altSinir) / aralikSayisi;
            sonuc = FonksiyonHesap(altSinir) + FonksiyonHesap(ustSinir);

            for (int i = 1; i < aralikSayisi; i++)
            {
                if (i % 2 == 0)
                    sonuc += 2 * FonksiyonHesap(i * aralikDegeri);
                else
                    sonuc += 4 * FonksiyonHesap(i * aralikDegeri);
            }

            sonuc *=  aralikDegeri / 3;

            Console.WriteLine("\n\nİntegral sonucu: " + sonuc);

            analitik = IntegralHesap(ustSinir) - IntegralHesap(altSinir);
            Console.WriteLine("\n\nAnalitik sonuç: " + analitik);
            Console.WriteLine("Mutlak hata: " + Math.Abs(analitik - sonuc ));
            Console.WriteLine("Bağıl Hata : " + (Math.Abs((analitik - sonuc) / analitik) * 100));


        }

        static double FonksiyonHesap(double x)
        {
            return 10 * Math.Pow(x, 4) - 6 * Math.Pow(x, 3) + 10;
        }

        static double IntegralHesap(double x)
        {
            return (10 * Math.Pow(x, 5) / 5 )- (6 * Math.Pow(x, 4) / 4) +( 10 * x);
        }
    }
}

“Simpson 1/3 Yöntemi” üzerine 2 yorum

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.