【问题标题】:Integral approximation with sums求和的积分近似
【发布时间】:2017-09-29 15:41:20
【问题描述】:

我想近似函数 x*sin(x) 从 0 到 1 的积分:

  1. 左矩形尺
  2. 直角尺
  3. 中点规则
  4. 梯形规则

对于第一个,我使用以下代码和平,它运行良好

n=1000; a=0; b=1; f=@(x)x.*sin(x);
x=linspace(a,b,n+1);
h=(b-a)/n;
q=sum(h*f(x(1:n)))

但我不知道如何继续。对于第一个,他们使用公式

对于右矩形规则,他们使用

x(1:n) 是否暗示 f(x_{i-1})?我尤其不知道应该如何使用公式处理第三点的 qsum

对于第 4 个问题,使用的公式是

可能还有其他方法可以做到这一点,但我想应用我为第一个问题编写的代码,并将其扩展到其他问题。

【问题讨论】:

  • 不要在问题中发布答案,而是发布答案。这样一来,我们就可以让 Stack Overflow 保持良好的结构和他们想要的结构。
  • 对此深表歉意,我将在以后的帖子中遵守您的建议。谢谢你的信息!
  • 最好在 this 帖子中遵守它:) 当前接受的答案实际上并没有回答问题。答案应该有自己的优点,未来的访问者不必在 cmets 中搜索(没有版本控制,可能会丢失)
  • @Wolfie 想说的是,如果您发布问题中的代码作为对此问题的答案,那就太好了。自我回答是完全可以接受的,如果您设法自己找到解决方案,甚至会受到鼓励。因此,为了帖子的完整性,以及为了未来读者的利益,如果您在此处发布代码作为答案,我们将不胜感激。

标签: matlab


【解决方案1】:

第二个问题,右矩形规则可以使用相同的 linspace 计算,但从 2 到 n+1。对于中点公式,必须计算当前 linspace 之间的值,因为公式非常优雅地显示了这一点。对于梯形,必须将n个半矩形的面积相加(不知道正确的术语),这只是矩形的面积,其高度是端点的平均值。

【讨论】:

  • 如何计算当前行空间之间的值?
  • 1) 右边的矩形规则与左边的规则大致相同,但矩形的高度是用最右边的点计算的,而不是最左边的点。您将空间划分为 n+1 个点,包括端点以具有 n 个矩形。现在只取右边缘,从 2 开始,到 n+1 结束。 2) 你有一个函数 f(x)。就是这样 :D 它就在公式中。您可以使用 (x(1:n)+x(2:n+1))/2 计算向量的相邻点的平均值。
  • 我理解 1) 但是 (x(1:n)+x(2:n+1))/2 不是用于第 4 种方法而不是 3d 吗?它不是公式中的 (f(x_i)-f(x_i+1))/2 而是 f(x_i+x_i+1),所以它是平均值的函数。 (更新了问题以包含最后一个公式)
  • 我同时回答了这两个问题,我的错。然而,第四个没有使用平均值,第四个是 function 值的平均值,并以这种方式计算矩形。中点规则是计算 x 的平均值,然后才是函数值。
  • 没错,我已经能够正确编码任务 1、2 和 4,但我在表达 q=sum 时仍然遇到问题????任务 3。如何表示 x 值的平均值?
猜你喜欢
  • 2015-04-15
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
相关资源
最近更新 更多