2017-09-16 91 views
0

我的教授希望我使用matlab采用梯形法则来近似v=-300*t.^2+2700*tt=[0:dt:9]dt=0.1的面积。我不允许使用功能trapz无法使用梯形法则得到正确结果

我尝试使用

v1=v(1:end-1) 
v2=v(2:end) 
x_total=1/2*range(t)*dt*sum(v1+v2) 

,但最终与

x_total = 

3.2801e+05 

这是隔靴搔痒的36450

的实际面积。此外,我手动计算的子区间10梯形规则得到36085.5。

我在做什么错?

回答

1

梯形公式不涉及范围(t)。步长dt已经反映了间隔的长度。这样,使用

0.5*dt*sum(v(1:end-1) + v(2:end)) 
+0

哇,我不能相信正是问世我错过了。谢谢! – user125918

0

面积的曲线下,如果我记错是f的黎曼和(X)从x = a0至X = A1,其大致等于该矩形区域的总和与一段时间。 Sooo ...

sum(v(:) .* dt) 

这同样出现在同一个答案作为另一个家伙。

对不起,我有一个快速约会,四十了,烟雾有....

哎呀,是我不好。如果答案是相同的,那么下面的结果将为零。

sum(v(:) * dt) - 0.5*dt*sum(v(1:end-1) + v(2:end)) = 7.27596e-12 

所以,我比较了答案: Answer_A = 36450 - 0.5 * dt的总和*(V(1:结束-1)+ V(2:结束)); Answer_B = 36450 - sum(v(:) * dt);

% Answer_X defines the difference from the truth 
% If Answer_A < Answer_B 
% "0.5*dt*sum(v(1:end-1) + v(2:end))" is closer to truth 
% elseif Answer_A > Answer_B 
% "sum(v(:) * dt)" is closer to truth 

Answer_A < Answer_B resolves false 
Answer_A > Answer_B resolves true 

我会去我的答案,除非有一个问题,如果这是不正确的。也许上述是不必要的,考虑到解决方案之间的差异出现在正数上,而从另一个中减去我的。

sum(v(:) * dt 

我希望看到你的作品,像图片什么的,找在那里你可能已经错得36085.5

而且,这里是trapz路径。我知道你不能使用它,但该文件是纯文本ascii点米。然后,您可以了解matlab如何实现它,并根据需要使用相关部分。

${MATLAB_APP_PATH}/toolbox/matlab/datafun/trapz.m 

可疑作弊是我的游戏:)

此外,该功能trapz()似乎与平均(Answer_A + Answer_B)/ 2