【发布时间】:2012-09-10 04:00:42
【问题描述】:
我想对一个向量进行数值积分,该向量表示函数 f(x) 在 Matlab 中由边界 x0 和 x1 指定的 x 范围内。我想检查积分的输出是否正确并且是否收敛。
quad 和 quadl 函数可以很好地识别所需的容错性,但它们需要输入参数是函数,而不是函数的结果向量。还有一个 trapz 函数,我们可以在其中输入两个向量 x 和 f(x),然后它根据向量 x 使用的间距计算 f(x) 关于 x 的积分。但是,没有任何方法可以像 quad 和 quadl 那样使用 trapz 来调整容差并确保答案收敛。
我不能使用 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,Y);这里 X 是长度为 m 的向量,Y 是长度为 L 的向量。Matlab 给出错误:“??? Error using ==> minus 矩阵尺寸必须一致。”在我在 .m 函数文件中定义函数 f(x) 的那一行。f(x) = sum(exp(-1/2 *(x-y)))
我认为问题在于 Matlab 将 x 和 y 视为向量,当它们彼此相减时,它们应该具有相同的长度,而需要的是每次从向量 X 中的单个元素中减去向量 Y .
您能否推荐一种方法来解决这个问题,并通过控制公差的方法成功地对 f(x) 与 x 进行数值积分?
【问题讨论】:
-
添加指定您正在使用的技术/软件/语言的标签(例如 [Matlab])。这将帮助其他人找到您的问题并回答。
标签: matlab vector integration numerical