精华内容
下载资源
问答
  • 编程实现数值积分的几种--方法 c语言.doc第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 1 编程实现数值积分的几种 方法 c 语言 数值计算 2010-11-05 095243 阅读 385 评论 1 字号 大 中 小 ...

    253b171540df25e1b84436cbe50dfc72.gif编程实现数值积分的几种--方法 c语言.doc

    第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 1 编程实现数值积分的几种 方法 c 语言 数值计算 2010-11-05 095243 阅读 385 评论 1 字号 大 中 小 订阅 复化梯形公式 在区间 不大时 , 用梯形公式、辛卜生公式计算定积分是简单实用的 , 但当区间 较大时 , 用梯形公式、辛卜生公式计算定积分达不到精确度要求 . 为了提高计算的精确度,我们将 a,b 区间 n 等分,在每个小区间上应用梯形公式、辛卜生公式计算定积分,然后将其结果相加,这样就得到了复化梯形公式和复化辛卜生公式。 1. 复化梯形公式 将积分区间 等分 , 设 , 则节点为 对每个小区间上应用梯形公式 , 然后将其结果相加,则得 3.14 称 3.14 式为复化梯形公式 . 当 在 a,b 上有连续的二阶导数时,则复化梯形公式 3.14 的余项推导如下 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 2 因为 所以在区间 a,b 上公式 3.14 的误差为 又因为 在区间 a,b 上连续,由连续函数的性质知,在区间 a,b 上存在一点 , 于是 ( 3.15 ) 复化梯形公式,复化抛物线公式和 Romberg 求积法的算法程序 以下程序均定义误差限为 1*10-5; 1复化梯形公式 include include 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 3 define e 1e-5 define a 0 积分下限 a define b 1 积分上限 b define fx 4/1x*x 被积函数 fx int main int i,n; double h,t0,t,g; n1; 赋初值 hdoubleb-a/2; th*fafb; do t0t; g0; for i1;ie; 自定义误差限 e printf“.8lf“,t; 输出积分的近似值 return 0; 2复化抛物线公式 include include define e 1e-5 define a 0 积分下限 a define b 1 积分上限 b define fx 4/1x*x 被积函数 fx int main int i,n; double f1,f2,f3,h,s0,s; f1fafb; 赋初值 f2fdoubleba/2; 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 5 f30; sdoubleb-a/6*f14*f2; n2; hdoubleb-a/4; do 复化抛物线算法 f2f3; s0s; f30; for i1;ie; 自定义误差限 printf“.8lf“,s; return 0; 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 6 3Romberg 求积法 include include define e 1e-5 define a 0 积分下限 a define b 1 积分上限 b define fx 4/1x*x 被积函数 fx double t100100; int main int n,k,i,m; double h,g,p; hdoubleb-a/2; t00h*fafb; k1; n1; do Romberg 算法 g0; for i1;ie; 自定义误差限 e printf“.8lf“,t0m; return 0; 给定精度,定义误差限为 1*10-5,分别求出步长的先验估计值用复化梯形公式计算,要求 h1就可以得到收敛情况的解 。 图 2.2.19积分 11 dxxp 在 p1的情况下 的 Mathematica运算结果 3.数值积分 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 21 数值积分是解决求定积分的另一种有效的方法,它可以给出一个近似解。特别是对 于用 Integrate命令无法求出的定积分,数值积分更是可以发挥巨大作用。 它的 主要 命令格式为 表 2.2.3中的命令。 表 2.2.3 数值积分 一些主要命令 Nintegratef,x,a,b 在 a,b上求 f数值积分 Nintegratef,x,a,x1,x2b 以 x1,x2. 为分割求 a,b上的数值积分 Nintegratef,x,a,b,MaxRecursionn 求数值积分时指定迭代次数 n. 下面我们求 sinsinx在 0, 上的积分值,由于这 个函数的不定积分求不出,因此使用Integrate命令无法得到具体结果,但可以用数值积分 可以求得近似值。如例 2.2.18。 例 2.2.18 求 积分 0sinsinxdx。 这个被积函数 fxsinsinx找不到初等的原函数 ,用命令 Integratef,x,min,max直接输入,得不到结果。但用命令 Nintegratef,x,a,b输入,即可得到近似值。具体情况参见图 2.2.20,其中 Pi 表示 。 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 22 图 2.2.20 积分 0sinsinxdx 在 Mathematica 程序下的数值解 如果积分 的被 函数存在不连续点,或存在奇 异 点我们可对积分进行分段求解。例如 例2.2.19。 例 2.2.19 求积分 11 x1dx。 被积函数x1在 -1, 1上,显然有 x0点是一个无穷间断点。因此若要求其数值积分,必须在其中插入点 0。于是,利用数值积分命令 Nintegratef,x,xmin, x1, x2 xmax输入,其中 x1, x2,是奇异点。这样就可得到积分的数值解。具体操作参见图 2.2.21 图 2.2.21 积分 11 x1dx 在 Mathematica 程序下的数值解 对无穷积分,也可求 得积分数值解 ,例如 例 2.2.20。 例 2.2.20 求积分 dxe x 02 。 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 23 对于 求 无穷积分的数值解 ,也可以直接用命令 Nintegratef,x,a,b,其中 b可以用无穷大 Infinity替换。 具体操作参见图 2.2.22。 图 2.2.22 积分 dxe x 02 在 Mathematica 程序下的数值解 思考题 可以将第一篇中的习题一、习题二中的题用 Mathematica程序 做一下。

    展开全文
  • 数值积分C语言算法

    千次阅读 2008-11-04 23:17:00
    一个计算Pi的程序用的是数值积分算法#include #include double f(double x);main(){int i=0;int a=0; int b=0;int n=0;double x=0;double s=0;double h=0;printf("/nplease i
     
    
    一个计算Pi的程序
    用的是数值积分算法
    1. #include <math.h>
    2. #include <stdio.h>
    3. double f(double x);
    4. main()
    5. {
    6. int     i=0;
    7. int     a=0; 
    8. int     b=0;
    9. int     n=0;
    10. double  x=0;
    11. double  s=0;
    12. double  h=0;
    13. printf("/nplease input a=");
    14. scanf("%d",&a);
    15. printf("/nplease input b=");
    16. scanf("%d",&b);
    17. printf("/nplease input a number N=");
    18. scanf("%d",&n);
    19. h=(b-a)/(2.0*n);
    20. s=f(a)-f(b);
    21. for(x=a+h,i=1;i<(2*n+1);i++,x=x+h)
    22. {
    23.     if((i%2)==1) 
    24.     { 
    25.     s=s+f(x)*4;
    26.     }
    27.     else
    28.     {
    29.     s=s+f(x)*2;
    30.     }
    31. }
    32. s=s*(b-a)/(6.0*n);
    33. printf("%5.51f",4*s);
    34. }
    35. double f(double x)
    36. {
    37. double value=0;
    38. value= 1/(1+x*x);
    39. return  value;
    40. }
    展开全文
  • 6、复化辛甫生算法 P95.9 设 ,用复化辛甫生法求积分 的近似值 程序: #include #include double fun(double); void main() { double a,b,h,s,x,y; int n,k; scanf("%lf%lf%d",&a,&b,&n); h=(b-a)/n; s=0; x=a; y=...

    PAGE

    PAGE 7

    1、 秦九韶算法 2、二分法 3、拉格朗日插值 4、埃特金算法 5、复化梯形法

    6、复化辛甫生算法 7、二阶龙格库塔方法 8、四阶龙格库塔方法 9、改进的欧拉方法 10、迭代法 11、埃特金加速方法:12、牛顿迭代法 13、追赶法 14、雅克比迭代 15、蛋白质设计:17高斯消去法:

    ?

    1、 秦九韶算法

    P11.3 利用秦九韶算法求多项式 ,在x=3时的值。

    程序:

    #include

    #include

    void main()

    {float a[100],v,x;

    int n,i,k;

    scanf("%d%f",&n,&x);

    for(i=0;i<=n;i++)

    scanf("%f",&a[i]);

    v=a[n];

    k=1;

    do

    {v=x*v+a[n-k];

    k=k+1;

    }

    while(k<=n);

    printf("v=%f",v);}

    ?

    运行结果:

    ?

    2、二分法

    P11.1用二分法求方程法x*x*x-x-1=0在[1,2]内的近似根,要求误差不超过

    #include

    #include

    float fun(float);

    void main()

    {float a,b,c,x,y,y1;

    scanf("%f%f%f",&a,&b,&c);

    y1=fun(a);

    do

    {x=(a+b)/2;

    y=fun(x);

    {if(y*y1>0)

    a=x;

    else

    b=x;}}

    while((b-a)>=c);

    printf("%f,%f\n",x,y);

    }

    float fun(float m)

    {float n;

    n=m*m*m-m-1;

    return(n);

    }

    ?

    运行结果:

    ?

    ?

    3、拉格朗日插值

    程序:

    #include

    main()

    {float a,b,t,x[100],y[100];

    int n,i,j,k;

    scanf("%f%d",&a,&n);

    for(i=0;i<=n;i++)

    scanf("%f%f",&x[i],&y[i]);

    k=0;

    b=0;

    for(k=0;k<=n;k++)

    {t=1;

    for(j=0;j<=n;j++)

    {if(j!=k)

    t=t*(a-x[j])/(x[k]-x[j]);}

    b=b+t*y[k];

    }

    printf("%f\n",b);

    }

    ?

    ?

    4、埃特金算法

    程序:

    #include

    #include

    main()

    {float a,b,c,x[100],y[100];

    int i,j,n,k;

    scanf("%d%f",&n,&a);

    for(i=0;i<=n;i++)

    scanf("%f%f",&x[i],&y[i]);

    for(k=1;k<=n;k++)

    {for(i=k;i<=n;i++)

    y[i]=y[k-1]+(y[i]-y[k-1])*(a-x[k-1])/(x[i]-x[k-1]);}

    printf("%f\n",y[n]);

    }

    5、复化梯形法

    P95.9 设 ,用复化梯形法求积分 的近似值

    程序:

    #include

    #include

    double fun(double);

    void main()

    {

    double a,b,h,s,x,y;

    int n,k;

    scanf("%lf%lf%d",&a,&b,&n);

    h=(b-a)/n;

    s=0;

    x=a;

    y=fun(x);

    for(k=1;k<=n;k++)

    {s=s+fun(x);

    x=x+h;

    s=s+fun(x);

    }

    s=(h/2)*s;

    printf("s=%lf\n",s);

    }

    double fun(double m)

    {double n;

    n=exp(-m)*sin(4*m)+1;

    return(n);

    }

    运行结果:

    ?

    ?

    6、复化辛甫生算法

    P95.9 设 ,用复化辛甫生法求积分 的近似值

    程序:

    #include

    #include

    double fun(double);

    void main()

    {

    double a,b,h,s,x,y;

    int n,k;

    scanf("%lf%lf%d",&a,&b,&n);

    h=(b-a)/n;

    s=0;

    x=a;

    y=fun(x);

    for(k=1;k<=n;k++)

    {s=s+fun(x);

    x=x+h/2;

    s=s+4*fun(x);

    x=x+h/2;

    s=s+fun(x);}

    s=(h/6)*s;

    printf("s=%lf\n",s);

    }

    double fun(double m)

    {double n;

    n=exp

    展开全文
  • 龙贝格C语言实验报告,计算方法实验完整报告
  • 龙贝格求积公式 c语言实现 数值积分

    龙贝格求积公式 c语言实现 数值积分

    标签:计算方法实验


    /*
        本实验用龙贝格求积公式求4 / (1 + x^2)在[0, 1]的定积分。
    */
    #include <stdio.h>
    #include <math.h>
    
    double f(double x){
        return 4 / (1 + x * x);
    }
    
    int main(){
        double a = 0, b = 1, eps = 0.00001;  //上下限,精度
        double s, x, s1, s2, c1, c2, r1, r2, h = b - a, t1 = h * (f(a) + f(b)) / 2.0, t2, temp;
        int k = 1;
    
        do{
            s = 0, x = a + h / 2.0;
            do{
                s += f(x);
                x += h;
            }while(x < b);
            t2 = (t1 + h * s) / 2.0;
            s2 = t2 + (t2 - t1) / 3.0;
            if(k == 1)  {t1 = t2, s1 = s2, h /= 2.0, k += 1;  continue;}
            c2 = s2 + (s2 - s1) / 15.0;
            if(k == 2)  {t1 = t2, s1 = s2, c1 = c2, h /= 2.0, k += 1;  continue;}
            r2 = c2 + (c2 - c1) / 63.0;
            if(k == 3)  {t1 = t2, s1 = s2, c1 = c2, r1 = r2, h /= 2.0, k += 1;  continue;}
            temp = r1, r1 = r2, t1 = t2, s1 = s2, c1 = c2, h /= 2.0, k += 1;
        }while(fabs(r1 - temp) >= eps);  //即fabs(r2 - r1) >= eps
        printf("answer = %f\n", r2);
        return 0;
    }
    

    实验结果
    output

    展开全文
  • 编程实现数值积分的几种方法 c语言.doc编程实现数值积分的几种--方法 c语言数值计算 2010-11-05 09:52:43 阅读385 评论1 ??字号:大中小?订阅复化梯形公式????在区间 不大时 , 用梯形公式、辛卜生公式计算定积分是...
  • 第二篇 数学试验 第2章 数学试验 2.2实验2 一元微积分的编程实现 PAGE 6编程实现数值积分的几种--方法 c语言\l "m=0&t=1&c=fks_084066080087083065084095086095085086082068081080081065083" \o "数值计算" ...
  • } 5、复化梯形法 P95.9 设 , 用复化梯形法求积分 的近似值 程序: #include #include double fun(double); void main() { double a,b,h,s,x,y; int n,k; scanf("%lf%lf%d",&a,&b,&n); h=(b-a)/n; s=0; x=a; y=fun(x...
  • 复化梯形求积公式 c语言实现 数值积分
  • 一 复合梯形公式 ...三 C语言程序实现 #include <stdio.h> #include <math.h> typedef float (*funType)(float x); float fun(float x) //测试算例函数 { return x*x; } float SnFun(funType fp,...
  • 变步长梯形求积公式 c语言实现 数值积分
  • 复化辛普森Simpson求积公式 c语言实现 数值积分
  • 根据Romberg算法计算定积分,和变步长的Simpson算法的输入都一样....本题目取的例子为数值书137面的例子2,f(x)= sin(x)/x,下面给出代码: /******************************************** > File
  • TSL2561获取光强 一、TSL2561光强传感器 二、使能内核I2C驱动模块 三、TSL2561寄存器的访问 四、C语言获取光强代码 一、TSL2561光强传感器   TSL2561是一款高速、低功耗、宽量程、可编程灵活配置的光强度数字转换...
  • 数值计算基础实验之一 数值积分 龙贝格法求积分C语言实现 我写的龙贝格是极尽节省存储空间形式的 所以代码估计会有一点点难懂 代码仅供参考,根据自己需要简化也可以
  • C语言编程:龙贝格-数值积分班级: 信科 学号: ****** 姓名: 成绩数值分析实验报告实验3 数值积分3.1 实验目的通过本实验理解数值积分与微分的基本原理。掌握数值积分中常见的复合求积公式的编程实现。掌握...
  • c语言辛普森数值分析

    2010-02-16 10:55:47
    c语言辛普森数值计算c语言辛普森数值计算c语言辛普森数值计算
  • 优质解答用4了四种方法,另外还加了个龙格贝.大人大量给分吧~#includeusing namespace std;double getPI0(int h){double l = 1.0/h;int i,j;double s = 0;for(i = 0; i < h; i++){s += l*(4/(1+((2*i+1)*l/2)*((2*...
  • 数值积分之Simpson 1/3法则数值积分之Simpson 1/3法则的完整源码(定义,实现,main函数测试) 数值积分之Simpson 1/3法则的完整源码(定义,实现,main函数测试) #include <math.h> #include <stdio.h>...
  • 数值计算方法中关于复化Simpson积分和复化梯形积分c语言程序源代码,并提供相应误差估算
  • 变步长的Simpson公式计算积分.算法基本分析:输入a,b(积分上下限),n为积分区间等分数,eps为计算精度,我这里1/...变步长梯形求积算法计算积分,本题目取的例子为数值书131面的例子2,f(x)= sin(x)/x,下面给出代码:
  • 龙贝格数值积分

    2012-05-24 21:13:26
    龙贝格数值积分算法程序 C语言程序 计算方法程序
  • c语言实现二重积分 数值解法
  • 数值计算基础的实验之一 数值积分 变步长梯形法求积分的C语言实验 复化梯形法或者叫复合梯形法 代码摘要 double Multy(double a, double b) { double h = b - a, T[2]; T[0] = h * (f(b) + f(a)) / 2.0; //...
  • romberg数值积分

    2012-06-23 18:37:47
    求方程的数值积分 romberg算法 语言为c++ c语言
  • Romberg法求数值积分

    2011-05-08 10:20:37
    《矩阵与数值分析》上机作业,采用Romberg法求解数值积分。采用C语言编程,程序简单实用,有运行结果,修改积分项和积分上下限即可求解不同的数值积分
  • 计算方法或数值分析的C语言编程方法,如多项式计算,复数运算,随机数产生,矩阵运算,矩阵的特征值和特征向量计算,线性代数方程组或非线性代数方程组的求解,微分方程的求解,函数插值,数值积分,极值问题求解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,406
精华内容 1,362
关键字:

数值积分c语言

c语言 订阅