【发布时间】:2012-04-18 14:56:32
【问题描述】:
我有一个 a*x + b 形式的函数,我想将该函数从 0 集成到 t,其中 t 将重复设置为一个非常大(长度为 100000)向量的值。我在 for 循环中使用了 quad 函数,但计算向量中每个值的积分需要太多时间。在 Matlab 中是否有任何有效的方法来实现这一点?
【问题讨论】:
-
这不是归结为计算向量的所有元素 t 的 1/2 * att + b*t 吗?
我有一个 a*x + b 形式的函数,我想将该函数从 0 集成到 t,其中 t 将重复设置为一个非常大(长度为 100000)向量的值。我在 for 循环中使用了 quad 函数,但计算向量中每个值的积分需要太多时间。在 Matlab 中是否有任何有效的方法来实现这一点?
【问题讨论】:
其实你不需要自己实现, 您可以使用“matlab 数值积分函数”进行搜索...
我首先想到的功能是;
Trapezoidal --> trapz(X,Y)
Cumulative Trapezoidal --> cumtrapz(X,Y)
Adaptive Lobatto Quadrature --> quadl
Adaptive Gauss-Kronrod Quadrature --> quadgk
Vectorized Quadrature --> quadv
【讨论】:
cumtrapz();
说真的CumTrapz
它计算积分的梯形逼近。
【讨论】: