2017-09-16 93 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