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

博客主要介绍了利用复化梯形公式求积分和二重积分。包括求积分I(f)=∫15xsinxdx的近似值,精确至7位有效数字;还给出求二重积分的通用程序,采用逐次二分步长和外推思想,计算至相邻两次近似值之差绝对值不超给定精度,如计算I(f)=∫0π/6(∫0π/3tan(x2+y2)dx)dy。

一、复化梯形公式求积分

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)给定积分

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天边星宿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值