“ArrayValued”在Matlab数值积分中的应用

jbose2ul  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(1229)

为什么在使用integral在MatLab中执行数值积分时,需要将'ArrayValued'设置为true

f = @(x) 5;
integral(f,0,2,'ArrayValued',true)

..。而在这种情况下,不需要该选项?:

f = @(x) x;
integral(f,0,2)
wgx48brx

wgx48brx1#

来自描述被积参数的integral的文档:
对于标量值问题,函数y = fun(x)必须接受向量参数x,并返回向量结果y。这通常意味着fun必须使用数组运算符而不是矩阵运算符。例如,使用.*(times)而不是*(mtimes)。如果将'ArrayValued'选项设置为true,那么Fun必须接受标量并返回固定大小的数组。
因此,如果x是向量,则像f = @(x) 5这样的常量函数不会返回与x大小相同的结果。integral函数之所以需要这样做,是因为为了提高性能,它针对标量函数进行了矢量化--它实际上通过一个函数调用同时计算多个点的被积函数。
您可以使您的常量函数兼容,而不要求'ArrayValued'true,如下所示:

f = @(x) 5+0*x;
integral(f,0,2)

相关问题