2012-04-04 5 views
1

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

+3

Разве это не сводится к вычислению 1/2 * a * t * t + b * t для всех элементов t вашего вектора? – jmhl

ответ

3

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

Первого functons приходит в мой ум;

Trapezoidal --> trapz(X,Y) 

Cumulative Trapezoidal --> cumtrapz(X,Y) 

Adaptive Lobatto Quadrature --> quadl 

Adaptive Gauss-Kronrod Quadrature --> quadgk 

Vectorized Quadrature --> quadv 
0

cumtrapz();

серьезно CumTrapz

Он вычисляет trapazoidal aproximation интеграла.