• 计算几何_求面积_辛普森积分公式


    附上一道水(模板)题

    https://vjudge.net/problem/HDU-1724

    和一道我认为卡精度要命的题(当然 是用这个方法被卡得要命的...)   

    https://vjudge.net/problem/HDU-5858

    /* %.17f的答案

    附上 HDU-5858的答案   : 0.29276251905757444

    /*
    ----3-----
    0.29139233981798940
    0.29256905497842256
    0.29269850120464480
    0.29275620952824744
    0.29276135677808401
    0.29276230281685778
    0.29276248841316299
    0.29276251530238584
    0.29276251829065014
    0.29276251894032201
    0.29276251904563999
    0.29276251905757444
    0.29276251906022166
    0.29276251906063600
    0.29276251906068307
    */

    */

    const double eps = 1e-18; // 精度 
    
    double fx(double x) {
        // ToDo: 这儿填充自己的公式.   关于x轴区间[a, b]的公式
        // 注意: 如果求的是多个区域, 但是端点一致.那么可以一起放到fx中计算. 
    //    eg: 曲线 y=2*x 与x轴的面积. (是积分求面积的 所以有正负.) 
    //  return 2 * x; 
    }
    
    // 辛森普公式 
    // 原理采用一条抛物线 不断二分逼近原曲线,即真实值.  
    // 曲线是: Ax^2 + Bx + C 
    // 这是计算过程.  AutoFix 是自适应求解的过程 时间复杂度和求解的eps精度有很大的关系. 
    // 也就是说, 如果精度要求不是很高的水题可以用 辛森普公式 sososo 嗖嗖嗖嗖 
    double XPS_GX(double left, double right) { return (fx(left) + 4.0 * fx((left + right) / 2.0) + fx(right) ) / 6.0 * (right - left); }
    
    
    // 两种写法 
    // @left , right [left, right]
    // @val   ----> result
    // @jeps  ----> 迭代后更新的精度. 原理我不知道. 
    double AutoFix(double left, double right, double val, double jeps) {
        double mid = (left + right) / 2.0;
        double lval = XPS_GX(left, mid), rval = XPS_GX(mid, right);
        if (fabs(val - lval - rval) <= 15.0 * jeps) return lval + rval + (lval + rval - val) / 15.0; // 再减去 DeTa 减少误差
        return AutoFix(left, mid, lval, jeps / 2.0) + AutoFix(mid, right, rval, jeps / 2.0); // 迭代  jeps / 2.0 貌似会提高精度 原理不知道. 
    }
    /* 
    double AutoFix(double left, double right, double val) {
        double mid = (left + right) / 2.0;
        double lval = XPS_GX(left, mid), rval = XPS_GX(mid, right);
        if (fabs(val - lval - rval) <= eps) return val;
        return AutoFix(left, mid, lval) + AutoFix(mid, right, rval);
    }
    */ 
  • 相关阅读:
    Maven 建立的项目resource对应的实际位置
    MySQL常用查询语句汇总(不定时更新.......)
    Eclipse中使用Maven新建 Servlet 2.5的 SpringMVC项目
    Java异常(输出[D@139a55问题)
    JSP的原理、JSP的执行过程
    使用CMD命令行来对MySQL数据库执行迁移、备份、恢复
    Tomcat项目部署方式
    Java网络编程小结 URLConnection协议处理器
    java 多线程下载文件 以及URLConnection和HttpURLConnection的区别
    java中的==、equals()、hashCode()
  • 原文地址:https://www.cnblogs.com/cgjh/p/9419103.html
Copyright © 2020-2023  润新知