Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Левая формула прямоугольников


Автор: WolfON 10.5.2007, 20:07
Есть определенный интеграл какой-нибудь функции, допустим:
интеграл( x ) dx

Надо найти его численное значение при помощи "Метода двойного пересчета при помощи левой формулы прямоугольников."

Интересует как описание метода, так и примеры кода =/

Автор: WolfON 13.5.2007, 13:28
Жаль, что никто не знает =/

Из школьной программы вспомнил, что график функции разбивается на кучу маленьких прямоугольников, высота которых соответственно - значение функции, а ширина - шаг, с которым идет расчет. Сумма площадей этих прямоугольников и будет значением определенного интеграла с определенной погрешностью.

Не уверен, что все именно так - поищу описание алгоритма поподробнее.

Автор: Lomir 13.5.2007, 14:05
На скока я знаю, интегралы можно довольно точно и быстро считать методом Симсона
(два прямоугольника по центру dx минус одна трапеция):
Код
double integration(const double& a, const double& b, double f(const double& x), const int& n)
{
    double ret = 0.0, step = (b - a) / n;
    for (int i = 0; i < n; ++i)    
        ret += step * (f(a + i * step) + 4 * f(a - step / 2 + (i + 1) * step) + f(a + (i + 1) * step)) / 6;    
    return ret;
}

Но вот про "Метода двойного пересчета при помощи левой формулы прямоугольников" неслышал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)