Programda kullanıcıdan
- İntegral alt sınır değerini
- İntegral üst sınır değerini
- Aralık sayısını
Yöntem farklı fonksiyonlar için uygulamak istenirse FonksiyonHesap ve IntegralHesap(Hata kontrolü için) geri dönüş değerleri değiştirilmelidir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//www.delimuhendis.com
namespace TrapezYontemi
{
class Program
{
static double altSinir = 0, ustSinir = 0;
static double aralikSayisi = 0, aralikDegeri = 0;
static double sonuc = 0, anlikDeger = 0, analitikSonuc = 0;
static void Main(string[] args)
{
Console.Write ("İntegral alt sınırını giriniz: ");
altSinir = Convert.ToDouble(Console.ReadLine());
Console.Write ("İntegral üst sınırını giriniz: ");
ustSinir = Convert.ToDouble(Console.ReadLine());
Console.Write ("Aralık sayisini giriniz: ");
aralikSayisi = Convert.ToDouble(Console.ReadLine());
Trapez();
Console.Read();
}
static void Trapez()
{
aralikDegeri = (ustSinir - altSinir) / aralikSayisi;
sonuc = FonksiyonHesap(ustSinir) + FonksiyonHesap(altSinir);
anlikDeger = aralikDegeri;
for (int i = 1; i < aralikSayisi; i++)
{
sonuc += 2 * FonksiyonHesap(anlikDeger);
anlikDeger += aralikDegeri;
}
sonuc = sonuc * (aralikDegeri / 2);
Console.WriteLine("İntegral sonucu: " + sonuc);
analitikSonuc = IntegralHesap(ustSinir) - IntegralHesap(altSinir);
Console.WriteLine("Mutlak hata: " + Math.Abs(analitikSonuc - sonuc));
Console.WriteLine("Bağıl hata: " + (Math.Abs((analitikSonuc-sonuc)/analitikSonuc)*100));
}
static double FonksiyonHesap(double x)
{
return (10 * x * x) - (6 * x);
}
static double IntegralHesap(double x)
{
return 10 * Math.Pow (x, 3) / 3 - 6 * Math.Pow(x, 2) / 2;
}
}
}