首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB :辛普森1/3法则

MATLAB :辛普森1/3法则
EN

Stack Overflow用户
提问于 2018-05-23 12:39:33
回答 1查看 3.2K关注 0票数 0

我已经为辛普森法则创建了一个代码,但我想我把函数搞错了。我没有其他来源可以参考(或者它们太难理解了)。下面是我的代码:

代码语言:javascript
复制
function s = simpson(f_str, a, b, h)

f = inline(f_str);

n = (b-a)/h; 


x = a + [1:n-1]*h;
xi = a + [1:n]*h;


s = h/3 * (f(a) + f(b) + 2*sum(f(x)) + 4*sum(f(xi)));

end

有人能帮我找出错误的部分在哪里吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-23 13:41:42

假设函数中的h是步长:

代码语言:javascript
复制
function s = simpson(f_str, a, b, h)
    % The sample vector will be
    xi = a:h:b;

    f = inline(f_str);

    % the function at the endpoints
    fa = f(xi(1));
    fb = f(xi(end));

    % the even terms.. i.e. f(x2), f(x4), ...
    feven = f(xi(3:2:end-2));

    % similarly the odd terms.. i.e. f(x1), f(x3), ...
    fodd = f(xi(2:2:end));

    % Bringing everything together
    s = h / 3 * (fa + 2 * sum(feven) + 4 * sum(fodd) + fb);
end

来源:

https://en.wikipedia.org/wiki/Simpson%27s_rule

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50479908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档