Помогите разобраться с кодом метода парабол (Симпсона) - C#
Формулировка задачи:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Simpson_cs
{
class Program
{
static double Y(double p) //
{
return p * Math.Sin(p / 2);//Вывод значение формулы
}
static void Main(string[] args)//Главная функция
{
double x, a, b, h, s;// Определение переменных
int n;
a = 0;
b = 2 * Math.PI;// число п
Console.Write("Введите количество шагов разбиения n=");
n = int.Parse(Console.ReadLine());
h = (b - a) / n;//Метод симпсона
s = 0; x = a + h;
while (x < b)// Цикл
{
s = s + 4 * Y(x);
x = x + h;
s = s + 2 * Y(x);
x = x + h;
}
s = h / 3 * (s + Y(a) - Y(b));//конец вычисления
Console.WriteLine("Интеграл = {0}", s);//вывод
Console.ReadKey();
}
}
}Решение задачи: «Помогите разобраться с кодом метода парабол (Симпсона)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Simpson_cs
{
class Program
{
static double Y(double p) //
{
return p * Math.Sin(p / 2);//Вывод значение формулы
}
static void Main(string[] args)//Главная функция
{
double x, a, b, h, s;// Определение переменных
int n;
a = 0;
b = 2*Math.PI;// считать будет от 0 до 2пи ???
Console.Write("Введите количество шагов разбиения n=");
n = int.Parse(Console.ReadLine());
h = (b - a) / (2*n);//Метод симпсона здесь просто надо что бы n было четно поэтому домножим на 2
s = 0; x = a + h;
while (x < b)// Цикл
{
s = s + 4 * Y(x);
x = x + h;
s = s + 2 * Y(x);
x = x + h;
}
s = h/3 *(s + Y(a) + Y(b));//конец вычисления ошибка была здесь надо вроде всеже +f(b)
Console.WriteLine("Интеграл = {0}", s);//вывод
Console.ReadKey();
}
}
}