【问题标题】:Matlab: definite integral of numerical vectorsMatlab:数值向量的定积分
【发布时间】:2014-09-06 23:15:56
【问题描述】:

我正在寻找解决两个向量的定积分,我试着解释一下。

我知道:数字的 z 向量和数字的 G(z) 向量。

积分的极限是zmin和zmax

我应该计算: [G(z) * z^(7/6)] dz 的 zmin,zmax 之间的积分

我可以用下面的代码解决吗?

For i = zmin:zmax
myresult = G(z(i))*z(i)^(7/6)
end

【问题讨论】:

  • 您展示的代码是 Matlab 语法还是伪代码?
  • 积分是伪代码

标签: matlab vector integration


【解决方案1】:

(之前写过)

您可以使用numerical integral

定义G(z)为函数句柄,待积分函数为 另一个。您可以在my other answer 中找到示例。


所以你的目标是计算[G(z) * z^(7/6)] * dz 的总和,其中G(z)z 是预先计算的数值向量,dz 是一个小的增量值。

dz = (zmax - zmin) / length(G(z));
S = G * z' * dz;

S 应该是结果。让我解释。

  • 首先,我之前搞砸了G(z)(为此道歉)。您已经(部分)评估了要集成的功能,即G(z)z
  • G(z)z 是数字数组。数组按整数索引,从 1 开始。所以 G(z(i)) 可能不是有效的表达式,因为不能保证 z(i) 是整数。上面的代码只有在您以这种方式定义G(z) - G(i) = some_function (z(i)); 时才能正常工作。因此,两个数组中相同索引的每个元素都具有有意义的关系。
  • 有几种方法可以计算两个数组(向量)的乘积,生成单值和。 for 循环有效,但效率低下。 G * z' 是计算 vector dot product 的方法。

【讨论】:

  • 感谢 Yvon,但我不明白如何定义 G(z)。我尝试了以下代码: fun = @(z) g(z).*z.^(7/6); q = 积分(乐趣,z(1),z(end-1));但我收到“未定义函数 'g' 用于类型 'double' 的输入参数”
  • 需要注意的两件事 - 你对 G(z) 有明确的定义吗?在这里发帖,也许我可以帮助您构建一个函数句柄。另外,integral 中不需要 z(1) 和 z(end-1),它们只是两个数字,不是一个复杂的函数(或者它们是吗?)
  • G(z) 是双倍于 Z 的向量,它们的长度相同
  • 对不起,我没有意识到这一点。这会导致不同的答案。
  • @Mixo 是否可以显示整个问题?看来您将z 定义为问题中的整数,但通常整数不会只拾取整数。
猜你喜欢
  • 2016-01-09
  • 2018-05-09
  • 2011-02-21
  • 2023-03-08
  • 1970-01-01
  • 2021-07-20
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多