2013-04-16 35 views
0

我需要在matlab中編寫for循環來解決使用前向差分方法的導數。使用0.25的步長從0到10導出的函數是10 + 15x + 20x^2。我一直在使用Matlab微分

h=.25; 
x=[0:h:10]; 
y = 10+15*x+20*x.^2; 
y(1) = 45; size(x) 
for i=2:47,  
     y(i) = y(i-1) + h*(15+40*x); 
end 
+0

你做到了。所以呢?首先'x'是41個元素長。爲什麼你把47放在你的循環中?你也應該把'x(i)',而不僅僅是'x'。 – anandr

+0

但在任何情況下,這都是**不是**轉發差異 - 請參閱[http://en.wikipedia.org/wiki/Finite_difference](http://en.wikipedia.org/wiki/Finite_difference)。因爲這是前向差異,所以不能使用預先計算的導數,只應使用原始函數。 – anandr

+0

與47錯誤。但是當我做了這些改變,你告訴我它吐出[1 41]的矩陣。這是我應該期待的嗎? – Trevor

回答

1

我願意做這樣的嘗試,作爲一個開始,

h=.25; 
x=[0:h:10]; 
y = 10+15*x+20*x.^2; 
diff(y)./diff(x) 

,或者作爲替代,

syms x; 
y = 20.*x.^2 + 15.*x + 10; 
dy = diff(y,1); 
h=.25; 
xx=[0:h:10]; 
res = subs(dy,xx);