您的功能:
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...
。
你的問題是什麼?你試過什麼了?請參考[問] – Suever
你的三個步驟聽起來足夠合理。在三個步驟中,哪一個會遇到問題,特別是? – Florian