精华内容
下载资源
问答
  • 复化simpson公式求积分

    2015-03-12 18:29:31
    计算方法教程 凌永祥 第四章第三题复化simpson公式求积分
  • matlab中利用复化梯形公式和复化simpson公式实现积分运算,对于数值计算类课程很有帮助。
  • 包含代码和文档 采用复化梯形公式复化辛普森公式求积分,并与精确值进行比较得下表。 采用复化梯形公式复化辛普森公式求积分,并与精确值进行比较得下表。
  • (一) 实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式复化simpson 公式以及romberg 积分。(二) 问题描述问题三数值积分椭圆周长的计算。考虑椭圆22221x y a b+=,为计算其周长,只要计算其第一象限的长度...

    (一) 实验目的

    熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simpson 公式以及romberg 积分。

    (二) 问题描述

    问题三数值积分椭圆周长的计算。考虑椭圆22221x y a b

    +=,为计算其周长,只要计算其第一象限的长度即可.

    用参数方程可以表示为cos (0/2)sin x a t t y b t π=?≤≤?=?

    ,

    计算公式为/0π?

    174b77d1c9a0e2caeda0dc13bf6f1e82.png

    为计算方便,我们可以令1a =,即计算下面的积分

    /

    0π?/0π=?

    b912af354e421b9d28b35853fdb00169.png

    4777f14b13a80126de85009912dcc275.png

    1334c11925ca9b1088aeb7afda9287ac.png

    c81c3f44c85c1413a7d9562f1cefd0da.png

    (/0π?/0a π=?可以归结为上面的形式)

    采用复化梯形公式,复化Simpson 公式以及Romberg 积分的方法计算积分

    /

    0()I b π=?

    1047f22d5406f5b64160d011640c2fef.png

    给出通用程序,该通用程序可以计算任何一个函数在任意一个区间在给定的精度下的数值积分。程序输出为计算出的数值积分值以及计算函数值的次数。

    (三) 算法介绍

    首先利用给出的各迭代公式,设计程序。在matlab 对话框中输入要计算的函数,给出区间和精度。

    展开全文
  • matlab复化simpson公式计算积分程序,用函数调用的方法实现的。
  • 利用Simpson公式求积分

    2015-08-20 23:57:06
    这里是利用Simpson公式求积分与自适应复化Simpson公式求积分
  • 复化simpson公式计算定积分,matlab程序实现,需要输入积分函数、上下限和所分步数,希望能对大家的学习有帮助。
  • 分别用复化梯形公式复化Simpson 公式计算定积分dx e x ?+201,取n=2,4,8,16分别验证结果(精确值I=4.006994)。复化梯形公式求积分:function I=tquad(x,y)%复化梯形公式,其中,%x 为向量,被积函数自变量的等...

    分别用复化梯形公式、复化Simpson 公式计算定积分dx e x ?+201,取n=2,4,8,16分别验证结果(精确值I=4.006994)。

    复化梯形公式求定积分:

    function I=tquad(x,y)

    %复化梯形求积公式,其中,

    %x 为向量,被积函数自变量的等距结点; %y 为向量,被积函数在结点处的函数值; n=length(x);

    m=length(y);

    %积分自变量的结点数应与它的函数值的个数相同 h=(x(n)-x(1))/(n-1);

    a=[1 2*ones(1,n-2) 1];

    I=h/2*sum(a.*y);

    复化Simpson 公式求定积分:

    function I=squad(x,y)

    %复化Simpson 求积公式,其中,

    %x 为向量,被积函数自变量的等距结点; %y 为向量,被积函数在结点处的函数值; n=length(x);

    m=length(y);

    %积分自变量的结点数应与它的函数值的个数相同 if rem(n-1,2)~=0

    I=tquad(x,y);

    return;

    end

    N=(n-1)/2;

    h=(x(n)-x(1))/N;

    a=zeros(1,n);

    for k=1:N

    a(2*k-1)=a(2*k-1)+1;

    a(2*k)=a(2*k)+4;

    a(2*k+1)=a(2*k+1)+1;

    end

    I=h/6*sum(a.*y);

    展开全文
  • 复化Simpson公式

    2018-11-03 21:57:38
    MATLAB实现Simpson复化积分公式,,
  • 2 分别用复化梯形公式复化 Simpson 公式计算定积分 1+ ex dx 取 n=2,4,8,16 0 分别验证结果精确值I=4.006994 复化梯形公式求积分: function I=tquad(x,y) %复化梯形公式其中 %x 为向量被积函数自变量的等距...
  • PAGE PAGE 1 分别用复化梯形公式复化Simpson公式计算定积分取n=2,4,8,16分别验证结果精确值I=4.006994 复化梯形公式积分: function I=tquad(x,y) %复化梯形积公式其中 %x为向量被积函数自变量的等距结点 %y为...
  • 从Newton-Cotes的截断误差公式可以看出,当积分区间[a,b][a,b][a,b]较大时,低阶的Newton-Cotes公式截断误差都比较大。由于高阶Newton-Cotes公式是数值不稳定的,因此通过不断...这种方法称为复化求积方法。 常

    从Newton-Cotes的截断误差公式可以看出,当积分区间[a,b][a,b]较大时,低阶的Newton-Cotes求积公式截断误差都比较大。由于高阶Newton-Cotes求积公式是数值不稳定的,因此通过不断增加阶数来提高求积公式的精度是不可行的。但是,如果将积分区间[a,b][a,b]分成几个小区间(任意的),在每个小区间上应用Newton-Cotes求积公式,其截断误差必然会减小,然后再把每个小区间上的积分值累加起来,这样却能大大提高整个积分的精度。这种方法称为复化求积方法。

    常用的复化求积方法采用等分区间的做法,具体如下:

    将区间[a,b][a,b]划分为n等分,步长为H=(ba)nH=\frac{(b-a)}{n},分点为xk=a+kH,k=0,1,2,,nx_k=a+kH,k=0,1,2,\cdots,n。先用低阶Newton-Cotes求积公式求得每个子区间[xk,xk+1][x_k,x_{k+1}]上的积分值IkI_k,然后将它们累加起来求和,用k=0n1Ik\sum_{k=0}^{n-1}I_k作为所求积分I=abf(x)dxI=\int_a^bf(x)dx的近似值。

    1. 复化梯形公式

    在区间[a,b][a,b]上采用复化求积方法,具体使用梯形求积公式进行计算,就得到复化梯形求积公式。用TkT_k表示f(x)f(x)在子区间[xk,xk+1][x_k,x_{k+1}]上的积分值,TnT_n表示f(x)f(x)在区间[a,b][a,b]上的积分值,有:
    Tk=12H[f(xk)+f(xk+1)] T_k=\frac{1}{2}H[f(x_k)+f(x_{k+1})]
    其中
    H=(ba)/n,xk=a+kH(k=0,1,2,,n) H=(b-a)/n, \quad x_k=a+kH \quad(k=0,1,2,\cdots,n)

    Tn=k=0n1Tk=12Hk=0n1[f(xk)+f(xk+1)] T_n=\sum_{k=0}^{n-1}T_k=\frac{1}{2}H\sum_{k=0}^{n-1}[f(x_k)+f(x_{k+1})]
    即:
    Tn=12H[f(xk=0)+f(xk=n)+2k=1n1f(xk)] T_n=\frac{1}{2}H[f(x_{k=0})+f(x_{k=n})+2\sum_{k=1}^{n-1}f(x_k)]

    Tn=ba2n[f(a)+f(b)+2k=1n1f(xk)] T_n=\frac{b-a}{2n}[f(a)+f(b)+2\sum_{k=1}^{n-1}f(x_k)]
    截断误差用RTR_T表示,由于f(x)f(x)在区间[a,b][a,b]上有连续的二阶导数,故有:
    RT=k=0n1112H3f(2)(ηk)=112H3k=0n1f(2)(ηk)ηk[xk,xk+1] R_T=\sum_{k=0}^{n-1}-\frac{1}{12}H^3f^{(2)}(\eta_k)=-\frac{1}{12}H^3\sum_{k=0}^{n-1}f^{(2)}(\eta_k) \quad \eta_k\in[x_k,x_{k+1}]

    RT=112H3nf(2)(η)=(ba)12H2fn(η)η[a,b] R_T=-\frac{1}{12}H^3·n·f^{(2)}(\eta)=-\frac{(b-a)}{12}H^2f^n(\eta) \quad \eta \in [a,b]

    2. 复化Simpson公式

    在区间[a,b][a,b]上采用复化求积方法,具体使用Simpson求积公式进行计算,就得到复化Simpson公式。用SkS_k表示f(x)f(x)在子区间[xk,xk+1][x_k,x_{k+1}]上的积分值,SnS_n表示f(x)f(x)在区间[a,b][a,b]上的积分值,有:
    Sk=16H[f(xk)+4f(xk+12)+f(xk+1)] S_k=\frac{1}{6}H[f(x_k)+4f(x_{k+\frac{1}{2}})+f(x_{k+1})]
    式中,xk+12x_{k+\frac{1}{2}}为子区间[xk,xk+12][x_k,x_{k+\frac{1}{2}}]的中点,H=(ba)/nH=(b-a)/n
    Sn=k=0n1=16Hk=0n1[f(xk)+4f(xk+12)+f(xk+1)] S_n=\sum_{k=0}^{n-1}=\frac{1}{6}H\sum_{k=0}^{n-1}[f(x_k)+4f(x_{k+\frac{1}{2}})+f(x_{k+1})]

    Sn=k=0n1=16H[f(a)+4k=0n1f(xk+12)+2k=1n1f(xk)+f(b)] S_n=\sum_{k=0}^{n-1}=\frac{1}{6}H[f(a)+4\sum_{k=0}^{n-1}f(x_{k+\frac{1}{2}})+2\sum_{k=1}^{n-1}f(x_{k})+f(b)]
    截断误差用RsR_s表示,由于f(x)f(x)在区间[a,b][a,b]上有连续的四阶导数,故有:
    RS=k=0n112880H5f(4)(ηk)=12880H5k=0n1f(4)(ηk)ηk[xk,xk+1] R_S=\sum_{k=0}^{n-1}-\frac{1}{2880}H^5f^{(4)}(\eta_k)=-\frac{1}{2880}H^5\sum_{k=0}^{n-1}f^{(4)}(\eta_k) \quad \eta_k \in [x_k,x_{k+1}]

    3. 复化Cotes公式

    在区间[a,b][a,b]上采用复化求积方法,具体使用Cotes求积公式进行计算,就得到复化Cotes公式为:
    Cn=190H[7f(a)+32k=0n1f(xk+14)+12k=0n1f(xk+12)+32k=0n1f(xk+34)+14k=1n1f(xk)+7f(b)] C_n=\frac{1}{90}H[7f(a)+32\sum_{k=0}^{n-1}f(x_{k+\frac{1}{4}})+12\sum_{k=0}^{n-1}f(x_{k+\frac{1}{2}})+32\sum_{k=0}^{n-1}f(x_{k+\frac{3}{4}})+14\sum_{k=1}^{n-1}f(x_k)+7f(b)]
    截断误差为:
    Rc=2(ba)945(H4)6f(6)(η)η[a,b] R_c=-\frac{2(b-a)}{945}(\frac{H}{4})^6f^{(6)}(\eta) \quad \eta\in[a,b]
    从复化求积的余项公式中可以看出,复化梯形公式、复化Simpson公式、复化Cotes公式的余项和步长的关系为RT=O(h2),Rs=O(h4),Rc=O(h6)R_T=O(h^2),R_s=O(h^4),R_c=O(h^6)。因此,当H0H\to 0nn\to \infty时,Tn,Sn,CnIT_n,S_n,C_n\to I

    展开全文
  • 具体算法详见参考文献,本文仅仅给出C++利用复化Simpson公式构造的自适应算法计算积分的具体程序。simpson.h:#ifndef SIMPSON_H_INCLUDED #define SIMPSON_H_INCLUDED #include <iostream> #include &...

    具体算法详见参考文献,本文仅仅给出C++利用复化Simpson公式构造的自适应算法计算积分的具体程序。

    simpson.h:

    #ifndef SIMPSON_H_INCLUDED
    #define SIMPSON_H_INCLUDED
    #include <iostream>
    #include <math.h>
    #include"fuction.h"
    using namespace std;
    double Simpson(double eps,double lower_bd,double upper_bd)
    {
        double h=upper_bd-lower_bd,s,s1,s2;//h为步长
        int n=1,k ;
        s1=h/6*(fuction(lower_bd)+4*fuction((lower_bd+upper_bd)/2)+fuction(upper_bd));
        s=2*fuction(lower_bd+0.25*h)-fuction(lower_bd+0.25*h)+2*fuction(lower_bd+0.75*h);
        s2=0.5*s1+s*h/6;//初始化s、s1、s2
        do
        {
           h=0.5*h;
            n=2*n;
            s1=s2;
            s=0;//为方便求和
            for(k=0;k<n;k++)
            {
                 s=s+2*fuction(lower_bd+(k+0.25)*h)-fuction(lower_bd+(k+0.5)*h)+2*fuction(lower_bd+(k+0.75)*h);
            }
            s2=0.5*s1+s*h/6;
        }while (fabs(s2-s1)>eps);
    
        return s2;
    }
    
    #endif // SIMPSON_H_INCLUDED
    

    在fuction.h中存放具体的被积函数,下面举一例

    fuction.h:

    #ifndef FUCTION_H_INCLUDED
    #define FUCTION_H_INCLUDED
    
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    double fuction(double x)
    {
        return pow(4-(pow(sin(x),2)),0.5);
    }
    
    #endif // FUCTION_H_INCLUDED 
    

    主函数中调用函数Simpson进行计算:

    #include <iostream>
    #include <iomanip>
    #include"simpson.h"
    #include"fuction.h"
    
    using namespace std;
    
    int main()
    {
        cout<<fixed<<setprecision(10)<<Simpson(1e-10,0,0.25)<<endl;
        return 0;
    }
    

    经过计算,积分值为0.4987111175。


    参考文献:黄云清,舒适. 2009.数值计算方法.北京:科学出版社

    展开全文
  • C++语言使用复化Simpson法计算积分,可以输入复化Simpson算法的等分数计算积分
  • 复化辛普森Simpson求公式 c语言实现 数值积分
  • C++实现复化辛普森公式求积分算法

    千次阅读 2019-09-21 20:51:21
    #include<iostream> using namespace std; double fun(double x) { ... return 4 / (1 + x * x);...double Simpson(double a, double b, int n) { double h = (b - a) / n; double s1 = fun(a + ...
  • 文中针对传统GM(1,1)模型背景值求解存在误差,模型预测精度低的问题,通过分析误差来源,根据已有复化Simpson公式优化背景值的方法,利用积分函数分区间积分求解逼近的思想,构建动态序列预测模型,并结合实例分析进一步...
  • 复化积分法(复化梯形积-复化Simpson公式-变步长积法)MATLAB编程实验报告.doc复化积分法(复化梯形积,复化Simpson公式,变步长积法)MATLAB编程实验报告一、 问题描述编写函数实现复化积分法。二、 实验步骤...
  • 高校计算方法课程上机作业利用simpson公式求积分并用三次样条插值函数近似
  • 1 实验目的 复化积公式计算定积分。 2 实验题目 ... 若用复化梯形公式、复化Simpson公式和复化Gauss-Legendre Ⅰ型公式做计算,要求绝对误差限ϵ=12×10−7\epsilon=\frac{1}{2}\times10^{-7}ϵ=21
  • 数值计算方法中关于复化Simpson积分和复化梯形积分的c语言程序源代码,并提供相应误差估算
  • Simpson公式复化梯形公式、Cotes公式以及Romberg公式

    万次阅读 多人点赞 2018-11-19 19:50:52
    数值分析的学习记录:数学:数值分析Simpson公式复化梯形公式,Cotes公式,以及龙贝格(Romberg)公式 数学:数值分析 研究生课程中的四门数学课中的一门:数值分析,今天完成了其课程作业,留下一个记录 ...
  • 复化Simpson求公式 | matlab

    千次阅读 2020-07-10 15:28:35
    function T=simpson(f_name, a, b, n) % f_name为要求的定函数y=f(x)所在的程序文件名 % a为积分下限 % b为积分上限 % n为积分区间[a,b]划分成小区间的等份数 h = (b-a) / n; x = a + (0:n) * h; f = feval(f_name,...
  • 复化辛普森公式求二重积分matlab源码及例题

    千次阅读 多人点赞 2020-06-08 17:04:18
    复化辛普森公式二重积分matlab源码 ...%%%%%%%%%%复化Simpson公式求二重积分%%%%%%%%% %%%%%%%%%% Liu Deping %%%%%%%%% clear all; %%%被积函数及积分上下限导入; s=input('请输入函数表达式:f
  • 三种低次复化公式的Matlab实现,包括复化梯度积,复化simpson求积,复化Cotes积。
  • //复化梯形公式求积分 //将[0,1]分成n等份,子区间长度为h=(b-a)/n #include #include using namespace std; int main() { double up, down, a, b, c, n = 100; //积分区间被分为n等份 cout cin >> up >> down >>...
  • 自适应复化辛普森公式求积算法(C语言实现)利用复化辛普森公式求积分自适应步骤基于C语言实现的代码 利用复化辛普森公式求积分自适应步骤 h为步长,a为积分下限,b为积分上限,f为积分函数,n为划分的积分次数,ε...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 255
精华内容 102
关键字:

复化simpson公式求积分