private static void Main(string[] args)
Console.WriteLine("Ingresa el límite inferior (a)");
a = double.Parse(Console.ReadLine());
Console.WriteLine("Ingresa el límite superior (b)");
b = double.Parse(Console.ReadLine());
Console.WriteLine("Ingrese el valor de N, recuerde que debe ser entero positivo y par.");
n = int.Parse(Console.ReadLine());
if (n % 2 != 0 || n <= 0)
Console.WriteLine("El valor de N no es positivo o par. Ingrésalo de nuevo.");
} while (n % 2 != 0 || n <= 0);
Console.WriteLine("resultado = {0}", Simpson(a, b, n));
public static double F(double x)
return Math.Sqrt(5 + Math.Pow(x, 3));
public static double Simpson(double a, double b, int n)
Console.WriteLine("h = {0}", h);
double [] Xi = new double [n+1];
Console.WriteLine("Xi[0] = {0}", Xi[0]);
Console.WriteLine("Xi[{0}] = {1}", i, Xi[i]);
Console.WriteLine("Xi[{0}] = {1}",n, Xi[n]);
double[] Xm = new double [n];
Xm[i] = (Xi[i] + Xi[i + 1]) / 2;
Console.WriteLine("Xm[{0}] = {1}", i+1, Xm[i]);
double constante = (b - a) / (6 * n);
Console.WriteLine("(b-a)/6n = {0}", constante);
Console.WriteLine("f(Xo) = {0}", fa);
double fSumXmi = 4 * (SumatoriaXm(Xm));
Console.WriteLine("4f(Xmi) = {0}",fSumXmi);
double fSumXi = 2 * (SumatoriaXi(Xi));
Console.WriteLine("2f(Xi) = {0}", fSumXi);
Console.WriteLine("f(Xn) = {0}", fb);
double resultado = constante * (fa + fSumXmi + fSumXi + fb);
public static double SumatoriaXm(double [] Xm)
foreach (double valor in Xm)
public static double SumatoriaXi(double[] Xi)
for (int i = 1; i < Xi.Length-1; i++)