2017-01-27 69 views
-1

因此,這裏是我試圖在Matlab解決的問題,Matlab的調用函數

確定所計算的結果改變ΔX爲二階導數,對於函數f的效果(X)= 5 + 10× - 4x^2 + 6x^3。二階導數應在x = 1時確定。使用matlab,計算x = 1時的二階導數,Δx= 0.5,0.1,0.05和0.01。比較28

的精確值獲得的結果,因爲我是用Matlab新手這裏是我想要做的步驟,

1)詢問用戶德爾X

2的輸入)第二個導數方程式是[f(x + del x)-2f(x)+ f(x-del x)] /(del x)^ 2因爲x = 1,我基本上想要在二階導數方程中調用f(x)eqn(在上面的聲明中給出),並根據del x的輸入求解

我也希望將所有的簽名圖,因爲我們比較28預計爲〜計算值28.0000001

+1

你的問題是什麼?你試過什麼了?請參考[問] – Suever

+0

你的三個步驟聽起來足夠合理。在三個步驟中,哪一個會遇到問題,特別是? – Florian

回答

2

您的功能:

f = @(x) 5 + 10*x - 4*x.^2 + 6*x.^3; 

1)詢問用戶的del x輸入

dx = input('Enter Value for del x: ') 

2)第二個衍生物方程是[f(x+del x)-2f(x)+f(x-del x)]/(del x)^2

d2fdx2 = @(x) (f(x + dx) - 2 * f(x) + f(x - dx)) ./ (dx^2); 

我已經包含了元素明智的運算符(./),因此您可以輸入向量。

3)由於x=1,我基本上想要在二階導數方程中調用f(x)方程,並根據del x的輸入求解。

您可以評估在任何時候這些功能,你希望:

f(1) 
% ans = 17 

% When dx = 0.5, 
d2fdx2(1) 
% ans = 28 

把所有這些組合起來:

dx = input('Enter Value for del x: ') 
f = @(x) 5 + 10*x - 4*x.^2 + 6*x.^3; 
d2fdx2 = @(x) (f(x + dx) - 2 * f(x) + f(x - dx)) ./ (dx.^2); 

% Long decimal expansion 
format long 

% Evaluate result 
d2fdx2(1) 

雖然給了你的問題,我不知道你實際上需要用戶輸入?該方法/實施似乎已經在這些價值觀的一些有趣的不穩定

clear;clc; 

k = 1; 
derivatives = zeros(4,1); 

f = @(x) 5 + 10*x - 4*x.^2 + 6*x.^3; 

for dx = [0.5, 0.1, 0.05, 0.01] 

    d2fdx2 = @(x) (f(x + dx) - 2 * f(x) + f(x - dx)) ./ (dx^2); 
    derivatives(k) = d2fdx2(1); 
    k = k + 1; 

end 

% derivatives = [28.000000000000000 
%    28.000000000000107 
%    28.000000000000107 
%    28.000000000041325] 

注意,因爲你會想到它是較小dx更準確:如果它只是爲你指定的值,你可以這樣做。例如,如果您以dx=0.5開頭並重復一半,答案仍然爲28.000...