精华内容
下载资源
问答
  • 梯形求积公式 和 复合梯形求积公式 Matlab 实现

    万次阅读 多人点赞 2017-11-04 18:22:52
    梯形求积公式 和 复合梯形求积公式 Matlab 实现梯形求积公式 仅使用区间两点x1,f(x1),x2,f(x2)x_1,f(x_1),x_2,f(x_2) 组成的梯形面积S代替∫x2x1f(x)dx \int_{x_1}^{x_2} f(x)dx 的近似方法 ∫x2x1f(x)dx≈S=...

    梯形求积公式 和 复合梯形求积公式 Matlab 实现

    梯形求积公式

    仅使用区间两点x1,f(x1),x2,f(x2)
    组成的梯形面积S代替x2x1f(x)dx的近似方法
    求积

    x2x1f(x)dxS=x2x12×(f(x2)f(x1))

    复合梯形求积公式

    将求积区间[a,b]分为n个区间,每个区间步长为h(h=ban)在每个区间求梯形积分
    复合梯形求积
    Si为第i个梯形的面积

    x2x1f(x)dxi=0nSi=h2(f(a)+k=1n1f(xk)+f(b))

    说明

    上述公式是我用mathjax写的,如有错误请联系我修正
    敬请指正
    概述省略了部分推导过程,请查阅详细推导资料

    Matlab 实现代码

    梯形求积公式

    将该函数存为m文件

    function res = Trapezium(f,a,b)
        format long;
        if b < a
            c = b;
            b = a;
            a = c;
        end
        res = (b-a)*(f(a)+f(b))/2;

    调用下面语句测试函数

    f = inline('sin(x)','x')
    Trapezium(f,0,pi/2)

    复合梯形求积公式

    将该函数存为m文件

    function res = ComTrapezium(f,n,a,b)
        format long;
        if b < a
            c = b;
            b = a;
            a = c;
        end
        h = (b-a)/n;
        d = f(a);
        for i = a+h:h:b-h 
            d = d + (2 * f(i));
        end
        d = d + f(b);
        res = (d * h / 2);

    调用下面语句测试函数

    f = inline('sin(x)','x')
    ComTrapezium(f,4,0,pi/2)
    展开全文
  • Gauss型求积公式

    千次阅读 2017-01-14 11:35:39
    高斯求积公式是变步长数值积分的一种,基本形式是计算[-1,1]上的定积分。理论证明对于 n个节点的上述求积公式,最高有 2n - 1 次的代数精度,高斯公式就是使得上述公式具有 2n - 1次代数精度的积分公式。

    一、简介

    高斯求积公式是变步长数值积分的一种,基本形式是计算[-1,1]上的定积分。理论证明对于 n个节点的上述求积公式,最高有 2n - 1 次的代数精度,高斯公式就是使得上述公式具有 2n - 1次代数精度的积分公式。

    详解

    二、实现

    # -*- coding: utf-8 -*-
    """
    Created on Mon Dec 19 13:50:15 2016
    
        Gauss型求积公式
    
    @author: Administrator
    """
    
    from numpy import *
    from scipy import integrate
    
    import matplotlib.pyplot as plt
    
    #(-1,1)
    def f1(x):
        return x**2 / (1 - x**2)**(1/2)
    
    #(0,pi/2]
    def f2(x):
        return sin(x) / x
    
    def f2_symbol(x):
        from sympy import sin
        return sin(x) / x
    
    def gauss_legendre(f,a,b,n):
        from sympy import Symbol
        from sympy import diff
        from sympy import solve
        from sympy import Eq
        from math import factorial
        x = Symbol('x')
        l = diff((x**2 - 1)**(n+1),x,n+1)
        l = l  / (2**(n+1) * factorial(n+1))
        root = solve(Eq(l,0))
        A = []
        result = 0
        l_derivative = diff(l,x,1)
        for i in range(0,n+1):
            l_derivative_value = (l_derivative).evalf(subs={x:root[i]})
            A.append(2 / ((1 - root[i]**2) *  l_derivative_value**2))
            result += (b -a) / 2 * A[i] * f((a+b)/2 + (b-a)/2*root[i])
        return result
    
    if __name__ == '__main__':
        n = 4 # 1 2 4
        print 'f1:'
        print 'Truth-value:',integrate.quad(f1,-1,1)[0]
        print 'Estimated-value:',float(gauss_legendre(f1,-1,1,n))
        print
        print 'f2:'
        print 'Truth-value',integrate.quad(f2,0,pi/2)[0]
        print 'Estimated-value:',float(gauss_legendre(f2_symbol,0,pi/2,n))
        zero = 1e-10
        x1 = linspace(-1,1,500)
        x1[0] += zero
        x1[-1] -= zero
        y1 = f1(x1)
        x2 = linspace(0,pi/2,500)
        x2[0] += zero
        y2 = f2(x2)
        fig = plt.figure(figsize=(8,6))
        ax1 = fig.add_subplot(211)
        ax2 = fig.add_subplot(212)
        ax1.set_xlabel('x')
        ax1.set_ylabel('y')
        ax2.set_xlabel('x')
        ax2.set_ylabel('y')
        ax1.plot(x1,y1,color='b',linestyle='-',label='f1(x)')
        ax1.legend(loc='upper left')
        ax2.plot(x2,y2,color='r',linestyle='-',label='f2(x)')
        ax2.legend(loc='lower left')
        fig.show()
        fig.savefig('a.png')

    原函数

    展开全文
  • Gauss型求积公式及其Matlab程序

    千次阅读 2019-12-05 08:48:27
    由于Gauss型求积公式属于数值积分的内容,学东西总要知道它的来龙去脉,下面我简单介绍一下为什么要引入数值积分 给定函数f(x)∈C[a,b]f(x)\in C[a,b]f(x)∈C[a,b],考虑积分 I(f)=∫abf(x)dxI(f)=\int_{a}^{b} f(x...

    为什么要引入数值积分

    由于Gauss型求积公式属于数值积分的内容,学东西总要知道它的来龙去脉,下面我简单介绍一下为什么要引入数值积分

    给定函数f(x)C[a,b]f(x)\in C[a,b],考虑积分

    I(f)=abf(x)dxI(f)=\int_{a}^{b} f(x) dx
    的计算问题,从数学分析中知道,当已知f(x)f(x)的原函数为F(x)F(x)时,由牛顿-莱布尼兹公式,有
    I(f)=abf(x)dx=F(b)F(a)I(f)=\int_{a}^{b}f(x)dx=F(b)-F(a)
    然而,在实际计算中,被积函数的f(x)f(x)的原函数经常无法用初等函数表示,但过于复杂。还有时,f(x)f(x)只在一些离散点上给出。在这样的情况下,就有必要借助数值方法来求I(f)I(f)的近似值。

    Gauss型求积公式的定义

    从正交多项式理论可知,在区间[a,b]上,对给定的权函数ρ(x)\rho(x),存在正交多项式系ωk(x)k=0{\omega_{k}(x)}_{k=0}^{\infty}并且可以将其构造出来。进一步,已经证明了ωk(x)\omega_{k}(x)在[a,b]上恰有k个相异的根,取ωn+1(x)\omega_{n+1}(x)的n+1个根为求积结点,构造插值型求积公式,将得到具有2n+1次代数精度的求积公式,称如此构造出来的求积公式为Gauss型求积公式即:

    如果求积结点x0,x1,....,xnx_{0},x_{1},....,x_{n},使插值型求积公式11f(x)dxk=0nAkf(xk)\int_{-1}^{1}f(x)dx\approx\sum_{k=0}^{n}A_kf(x_k)的代数精度为2n+1,则称该求积公式为Gauss型求积公式,称这些求积结点为Gauss点。

    特别地,Gauss求积公式当[a,b]=[-1,1]时,取ρ(x)\rho(x)=1,Gauss型求积公式称为Gauss求积公式,此时的求积结点
    xk(k=1,2,3....)x_k(k=1,2,3....)为n次Legendre多项式的根。
    Ak=11ω(x)(xxk)ω(xk)dxA_k=\int_{-1}^{1} \frac{\omega(x)}{(x-x_k)\omega'(x_k)}dx
    而Legendre多项式为:

    在这里插入图片描述
    打代码太南了,我手写偷下懒。

    Gauss公式的应用

    Gauss公式主要应用为二点Gauss公式和三点Gauss公式
    二点Gauss公式:当n=2时,有 x1=13,x2=13,A1=A2=1x_1=-\sqrt\frac{1}{3},x_2=\sqrt\frac{1}{3},A_1=A_2=1,求积公式为G2(f)=f(13)+f(13)G_2(f)=f(-\sqrt\frac{1}{3})+f(\sqrt\frac{1}{3})
    三点Gauss求积公式:当n=3时,有x1=35,x2=0x3=35,A1=A3=59,A2=89x_1=-\sqrt\frac{3}{5},x_2=0,x_3=\sqrt\frac{3}{5},A_1=A_3=\frac{5}{9},A_2=\frac{8}{9},求积公式为G3(f)=59f(33)+89f(0)+59f(35)G_3(f)=\frac{5}{9}f(-\sqrt\frac{3}{3})+\frac{8}{9}f(0)+\frac{5}{9}f(\sqrt\frac{3}{5})
    为了计算[a,b]上的定积分abf(x)dx\int_{a}^{b} f(x) dx可以通过自变量的变换x=12(a+b+t(ba))x=\frac{1}{2}(a+b+t*(b-a))将其转换为[-1,1]上的积分,然后使用Gauss积分公式计算其近似值。
    例:
    用两点Gauss公式计算01sinxxdx\int_{0}^{1}\frac{sinx}{x}dx
    解:变换令x=0.5(t+1)
    01sinxxdx=11sin0.5(t+1)t+1dx\int_{0}^{1}\frac{sinx}{x}dx=\int_{-1}^{1}\frac{sin0.5(t+1)}{t+1}dx
    t0=13,t1=13t_0=\frac{-1}{\sqrt 3},t_1=\frac{1}{\sqrt 3}
    01sinxxdx=0.5[sin0.5(t0+1)0.5(t0+1+sin0.5(t1+1)0.5(t1+1]\int_{0}^{1}\frac{sinx}{x}dx=0.5[\frac{sin0.5(t_0+1)}{0.5(t_0+1}+\frac{sin0.5(t_1+1)}{0.5(t_1+1}]

    Matlab程序

    function [w,p] = Gauss_point_1D(n,a,b)
    % Gauss quarature point on [-1,1]
    if n == 2
        w = [1,1];
        p = [-1/sqrt(3),1/sqrt(3)];
    elseif n == 4
         w = [0.3478548451,0.3478548451,0.6521451549,0.6521451549];
         p = [0.8611363116,-0.8611363116,0.3399810436,-0.3399810436];
    elseif n == 8
         w = [0.1012285363,0.1012285363,0.2223810345,0.2223810345,0.3137066459,0.3137066459,0.3626837834,0.3626837834];
         p = [0.9602898565,-0.9602898565,0.7966664774,-0.7966664774,0.5255324099,-0.5255324099,0.1834346425,-0.1834346425];
    end
    
    % Gauss quarature point on [a,b]
    w = 0.5*(b-a)*w;
    p = 0.5*(b-a)*p+0.5*(b+a);
    
    
    
    function q = Gauss_quadrature(fun,a,b,n)
    % Gauss quadrature
    [w,p] = Gauss_point_1D(n,a,b);
    q = sum(w.*fun(p));
    
    展开全文
  • 若机械求积公式具有阶代数精度,则称为Gauss型求积公式,而在上关于权函数的次正交多项式的零点就是Gauss型求积公式的Gauss。 在Gauss型求积公式中,若权函数,区间为,则公式为 特别的称为Gauss-Legendre公式...

    Gauss型求积公式

    若机械求积公式具有阶代数精度,则称为Gauss型求积公式,而在上关于权函数的次正交多项式的零点就是Gauss型求积公式的Gauss点。

    在Gauss型求积公式中,若权函数,区间为,则公式为

                    

    特别的称为Gauss-Legendre公式。下表列出Gauss-Legendre公式的结点和系数。

               

    0

    0.0000000

    2.0000000

    3

    ±0.8611361

    ±0.3399810

    0.3478548

    0.6521452

    1

    ±0.5773503

    1.000000

    4

    ±0.9061798

    ±0.5384693

    0.000000

    0.2369269

    0.4786287

    0.5688889

    2

    ±0.7745967

    0.000000

    0.5555556

    0.8888889

    5

    ±0.9324695

    ±0.6612094

    ±0.2386192

    0.1713245

    0.3607618

    0.4679139

    当积分区间是一般的区间时,只要做变换

                        

    可将公式转换为

                   

    对等式右端积分使用Gauss-Legendre公式即可。

         Matlab代码如下:

    function I = IntGaussLegen(f,a,b,n,AK,XK)

    %

    syms t;

    t= findsym(sym(f));

    if(n<5 && nargin == 4)

        AK = 0;

        XK = 0;

    else                       

        XK1=((b-a)/2)*XK+((a+b)/2);

        I=((b-a)/2)*sum(AK.*subs(sym(f),findsym(f),XK1));

    end

     

    ta = (b-a)/2;

    tb = (a+b)/2;

    switch n

        case 0,

            I=2*ta*subs(sym(f),t,tb);

           

        case 1,

            I=ta*(subs(sym(f),t,ta*0.5773503+tb)+...

                subs(sym(f),t,-ta*0.5773503+tb));

           

        case 2,

            I=ta*(0.55555556*subs(sym(f),t,ta*0.7745967+tb)+...

                0.55555556*subs(sym(f),t,-ta*0.7745967+tb)+...

                0.88888889*subs(sym(f),t,tb));

              

        case 3,

            I=ta*(0.3478548*subs(sym(f),t,ta*0.8611363+tb)+...

                0.3478548*subs(sym(f),t,-ta*0.8611363+tb)+...

                0.6521452*subs(sym(f),t,ta*0.3398810+tb) +...

                0.6521452*subs(sym(f),t,-ta*0.3398810+tb));

             

        case 4,

            I=ta*(0.2369269*subs(sym(f),t,ta*0.9061793+tb)+...

                0.2369269*subs(sym(f),t,-ta*0.9061793+tb)+...

                0.4786287*subs(sym(f),t,ta*0.5384693+tb) +...

                0.4786287*subs(sym(f),t,-ta*0.5384693+tb)+...

                0.5688889*subs(sym(f),t,tb));

    case 5,

            I=ta*(0.1713245*subs(sym(f),t,ta*0.9324695+tb)+...

                0.1713245*subs(sym(f),t,-ta*0.9324695+tb)+...

                0.3607616*subs(sym(f),t,ta*0.6612094+tb)+...

                0.3607616*subs(sym(f),t,-ta*0.6612094+tb)+...

                0.4679139*subs(sym(f),t,ta*0.2386292+tb)+...

                0.4679139*subs(sym(f),t,-*0.2386292+tb));

    end

         若求积区间为,权函数为,则所建立的Gauss型求积公式为

    称为Gauss-Chebyshev公式。其中结点为次Chebyshev多项式的零点,公式可记为

                        

     

        若求积区间为,权函数为,则所建立的Gauss型求积公式为

    称为Gauss-Lagurre公式。其中结点为次Lagurre多项式的零点,下表列出Gauss-Lagurre公式的结点和系数。

               

    0

    1.0000000

    1.0000000

     

     

    0.2635603

    1.4134031

    0.52175556

    0.3986668

    1

    0.5857864

    3.4142135

    0.8535533

    0.1464466

    4

    3.5964258

    7.0858100

    12.6408008

    0.0759425

    0.00361176

    0.00002337

    2

    0.4157746

    2.2942804

    6.2899451

    0.7110930

    0.2785177

    0.0103893

    5

    0.2228466

    1.1889321

    2.9927363

    0.4589647

    0.4170008

    0.1133734

    3

    0.3225477

    1.7457611

    4.5366203

    9.3950710

    0.6031541

    0.3574187

    0.0388879

    0.0005393

     

    5.7751436

    9.8374674

    15.9828740

    0.1039920

    0.000261017

    0.0000008985

     

     

    转载于:https://www.cnblogs.com/wander-clouds/p/9949154.html

    展开全文
  • 26.高斯求积公式

    2020-06-13 23:04:31
  • 1. Guass型求积公式 定义1:在区间[a,b][a,b][a,b]内,如果由节点x0,x1,⋯ ,xnx_0,x_1,\cdots,x_nx0​,x1​,⋯,xn​构造的插值型求积公式 ∫abf(x)dx≅∑k=0nAkf(xk) \int_a^b f(x)dx \cong \sum_{k=0}^nA_k f(x_k)...
  • 高斯求积公式 matlab

    千次阅读 2018-11-12 21:14:00
    1. 分别用三点和四Gauss-Chebyshev公式计算积分 并与准确积分值2arctan4比较误差。若用同样的三点和四Gauss-Legendre公式计算,也给出误差比较结果。 2*atan(4) ans = 2.6516 Gauss-Chebyshev: ...
  • 复合梯形公式的提出: 1.首先,什么是梯形公式: 梯形公式表明:f(x)在[a,b]两点之间的积分(面积...但高次的缺陷是当次数大于8次,求积公式就会不稳定。因此,我们用于数值积分的牛顿-科特斯公式通常是一次的梯形...
  • 复合辛普森求积公式原理Simpson's rule is a method for numerical integration. In other words, it's the numerical approximation of definite integrals. 辛普森法则是一种数值积分方法。 换句话说,它是定积分...
  • 3. 求积公式的代数精度 求积公式的精度可以用余项R来表示,即: ∫abf(x)dx=∑k=0nAif(xi)+R \int_a^bf(x)dx=\sum_{k=0}^nA_if(x_i)+R ∫ab​f(x)dx=k=0∑n​Ai​f(xi​)+R 一般地,R越小,表明求积公式的精度越高。...
  • 高斯-勒让德求积公式及Matlab实现

    万次阅读 多人点赞 2018-03-08 18:03:26
    微分实际上是一函数的导数,而积分是已知一函数的导数,这一函数。所以,微分与积分互为逆运算。实际上,积分还可以分为部分。第一种,是单纯的积分,也就是已知导数原函数,称为不定积分。相对而言,另一种...
  • 高斯-勒让德求积公式

    千次阅读 2012-04-17 07:38:44
    function quad=gauss(f,a,b,A,W) %Input - f is the integrand % - a and b upper and lower limits of integration % - A is the 1 x N vector of abscissas from Table 7.9...数值分析代码~~~高斯-勒让德求积公式
  • 将区间n等分,每个小区间分别用梯形公式个节点)积分,化简得到如上公式。 /** *@name Cotes:复化梯形公式 *@param1 below:区间下限 *@param2 upper:区间上限 *@param3 n:划分子区间的个数 **/ double...
  • 在Newton-Leibnitz公式应用受到限制时,可以用数值方法构造计算公式,即所谓的数值积分方法来解决定积分的计算问题。 表格函数,如某个微分方程的解不能用解析方法解出,而用数值方法给出的解是表格函数 被函数f...
  • ----------------------个人作业,... ··复合抛物线公式: ··龙贝格公式: 四、实验内容 ------1 实验题目1中所用到的三种算法的matlab实现代码具体如下: %复合梯形公式 function y=funct...
  • 数学----向量点积公式推导

    万次阅读 2019-03-10 09:52:01
    向量的点积种形式的定义,代数定义和几何定义。 一 几何定义: 向量点积:a·b=|a||b|cosα 注意:该定义只对2维3维空间有效。 二 代数定义: 设二维空间内有个向量和,定义它们的数量积(又叫内积、...
  • 通过余弦定理从点积的定义推出点积公式 首先证明余弦定理: 有边为a,b,c,对应夹角为a_angle,b_angle,c_angle 分别从定点向对应边作对角线可以发现如下关系成立: (1) a=b*cos c_angle + c * cos b_angle (2
  • 已知两点经纬度计算球面距离的公式,一搜一大堆,形式如下: 可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图1),要不然空间想象能力差的话容易犯糊涂。首先对图1做个大致的...
  • 球坐标系下的两点距离公式

    万次阅读 2018-10-26 11:00:05
    已知两点经纬度计算球面距离的公式,一搜一大堆,形式如下: 可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图1),要不然空间想象能力差的话容易犯糊涂。首先对图1做个大致的...
  • 自适应步长复化求积可以根据精度确定需要二分的次数,本文给出了详细的matlab实现代码。
  • 离教师资格证考试已经过去5天,... 记得其中一题是证明[一元三次方程中p能整除8,q能整除3],一题是[给出方程组求解立体椭圆的长半轴和短半轴],另一题就是[用向量数量推导角差余弦公式]。最后一题教学设计题,
  • 微分求积:复化梯形、复化辛浦生

    千次阅读 2016-01-12 12:15:52
    复化梯形 将积分区间[a,b]划分n等分,步长,积节点,在每个小区间上应用梯形公式 ...式为复化梯形求积公式,下标n表示将区间n等分。 算法流程  算法代码 [cpp] view plaincopy d
  • 已知两点坐标要求其到原点连线的夹角, 那么我们可以用向量去做, 用向量的除以向量模的乘积,在其反函数, 然后转换为角度就可以知道其角度为多少了; 向量的模的乘积怎么算: sqrt(x^2+y^2); 向量的乘积 x1*...
  • 【数值分析】微分求积:复化梯形、复化辛浦生

    万次阅读 多人点赞 2013-02-17 14:19:04
    本科课程参见:《软件学院那些课》 复化梯形 将积分区间[a,b]划分n等分,步长,...式为复化梯形求积公式,下标n表示将区间n等分。 算法流程 算法代码 double f(double x){ if(x==0) return 1; else r...
  • Matlab guass-legendre求积代码

    千次阅读 2020-11-06 23:07:49
    Matlab guass-legendre求积代码勒让德公式(legendre)高斯零点xk取高斯-勒让德求积代码例题完整代码 勒让德公式(legendre) 高斯零点xk取 Pn(x_) = 1./double( (2.^n_ * prod(1:n_)) )*diff( (x_.^2-1)^n_, n...
  • 化和差公式记忆口诀

    万次阅读 2019-07-17 15:29:37
    化和差 和差化积 数学基础知识

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,754
精华内容 14,301
关键字:

两点求积公式