我想对一个向量进行数值积分,该向量表示一个函数 f(x) 在 Matlab 中由边界 x0 和 x1 指定的 x 范围内。我想检查积分的输出是否正确并且收敛。
有 quad 和 quadl 函数可以很好地识别所需的误差容限,但它们需要输入参数是函数,而不是函数的结果向量。还有一个 trapz 函数,我们可以在其中输入两个向量 x 和 f(x),然后它根据向量 x 使用的间距计算 f(x) 关于 x 的积分。但是,没有任何方法可以使用 trapz 来调整 quad 和 quadl 中的容差并确保答案收敛。
我不能使用quad和quadl函数的主要问题是f(x)是以下等式:f(x)= sum(exp(-1/2 *(xy))),总和超过y,其中 y 是长度为 n 的向量,x 是每次都给函数 f(x) 的元素。因此,向量 y 中的所有元素都从元素 x 中减去,然后计算对 y 的总和,得到 f(x) 值。这是针对 x 的 m 个值完成的,其中 m 不等于 n。
当我按照 Matlab 手册中的说明使用 quadl 时,其中 f(x) 在单独的函数 .m 文件中定义,然后在主调用文件中定义,我使用 Q = quadl(@f,x0,x1,tolerance,X,是);这里 X 是长度为 m 的向量,Y 是长度为 L 的向量。Matlab 给出错误:“??? Error using ==> minus Matrix dimensions must agree.” 在我在 .m 函数文件中定义函数 f(x) 的那一行。f(x) = sum(exp(-1/2 *(xy)))
我假设问题是Matlab将x和y视为向量,当它们彼此相减时应该具有相同的长度,而需要的是每次从向量X中的单个元素中减去向量Y。
您能否推荐一种解决此问题的方法,并通过控制公差的方法成功地将 f(x) 与 x 进行数值积分?