Эффективная интегральная функция в Matlab

У меня есть функция вида a*x + b, и я хочу интегрировать эту функцию от 0 до t, где t будет неоднократно устанавливаться в значения очень большого (длиной 100000) вектора. Я использовал функцию quad в цикле for, но вычисление интеграла для каждого значения в векторе занимает слишком много времени. Есть ли эффективный способ реализовать это в Matlab?


person ipman    schedule 04.04.2012    source источник
comment
Разве это не сводится к вычислению 1/2 * att + b*t для всех элементов t вашего вектора?   -  person jmhl    schedule 05.04.2012


Ответы (2)


На самом деле вам не нужно реализовывать его самостоятельно, вы можете найти его, используя «функции численного интегрирования Matlab»...

Первые функции, которые приходят мне на ум, это;

Trapezoidal --> trapz(X,Y)

Cumulative Trapezoidal --> cumtrapz(X,Y)

Adaptive Lobatto Quadrature --> quadl

Adaptive Gauss-Kronrod Quadrature --> quadgk

Vectorized Quadrature --> quadv
person Semih Ozmen    schedule 04.04.2012

камтрапз();

серьезно

Он вычисляет трапазоидальную аппроксимацию интеграла.

person Adam Hess    schedule 04.04.2012