Как написать метод считающий интеграл методом входящих прямоугольников? - C#
Формулировка задачи:
Здравствуйте.
Не могу написать код считающий интеграл методом входящих прямоугольников.
Общий код программы у меня вот такой:
А вот метод считающий интеграл входящими прямоугольниками вот такой у меня получился,но там прогрешность 100%))))
using System;
namespace Курсовая_работа
{
class Интеграл1
{
struct Integral
{
Double a, b;
int m;
public Integral(double ina, double inb, int inm)//конструктор типа Integral
{
a = ina < inb ? ina : inb;
b = ina < inb ? inb : ina; ;// регулирует значения пределов интегрирования таким образом,что верхний предел интегрирования всегда больше нижнего
m = inm;
}
public override string ToString()//определение метода ToString
{
string s;
s = String.Format("Точное знаение= {0:f3}\nПриближенное значение={1:f3}", IntLeibniz, IntRectangle);// запись в строковую переменную точного и приближенного значений интеграла
double Delta = (IntRectangle - IntLeibniz) / IntLeibniz * 100;//вычисление погрешности метода
Delta = Math.Abs(Delta);
s += String.Format("\nПогрешность = {0:f3} %", Delta);// запись в строковую переменную погрешности
return s;
}
public double fx(double x)//возвращает значение функции
{ return 2 * x + 3 * x * x + (1) * Math.Pow(x, 3); }
public double Fx(double x)//возвращает значение первообразной
{ return ((2 * (x * x)) / 2) + ((3 / (double)3) * Math.Pow(x, 3)) + (-(x * x * x * x) / 4); }
public double h//возвращает шаг
{
get
{ return (b - a) / (m); }
}
public double IntLeibniz//возвращает точное значение интеграла
{
get
{ return Fx(b) - Fx(a); }
}
public double IntRectangle//возвращает приближенное значение интеграла методом входящих прямоугольников
{
get
{
double sum = (fx(a) + fx(b));
for (double i = 0; i < m; i ++)
sum += fx(i);
sum = ((b-a)/m);
return sum;
}
}
static void Main()
{
Integral obj = new Integral(-3, 11, 400);//задаем пределы интегрирования и число разбиений
Console.WriteLine(obj.ToString());//вывод значения возвращаемого методом ToString
}
}
}
}public double IntRectangle//возвращает приближенное значение интеграла методом входящих прямоугольников
{
get
{
double sum = (fx(a) + fx(b));
for (double i = 0; i < m; i ++)
sum += fx(i);
sum = ((b-a)/m);
return sum;
}
}Решение задачи: «Как написать метод считающий интеграл методом входящих прямоугольников?»
textual
Листинг программы
for (x = a; x < b; x = x + h)
{
Sum += x / Math.Sqrt(1 + 3 * x);
}
fun = Sum * h;