Numerically Integrating an Array
显示 更早的评论
I have often integrated a function by using quad and dblquad. When using quad and dblquad, I can increase the tolerance parameter to the function to make sure that the answer is converging.
Instead of integrating a function, I need to now integrate an array. I know trapz can be used to do this. A simple example of this would be: t = linspace(0,10) y = cos(t) trapz(t,y)
However is there any way to adjust the tolerance or some other parameters, so that I can make sure that the answer is converging? If there is not any way to do this using the "trapz" function, is there another function you would recommend instead for numerically integrating the array?
Thank you, Kevin
P.S. The reason I need to integrate an array instead of a function is that I want to calculate Fourier coefficients for a curve I already have (which takes a lot of time for Matlab to generate). I don't want to have to re-generated the curve for each Fourier coefficient because that would be extremely computationally inefficient.
采纳的回答
更多回答(1 个)
Khaled Khairy
2011-3-14
0 个投票
My suggestion is to use Gaussian quadrature! (see gaussquad function in the matlab file exchange) The only restriction is that your function will have to be evaluated at the Gaussian base points. The integration is then just a weighted sum (no need for quad or dblquad). I hope this helps.
2 个评论
John D'Errico
2011-3-14
You can't use Gaussian quadrature if the points are already given!
Khaled Khairy
2011-3-14
True, however the way I understood the Post-Script of the original message, he can in fact generate the curve from scratch, it is just expensive to do so. Therefore I would generate it once using Gaussian quadrature basepoints and then do the weighted sum.
类别
在 帮助中心 和 File Exchange 中查找有关 Numerical Integration and Differentiation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!