首页 > 其他分享 >实例89 辛普生数值积分

实例89 辛普生数值积分

时间:2022-09-23 10:13:09浏览次数:45  
标签:辛普生 数值积分 int double 步长 89 b1 printf

#include <stdio.h>
#include <math.h>
 
double Function(double);
double SIMP1(double,double,int);
double SIMP2(double,double,double);
 
void main()
{
    double a1,b1,eps;
    int n1;
    double Result1;
    double Result2;
    a1 = 0.0;
    b1 = 0.8;
    n1 = 4;
    eps = 5e-7;
    Result1 = SIMP1(a1,b1,n1);
    Result2 = SIMP2(a1,b1,eps);
    printf("利用定步长辛普生积分结果为:\n");
    printf("I1 = %.10f\n",Result1);
    printf("利用变步长辛普生积分结果为:\n");
    printf("I2 = %e\n",Result2);
}
 
double SIMP1(a,b,n)
double a;
double b;
int n;
{
    int i;
    double h,s;
    h=(a-b)/(2*n);
    s=0.5*(Function(a)-Function(b));
    for(i=1;i<=n;i++)
        s+=2*Function(a+(2*i-1)*h)+Function(a+2*i*h);
    return((b-a)*s/(3*n));
}
 
double SIMP2(a,b,eps)
double a;
double b;
double eps;
{
    int k,n;
    double h,t1,t2,s1,s2,p,x;
    n=1;
    h=b-a;
    t1=h*(Function(a)+Function(b))/2;
    s1 = t1;
    while(1)
    {
        p = 0;
        for(k=0;k<=n;k++)
        {
            x = a+(k+0.5)*h;
            p+=Function(x);
        }
        t2=(t1+h*p)/2;
        s2=(4*t2-t1)/3;
        if(fabs(s2-s1)>=eps)
        {
            t1=t2;
            n=n+n;
            h=h/2;
            s1=s2;
            continue;
        }
        break;
    }
    return(s2);
}
 
double Function(double x)
{
    return(cos(x));
}
trust100@ubuntu:~/test/clanguage$ ./a.out 
利用定步长辛普生积分结果为:
I1 = 0.7173564899
利用变步长辛普生积分结果为:
I2 = 7.173566e-01

 

标签:辛普生,数值积分,int,double,步长,89,b1,printf
From: https://www.cnblogs.com/mapstar/p/16721714.html

相关文章

  • CF889E Mod Mod Mod
    linkSolution又被踩爆了。。。/kk注意到对于似乎对于值域上的一段,它的贡献总是一个一次函数形式,因为一开始初始值\(-1\)的话,在没有影响后面模出\(0\)的情况下,贡献会......
  • acwing894. 拆分-Nim游戏
    acwing894.拆分-Nim游戏原题链接:https://www.acwing.com/problem/content/896/思路关于SG函数,mex操作,SG定理的一些知识取走一堆放入两堆,好像总的堆数一直在增加,但是每......
  • acwing892. 台阶-Nim游戏
    acwing892.台阶-Nim游戏原题链接:https://www.acwing.com/problem/content/894/思路奇数台阶异或和不等于0先手必胜奇数台阶异或和等于0先手必败代码#include<iost......
  • CodeForces-189A Cut Ribbon-必须装满的背包
    题意:给定n,s.t. a1*x1+a2*x2+a3*x3=n(1)max:x1+x2+x3对比完全背包,(1)式取等号而不是<=这个差别影响了我们的结果比如:n=7,a1=a2=5,a3=2如果按照完全背包的转移:则在dp[7......
  • 博弈论-acwing893.集合-Nim游戏
    补充知识有向图游戏给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿着有向边方向移动,每次可以移动一步,无法移动者判负。该游......
  • 博弈论-acwing891.Nim游戏
    博弈论acing891.Nim游戏原题链接:https://www.acwing.com/problem/content/893/公平组合游戏若一个游戏满足:1.由两名玩家交替行动2.在游戏进行的任意时刻,可以执行的合......
  • 福禄克289万用表的功能简介,db测试方法
    1.  福禄克289的功能比普通的万用表多了哪些功能。(1)电导测量(2)AC+DC功能很强大,因为可以同时显示AC,DC,AC+DC(3)最强的优势,是数据记录,保存,可以图形显示记录的数据,可......
  • 基于AT89C51的入门
    首先我们需要将Proteus8Professional    KeiluVision4两个软件下载下来https://www.aliyundrive.com/s/maRxuVc7mfv提取码:70ms下载后进行安装  路径选下(......
  • CF1389B题解
    题目传送门题目分析首先,这道题比较的简单,是一道较为标准的dp,虽说有大佬说可以用贪心做,但本蒟蒻不会。首先,\(0\leqz\leq\min(5,k)\)所以我们可以开一个二维dp,......
  • NC17890 方格填色
    题目链接题目题目描述给一个mxn的方格,Applese想要给方格填上颜色,每个格子可以是黑色或者白色。他要求左右相邻两格不能同为白色且相邻两列不能全为黑色。求满足条件......