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); } } }
1/3 için teşekkür ederim, acil 3/8 yöntemini de ekler misiniz? teşkkürrler
Merhabalar
http://www.delimuhendis.com/simpson-38-yontemi/ adresinden Simpson 3/8 yöntemine ulaşabilirsiniz.
İyi Günler