matlab实现数值积分 【一】(trapz函数)

总述

  数值积分问题是传统数值分析课程中的重要内容。如果被积函数的数学表达式未知,则需要由实测数据通过梯形算法求出积分的近似值。本文将介绍被积函数的数学表达式未知时数值积分问题的求解方法,即已知数据点求积分
在这里插入图片描述

函数调用格式

S = trapz(x, y);

应用举例

例1:梯形法求积分

在这里插入图片描述

x = [0:pi/30:pi]';  
y = [sin(x) cos(x) sin(x/2)];
S = trapz(x,y)

结果为:S = [1.9982 0.0000 1.9995]

由于选择的步距较大,为 h = π / 30 = 0.1 h=\pi/30 = 0.1 hπ30=0.1 , 故得出的结果有较大的误差。其实可以将积分问题与样条插值技术相结合,给出 一 个能精确计算积分的MATLAB函数。(待补充)

例2:不同步长对积分结果的影响

题目: 用定步长法求解积分 ∫ 0 3 π 2 c o s 15 x d x \int_0^{\frac{3\pi}{2}}{cos15xdx} 023πcos15xdx,并讨论不同步长对积分值的影响。

  • 首先,绘制被积函数的图像:
x=[0:0.01:3*pi/2, 3*pi/2];  % //这样赋值能确保 3*pi/2 点被包含在内
y=cos(15*x); plot(x,y)  

在这里插入图片描述
由图像观察出在求解区域内被积函数有很强的振荡。

  • 对不同的步距 h = 0.1 , 0.01 , 0.001 , 0.0001 , 0.00001 , 0.000001 h= 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001 h=0.1,0.01,0.001,0.0001,0.00001,0.000001 ,可以用下面的语句求出采用不同步长的积分近似结果。
syms x, A=int(cos(15*x),0,3*pi/2) % //求取理论值为1/15
h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; v=[]; 
for h=h0
	x = [0:h:3*pi/2, 3*pi/2];  y=cos(15*x); 
	I = trapz(x,y); 
	v = [v; h,I,A-I]; 
end 

得出结果如下:

在这里插入图片描述

可见,随着步距 h h h的减小,计算精度逐渐增加。

  • 36
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

weixin_43964993

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

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

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

打赏作者

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

抵扣说明:

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

余额充值