zoukankan      html  css  js  c++  java
  • 辛普森公式

    这里用一个抛物线求弧长的例子给出Simpson公式的代码:

     1 #include <cstdio>
     2 #include <cmath>
     3 const double eps = 1e-5;
     4 // 被积函数F
     5 double a;
     6 double F(double x){
     7     return sqrt(1 + 4 * a * a * x * x);
     8 }
     9 // 三点Simpson法。这里要求F是一个全局函数,F也就是被积函数
    10 double simpson(double a,double b){
    11     double c = a + (b - a) / 2;
    12     return (F(a) + 4 * F(c) + F(b)) * (b - a) / 6;
    13 }
    14 // 自适应Simpson公式(递归过程)。已知整个区间[a,b]上的三点Simpson值A
    15 double asr(double a,double b,double eps,double A){
    16     double c = a + (b - a) / 2;
    17     double L = simpson(a,c),R = simpson(c,b);
    18     if(fabs(L + R - A) <= 15 * eps) return L + R + (L + R - A) / 15.0;
    19     return asr(a,c,eps / 2,L) + asr(c,b,eps / 2,R);
    20 }
    21 // 自适应Simpson公式(主过程)
    22 double asr(double a,double b,double eps){
    23     return asr(a,b,eps,simpson(a,b));
    24 }
    25 // 用自适应Simpson公式计算宽为w
    26 double parabola_arc_length(double w,double h){
    27     a = 4.0 * h / (w * w); // 修改全局变量a,从而影响F的行为
    28     return asr(0,w / 2,eps) * 2;
    29 }
  • 相关阅读:
    Nginx反向代理与负载均衡应用实践(一)
    Nginx基础详细讲解
    RabbitMQ
    GlusterFS
    AWK的使用
    Grep的过滤使用
    Sed的查,删,增,改
    jumpserver
    FTP
    hdu 3689 Infinite monkey theorem
  • 原文地址:https://www.cnblogs.com/cyb123456/p/5833833.html
Copyright © 2011-2022 走看看