zoukankan      html  css  js  c++  java
  • [笔记] 辛普森积分

    辛普森积分

    建议对微积分有一些了解QAQ

    求定积分近似值:

    • 矩形法
    • 梯形法
    • 抛物线法,又称辛普森法

    抛物线法原理是将曲线 (y=f(x)) 上的两个弧 (widehat{A_{i-1}A_i})(widehat{A_iA_{i+1}}) 用 过(A_{i-1},A_i,A_{i+1}) 的抛物线 (y=ax^2+bx+c) 代替。

    辛普森公式 (int_a^bf(x)dxapproxfrac{(b-a)(f(a)+f(b)+4f(frac{a+b}{2}))}{6})

    (int_a^bf(x)dx)
    (approxint_a^bAx^2+Bx+C)
    (=frac{A}{3}(b^3-a^3)+frac{B}{2}(b^2-a^2)+C(a-b))
    (=frac{(b-a)}{6}(2A(b^2+ab+a^2)+3B(b+a)+6C))
    (=frac{(b-a)}{6}(Aa^2+Ba+C+Ab^2+Bb+C+4A(frac{a+b}{2})^2+4B(frac{a+b}{2})+4C))
    (=frac{(b-a)}{6}(f(a)+f(b)+4f(frac{a+b}{2})))

    然后就得到了 辛普森公式 (int_a^bf(x)dxapproxfrac{(b-a)(f(a)+f(b)+4f(frac{a+b}{2}))}{6})

    但是如果我们直接套式子,or 控制区间长度进行分治,精度会有问题。所以有了 (downarrow)

    自适应辛普森法

    想一想,发现如果我们单纯的向下分治,在曲线上十分平坦的部分就会浪费时间,但是在曲线变化陡峭的部分又无法保证精度。

    自适应辛普森法的思路:如果在当前区间计算积分时,继续分治与不继续分治的计算结果差别不大,那就没必要继续了;否则就继续分治。

    inline double f(double x) {}
    inline double simpson(double l,double r) 
    	{return (f(l)+4*f((l+r)/2)+f(r))*(r-l)/6;}
    inline double integral(double l,double r,double ans) {
    	register double md=(l+r)/2;
    	register double LL=simpson(l,md),RR=simpson(md,r);
    	if(fabs(LL+RR-ans)<=15*eps) return LL+RR-(LL+RR-ans)/15;
    	return integral(l,md,LL)+integral(md,r,RR);
    }
    
    integral(l,r,simpson(l,r));
    

    模板(雾我只会模板

    P4525 【模板】自适应辛普森法1

    P4526 【模板】自适应辛普森法2


    2019.12.23

  • 相关阅读:
    嘀嘀咕 (1)
    碎碎念(4)
    渲染层错误] TypeError: Cannot read property 'replace' of undefined at rewrit
    怎么跳出foreach
    vs code的Go Live不出现
    ES6
    h5分享到微信,分享到朋友圈
    网页之间传值与获取值
    原生js添加节点的高级简便写法
    原型链
  • 原文地址:https://www.cnblogs.com/Jackpei/p/12088134.html
Copyright © 2011-2022 走看看