|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB源程序代码分享:MATLAB梯形法求离散数据点的数值积分
+ n, W1 E: S, I8 y3 l9 }%% MATLAB trapz 函数, 使用梯形法, 求解离散数据点的数值积分8 y Z/ ~, k6 [+ ]
clear;clc;close all2 \8 o& o8 o1 T( H G* ^3 q$ r
x=[-3 -1 0.5 2 3 6 7.5]; % 离散数据点的横坐标 x: q! M2 p G' ~' f8 G( ~- e
y=[1 2 5 5.5 1.5 3 1]; % 离散数据点的纵坐标 y
1 _; R. B/ F0 f% ?4 [Q=trapz(x,y) % 计算积分结果:离散数据点所连成的折线与 x 轴所围面积
1 F8 h8 O* b- F$ y0 M! k2 i8 ^) Q. E$ G1 B6 r4 n
%% 动画演示, 梯形法求解数值积分的计算过程
7 f* _5 o) j1 K8 H* ?; Q7 Zplot(x,y,'*','MarkerSize',10,'Color',[0.2 0.7 0.2]) % 绘制离散的数据点( x0 t5 `* R& A8 C# i2 P% A5 L
axis([-4 8 0 6])
" _7 X8 J+ ?2 x9 u/ s8 u& xxlabel('横坐标 x')+ o/ h) I4 G$ _9 G% l: b, Y
ylabel('纵坐标 y'): I4 d* j& L5 h+ E4 L: M
title('梯形法求解数值积分的动画演示')
+ k/ d1 I+ J, u6 C" h: [hold on9 z& F1 r# V& ?+ t' f
/ ^& {. `% l, y/ pfor k=1:length(x)-1 ?/ T' Z1 j$ J$ C! k, v
pause(1)
4 ^6 r2 l4 Z! f2 \$ l plot(x(k:k+1),y(k:k+1),'--','LineWidth',2,'Color',[0.3 0.7 1]) % 将离散的数据点, 使用直线依次相连
) L* t8 x4 j2 Gend
" d8 X0 {( O& h! R% S( N
4 i4 q% e5 v9 u% @$ m5 Ffor k=1:length(x)
7 c! o, V' M ~) _ pause(1)
0 `& M8 h, \9 N3 C4 b plot([x(k) x(k)],[0 y(k)],'--','LineWidth',2,'Color',[0.5 0.2 0.6]) % 绘制各离散数据点与横轴的垂线, 得到各个小梯形! y) E# e2 q+ m! Z3 F
end
3 `1 ?1 y! h; }# h D& b' D m7 V2 s
for k=1:length(x)-1
1 Y ?8 B, g, X pause(1)
' D# D: K( G: r! C' m! ? patch([x(k) x(k) x(k+1) x(k+1)],[0 y(k) y(k+1) 0],[1 0.8 0.1]) % 依次给每一个小梯形面积着色, 表示各个小梯形面积的求和过程/ b" @) ~0 n% A/ \! G
end) `, u- E' `2 p! k
' e- i, `; B; j. u/ D
|
|