所以我試圖編寫一個函數,將實施切線方法爲函數(f),將由用戶輸入並將每次迭代的結果添加到矢量。我收到一個錯誤,指出x是未定義的,這是可以理解的,但我不確定如何定義它。我試圖以f的參數可以是x的函數的方式編寫它,例如。 x^3 +12,而不是單獨的函數文件的名稱。Matlab - 用戶定義的函數作爲函數的參數
function [xans, xi, iter] = secant(f, x0, x1, tol)
k = 1;
a = x0;
b = x1;
c = f(b)*((b-a)/(f(b)-f(a)));
while abs(c) >= tol
xi(k) = b-c;
a = b
b = xi(k)
k = k+1;
end
disp(x)
disp(xi)
disp(iter)
執行你的函數不應該'@'只有當函數被調用出現?我的意思是'[xans,xi,k] =正割(@sin,x0,x1,tol);'。 – pm89
是的,我認爲問題中的原始語法是正確的,但函數句柄應發送到'secant'函數。 – pm89
我在@f現在收到無效的語法錯誤,並且在運行程序時仍然收到錯誤「未定義函數或變量'x'」。爲了澄清,我希望f是x的一個函數,例如。 x^4 + 12x,而不是函數的名稱。 – ttl