精华内容
下载资源
问答
  • 包含代码和文档 采用复化梯形公式复化辛普森公式求积分,并与精确值进行比较得下表。 采用复化梯形公式复化辛普森公式求积分,并与精确值进行比较得下表。
  • 一、复化梯形公式求积分 题目: 利用复化梯形公式计算 I(f)=∫15sinxxdxI(f) = \int_1^5{\frac{sinx}{x}dx}I(f)=∫15​xsinx​dx 的近似值,精确至7位有效数字。 Matlab程序: clc; clear all syms x %% 已知条件 ...

    一、复化梯形公式求积分

    1.1 题目

    利用复化梯形公式计算
    I ( f ) = ∫ 1 5 s i n x x d x I(f) = \int_1^5{\frac{sinx}{x}dx} I(f)=15xsinxdx
    的近似值,精确至7位有效数字。

    1.2 程序

    clc; clear all
    syms x 
    
    %% 已知条件
    Fx(x) = sin(x)/x;
    a = 1;
    b = 5;
    epsilon = 5e-8;
    e = 1;
    T = []; % 存放Tf的值
    h = b-a;
    Xk1 = [a, b];  % 存放已选的 xk
    Xk2 = [];      % 存放将要使用的 x(k+1/2)
    sumfx = 0;     % sum( fx(k+1/2) )
    
    %% 计算
    digits(8)
    format long
    k = 0;
    Tf = vpa( b - a ) / 2 * ( Fx(a) + Fx(b) );
    T = [T, Tf];
    fprintf('k=%d, 2^k=%d, Tk=%0.8f\n',k,2^k,Tf) 
    
    while(e>epsilon)
        for i=1:length(Xk1)-1
            temp = ( Xk1(i) + Xk1(i+1) ) / 2;
            sumfx = sumfx + Fx(temp);
            Xk2 = [Xk2,temp];
        end
        Xk1 = [Xk1,Xk2];
        Xk1 = sort(Xk1);
        
        k = k + 1;
        Tf = vpa( 0.5 * ( Tf + h * sumfx ) );
        T = [T, Tf];
        e = abs(Tf - T(end-1))/3;
        fprintf('k=%d, 2^k=%d, Tk=%0.8f, e=%0.8f\n',k,2^k,Tf,e) 
        
        % 更新值
        h = h / 2;
        sumfx = 0;
        Xk2 = [];
    end
    
    If = Tf;
    fprintf('复化梯形求积公式的结果为:%0.8f\n',If)
    

    1.3 运行结果

    在这里插入图片描述

    二、复化梯形公式求二重积分

    2.1 题目

    (1)给定积分 I ( f ) = ∫ c d ( ∫ a b f ( x , y ) d x ) d y I(f)=\int_{c}^{d}\left(\int_{a}^{b} f(x, y) \mathrm{d} x\right) \mathrm{d} y I(f)=cd(abf(x,y)dx)dy,取初始步长 h h h k k k及精度 ε \varepsilon ε,应用复化梯形公式,采用逐次二分步长的方法并应用外推思想编制计算 I ( f ) I(f) I(f)的通用程序,计算至相邻两次近视值之差的绝对值不超过 ε \varepsilon ε为止;

    (2)用所编程序计算积分 I ( f ) = ∫ 0 π / 6 ( ∫ 0 π / 3 tan ⁡ ( x 2 + y 2 ) d x ) d y I(f)=\int_{0}^{\pi / 6}\left(\int_{0}^{\pi / 3} \tan \left(x^{2}+y^{2}\right) \mathrm{d} x\right) \mathrm{d} y I(f)=0π/6(0π/3tan(x2+y2)dx)dy
    ε = 1 2 × 1 0 − 5 \varepsilon=\frac{1}{2} \times 10^{-5} ε=21×105

    2.2 程序

    2.2.1 二重积分通用程序

    function[result] = trapezoid(a,b,c,d,F,epsilon)
        %% 初值条件
        T0 = [];  % 存放Tm,n(f)
        T1 = [];  % 存放T(1)m,n(f)
        T2 = [];  % 存放T(2)m,n(f)
        T3 = [];  % 存放T(3)m,n(f)
    
        m = 1;  % 将[a,b] m等分
        n = 1;  % 将[c,d] n等分; 注:虽然这里m与n相等,但分开计算。
        h = (b - a) / m;  % x的步长
        k = (d - c) / n;  % y的步长
        xx = [a,b];
        yy = [c,d];
        e = 1; % 误差
    
        %% 计数位
        count = 0;
        T0_count = 0;
        T1_count = 0;
        T2_count = 0;
        T3_count = 0;
    
        %% 计算
        digits(10)
        T =  h * k  / 4 * ( F(xx(1),yy(1)) + F(xx(1),yy(2)) + F(xx(2),yy(1)) + F(xx(2),yy(2)) )   ;
        T0 = [T0, T];
        T0_count = T0_count + 1;
        count = 1;
        fprintf('k=%d, 2^k=%d, T0=%0.8f\n',count,2^count,T) 
    
        while(e>epsilon)
            m = 2 * m;
            n = 2 * n;
            h = (b - a) / m;
            k = (d - c) / n;
    
            % 计算x、y的取值
            xx = [a];  % 暂时只存入左边值
            yy = [c];  % 暂时只存入左边值
            for i = 1:m
                temp = a + i * h;
                xx = [xx,temp];
            end
            for j = 1:n
                temp = c + j * k;
                yy = [yy,temp];
            end
    
            % 计算T0
            T = 0;
            for i = 1:m
                for j = 1:n
                    T = T + vpa( h * k /4 * (F(xx(i),yy(j)) + F(xx(i),yy(j+1)) + F(xx(i+1),yy(j)) + F(xx(i+1),yy(j+1)) ) );
                end
            end
            T0 = [T0,T];
            T0_count = T0_count + 1;
            count = count + 1;
            fprintf('k=%d, 2^k=%d, T0=%0.8f',count,2^count,T) 
    
            % 计算T1
            if T0_count - T1_count == 2 && T0_count >= 2
                temp = 4 / 3 * T0(end) - 1 / 3 * T0(end-1);
                T1 = [T1,temp];
                T1_count = T1_count + 1;
                fprintf(', T1=%0.8f',T1(end)) 
            end
    
            % 计算T2
            if T1_count - T2_count == 2  && T1_count >= 2
                temp = 4 / 3 * T1(end) - 1 / 3 * T1(end-1);
                T2 = [T2,temp];
                T2_count = T2_count + 1;
                fprintf(', T2=%0.8f',T2(end)) 
            end
    
            % 计算T3
            if T2_count - T3_count == 2  && T2_count >= 2
                temp = 4 / 3 * T2(end) - 1 / 3 * T2(end-1);
                T3 = [T3,temp];
                T3_count = T3_count + 1;
                fprintf(', T3=%0.8f',T3(end)) 
            end
    
            if T3_count >= 2
                e = T3(end) - T3(end-1);
                fprintf(', e=%0.8f',e) 
            end
            fprintf('\n') 
        end
        fprintf('复化梯形二重积分求积公式的结果为:%0.8f\n',T3(end))
        result = T3(end);
    end
    

    2.2.2 主函数程序

    clc; clear;
    
    syms x y
    F(x,y) = tan(x^2 + y^2);
    a = 0;
    b = pi/3;
    c = 0;
    d = pi/6;
    epsilon = 0.5e-5;
    
    result = trapezoid(a,b,c,d,F,epsilon);
    

    2.3 运行结果

    在这里插入图片描述

    展开全文
  • matlab中利用复化梯形公式复化simpson公式实现积分运算,对于数值计算类课程很有帮助。
  • 计算定积分,在函数体中修改函数名和上下限以及误差精度。 matlab程序m文件。
  • 复化梯形公式求二重积分matlab源码

    千次阅读 2020-06-08 13:11:05
    复化梯形公式求二重积分matlab源码 %%%%%%%%%% 2020.6.5 %%%%%%%%% %%%%%%%%%%复化梯形公式求二重积分%%%%%%%%%%%%%%%%%%% Liu Deping %%%%%%%%%clear all;%%%被积函数及积分上下限导入;s=input('请输入函数表达式...

    复化梯形公式求二重积分matlab源码

    这段代码具有很好的交互性和通用性,将代码复制到matlab编辑器之后,按照提示操作即可。傻瓜式操作,结果一目了然~

    %%%%%%%%%%     2020.6.5        %%%%%%%%%
    %%%%%%%%%%复化梯形公式求二重积分%%%%%%%%%
    %%%%%%%%%%     Liu Deping      %%%%%%%%%
    clear all;
    %%%被积函数及积分上下限导入;
    s=input('请输入函数表达式:f = ','s');
    f=inline(s);
    a = input('请输入积分变量x左边界a的值:');
    b = input('请输入积分变量x右边界b的值:');
    c = input('请输入积分变量y左边界c的值:');
    d = input('请输入积分变量y右边界d的值:');
    h1 = input('请输入积分变量x步长h1的值:');
    h2 = input('请输入积分变量y步长h2的值:');
    m=round((b-a)/h1);
    n=round((d-c)/h2);
    %%%系数矩阵T,t[i,j]为复化梯形公式的系数;
    TT=zeros(m+1,n+1);
    TT(1,1)=1;
    TT(m+1,1)=1;
    TT(1,n+1)=1;
    TT(m+1,n+1)=1;
    for i=2:m
        TT(i,1)=2;
        TT(i,n+1)=2;
    end
    for j=2:n
        TT(1,j)=2;
        TT(m+1,j)=2;
    end
    TT(TT==0)=4   %%系数表
     
    %%%计算各二维节点函数值,并存放于矩阵F中;
    F=zeros(m+1,n+1);
    for i=0:m
        for j=0:n
          F(i+1,j+1)=f(a+i*h1,c+j*h2);    
        end
    end 
     
    %%%结果输出;
    format long;
    fprintf('各节点函数值;')
    F
    fprintf('复化梯形公式计算结果;')
    Tnm=(b-a)*(d-c)/(4*m*n)*sum(sum(TT.*F))
    
    

    之后还有辛普森公式求二重积分,希望喜欢的小伙伴持续关注篱落~~成殇~~

    展开全文
  • PAGE PAGE 1 分别用复化梯形公式复化Simpson公式计算定积分取n=2,4,8,16分别验证结果精确值I=4.006994 复化梯形公式求积分: function I=tquad(x,y) %复化梯形积公式其中 %x为向量被积函数自变量的等距结点 %y为...
  • 2 分别用复化梯形公式复化 Simpson 公式计算定积分 1+ ex dx 取 n=2,4,8,16 0 分别验证结果精确值I=4.006994 复化梯形公式求积分: function I=tquad(x,y) %复化梯形积公式其中 %x 为向量被积函数自变量的等距...
  • 数值分析实验报告 [1] 掌握复化梯形和辛普森数值积分法的基本... 编程序实现复化梯形数值积分求公式 function y=f(x) y=sqrt(x*log(x; 实 验 function T_n=F_H_T(a,b,n) 内 h=(b-a)/n; for k=0:n 容 x(k+1)=a+k*h; 与
  • %复化梯形积分公式matlab function [Integ] = Trape(fun,N,a,b) %----fun为需要被积分的syms型函数----% %----a和b为区间的起、终点-----------% %----N把区间(a,b)分成N等分----------% syms x; h = (b-a)/N;%-----...
    %复化梯形积分公式matlab
    function [Integ] = Trape(fun,N,a,b)
    %----fun为需要被积分的syms型函数----%
    %----a和b为区间的起、终点-----------% 
    %----N把区间(a,b)分成N等分----------%
    h = (b-a)/N;%----------------------h为步长
    y = zeros(1,N+1);%-----------------预分配y
    inte = zeros(1,N);%预分配每个小区间的积分值
    for i = 0:N
        y(i+1) = double(subs(fun,(a+i*h)));%-每个y值
    end
    for j = 0:N-1
        inte(j+1) = (y(j+1)+y(j+2))*h/2;%----计算积分
    end
    Integ = sum(inte);

     

    展开全文
  • . 数值分析实验报告 实 [1] 掌握复化梯形和辛普森数值积分法的... 编程序实现复化梯形数值积分求公式 function y=f(x) y=sqrt(x*log(x; 实 验 function T_n=F_H_T(a,b,n) 内 h=(b-a)/n; 容 for k=0:n 与 x(k+1)=a+k
  • 复合梯形公式求积分

    2018-10-19 12:47:33
    数值计算积分,利用复合梯形公式求积分,计算结果误差较小
  • MATLAB 复化梯形公式复化Simpson公式

    千次阅读 2021-05-20 10:53:18
    复化梯形公式 Tn.m文件: function Tn=Tn(n) % n代表区间数 a = -2; % 区间下界 b = 2; % 区间下界 h=(b-a)/n; sum=0; for k=1:n-1 sum=sum+f(a+k.*h); end Tn=(f(a)+2*sum+f(b))*h/2; end 复化Simpson...

    在这里插入图片描述

    在这里插入图片描述
    f.m文件:

    function f = f(x)
    f = (x^2)*sin(x);
    end
    

    复化梯形公式

    Tn.m文件:

    function Tn=Tn(n) % n代表区间数
        a = -2; % 区间下界
        b = 2; % 区间下界
        h=(b-a)/n;
        sum=0;
        for k=1:n-1
            sum=sum+f(a+k.*h);
        end
     
        Tn=(f(a)+2*sum+f(b))*h/2;
    end
    
    

    复化Simpson公式

    Sn.m文件:

    function Sn = Sn(n)      
        a = -2;
        b = 2;
        h = (b-a)/n;
        sum1 = 0;
        sum2 = 0;
        for i = 0:n-1
            sum1 = sum1 + f(a+(i+1/2).*h);
        end
        for j = 1:n-1
            sum2 = sum2 + f(a+j.*h);
        end
        Sn = h/6*(f(a)+4*sum1+2*sum2+f(b));
    
    
    展开全文
  • matlab 复合梯形求公式,.M文件,可直接运行出结果。
  • 复化梯形求积算法

    2018-09-04 12:06:05
    复化梯形求积算法
  • matlab复化simpson公式计算积分程序,用函数调用的方法实现的。
  • C++入门程序,用复合梯形公式求积分的运算。也可以进行简单的数值计算,对于自己没办法计算的积分可以运用该计算公式。
  • Matlab实现复化求公式梯形

    千次阅读 2021-07-05 16:21:50
    实验条件 算法设计 实验用例 实验要求 代码实现 a=0; b=3.14159265358979323846; %disp(b); %b的输出是3.1416; n=1;%刚刚开始是1等分 h=(b-a)/n; w=10^(-6); t1=(h/2)*(exp(a)*cos(a)+exp... x=a+(((2*i-1)*h)/2)
  • matlab代码
  • 这是运行之后的错误截图,出现两个错误一个错误使用sym/subsasgn,一个是comtrapz21函数出错 这是调用的函数
  • (1)设计复化梯形公式求积算法,编制并调试相应的函数子程序 (2)设计复化辛卜生积算法,编制并调试相应的函数子程序 (3)用龙贝格算法计算 输入:积分区间,误差限 输出:序列Tn,Sn,Cn,Rn及积分结果(参考...
  • n T_n = C_t_r(f,n,a,b) %f为函数,n为精度,a,b为区间端点 h=(b-a)/n; %f=sqrt(x); for i=0:n x(i+1)=a+ih; end T_1=h/2(1+f(b)); T_2=0; for j=2:n F(j)=h*f(x(j)); T_2=T_2+F(j);......
  • 数值方法中用复合积分公式求积分,c++编码,已调试成功。
  • 这是一段复化梯形法和辛普森数值积分matlab实现程序。
  • 文件中包含了4种数值积分方法,分别是复化梯形法,复化辛普森法,龙贝格法,三点高斯公式,对于求解复杂函数的积分问题很有帮助。是学习计算方法和数值积分的好代码。
  • 复化simpson公式计算定积分matlab程序实现,需要输入积分函数、上下限和所分步数,希望能对大家的学习有帮助。
  • 采用复合梯形公式与复合辛普森公式,计算 sin(x)/x 在[0, 1]范围内的积分。采样点数 目为 5、9、17、33。
  • 习题七 10.1 import numpy as np k=np.arange(0,9) xi=np.arange(0,1.1,0.125) yi=xi print(k) print(xi) for x in range(0,9): yi[x]=xi[x]/(1+xi[x]**2) print(yi) ... ans=ans+yi[...
  • MATLAB程序实现复化梯形和辛普森数值积分
  • 复化梯形算法可以实现复化求积,求解定积分问题
  • 分别输入所积分的上下限,算法实现梯形公式计算定积分的近似值。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 578
精华内容 231
关键字:

matlab复化梯形公式求积分

matlab 订阅