|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB源程序代码分享:MATLAB梯形法求离散数据点的数值积分
7 g; Q. x, R& {* @' I; O8 s%% MATLAB trapz 函数, 使用梯形法, 求解离散数据点的数值积分
5 O% g& P* w. L& e2 l! \ v+ [clear;clc;close all
/ e0 X, ]8 G6 l* ?8 w5 w3 k8 yx=[-3 -1 0.5 2 3 6 7.5]; % 离散数据点的横坐标 x
4 ]: m. A _$ `& ry=[1 2 5 5.5 1.5 3 1]; % 离散数据点的纵坐标 y4 y7 E" ?. B- J" @1 _5 _! M
Q=trapz(x,y) % 计算积分结果:离散数据点所连成的折线与 x 轴所围面积
}# k1 |. J- d
1 A* C! E/ n9 w6 |# n# k%% 动画演示, 梯形法求解数值积分的计算过程
5 l8 ]: R O, W! g& p" Gplot(x,y,'*','MarkerSize',10,'Color',[0.2 0.7 0.2]) % 绘制离散的数据点
- ^6 }& d8 j( u& b. Daxis([-4 8 0 6])
( P. K! c/ O/ @6 u* pxlabel('横坐标 x')) ]6 Q9 A5 F- i- k/ \ Q
ylabel('纵坐标 y')
8 P+ ~% B. `% etitle('梯形法求解数值积分的动画演示')3 S7 R0 `7 L9 u8 Y3 v
hold on4 b4 |& G- M# ]( o4 L2 J" O: E
3 j$ p, f( n1 G7 T5 w
for k=1:length(x)-1
8 p/ r7 T$ _4 |8 R4 q! C# C pause(1)
+ b7 _" W- `8 `' l/ K4 {3 f plot(x(k:k+1),y(k:k+1),'--','LineWidth',2,'Color',[0.3 0.7 1]) % 将离散的数据点, 使用直线依次相连# O- N) f& P- i6 h7 M) L
end
. u* _- M; G0 v2 L* m- _
' V5 z% ~( \9 f% n: R+ U: V$ jfor k=1:length(x)
" |3 ~) j% e/ O pause(1)
# m* V% M, }' ^9 v# C% ?! c plot([x(k) x(k)],[0 y(k)],'--','LineWidth',2,'Color',[0.5 0.2 0.6]) % 绘制各离散数据点与横轴的垂线, 得到各个小梯形
4 ?; m- Q1 @: H4 M& jend
2 G- ~% T2 G3 G- o
- Q0 W) H L" c: u6 Zfor k=1:length(x)-10 S! Q* m, i+ H( c7 h4 i( A! J1 I
pause(1)
2 o3 W* ]6 a% |. B patch([x(k) x(k) x(k+1) x(k+1)],[0 y(k) y(k+1) 0],[1 0.8 0.1]) % 依次给每一个小梯形面积着色, 表示各个小梯形面积的求和过程
# J% `: Z, l h' Oend% r1 j' X# D Y5 _" o
! P6 v0 V+ F; D
|
|