请看我对类似问题的回答,其中我使用trapz进行积分:https://dev59.com/G03Sa4cB1Zd3GeqPtDBZ#2641824 - Jonas
我会把这个作为注释添加,因为它太短了,不足以作为一个合适的回答。如果不使用MATLAB内置函数进行集成,就需要考虑使用数值方法。梯形法是最简单的方法之一;你只需找到相邻点之间由一条线连接的图形下方的面积(假设x轴间隔为1,因为问题中没有提到间隔)。在做出这种假设的情况下,“fx”向量的一个简单而朴素的方案将是(fx(2:end)+fx(1:end-1))/2。 - JS Ng
trapz和quad所使用的数值方案在文档中有所描述,您可以在MATLAB的帮助文件或在线上查找。如果您希望获得更完整的简单算法描述,请告诉我,我会添加更详细的回复。 - JS Ng
3个回答
8
8
如果您知道矢量的水平间距,您可以使用 trapz 来进行积分,而不需要函数。例如,要在 0 到 pi 的范围内积分 y=sin(x),使用 358 个部分: