【问题标题】:compute number of step for composite simpson's rule in matlab在matlab中计算复合辛普森规则的步数
【发布时间】:2020-11-22 19:04:10
【问题描述】:

我想在 matlab 中计算我的复合辛普森规则的步长。这是我的代码

% Estimate the number of steps n required for the three point composite Simpson’s rule,
% function's integral from 0 to 1 and the function is ∫ 4/(1+x.^2)=pi within an error bound of 10−6
h=0.01;
n=1000;
x=pi;
a=0;
b=1;
x=zeros(1,n);
f=@(x)4./(1+x.^2);
nn=(b-a)/h;
xexact=integral(f,a,b);
p=0;
q=0;

for i=1:n
x(i)=a+(i-1)*h;
end

for i=1:n-1
    p=p+2*(f(x(i)))+4*(f(x(i)+h/2));
end

nn=((b-a)*(f(a)+f(a+h/2)+p+f(b)))./(6*x)

当我运行代码时,我得到一个 1 * 1000 个元素的向量,但我想得到步数 nn=(b-a)/h .. 我做错了什么?

谢谢

【问题讨论】:

    标签: matlab


    【解决方案1】:

    伊戈尔的回答似乎不正确。 在您的代码中x1x1000 doublenn 中的所有其他值都是 1x1 双精度值。 当你使用除法时,你得到:

    1x1 double ./ 1x1000 double
    

    所以它返回1x1000 doubles

    附:首先,检查您的循环 - 它计算了 999 次,但 p 不是数组。它仅包含此循环中的最后一个值! 其次,您无法通过这种方式使用x 数组获取单个值。

    【讨论】:

    • @AllieAls 您必须向我们提供更多信息:我不明白,您想要实现什么。如果您只想获得nn=(b-a)/h,请在使用最后一个公式覆盖之前显示nn。如果您需要其他内容,请在您的问题中说明,我们会尽力帮助您! :)
    【解决方案2】:
    nn=((b-a)*(f(a)+f(a+h/2)+p+f(b)))./(6*x)
    

    在这段代码中,您调用了“x”,但“x”是 1x1000 的双精度数,因此您的 nn 是 1x1000 的双精度数。

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 2015-12-15
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2013-11-05
      相关资源
      最近更新 更多