我想寫一個近似梯形法則積分的函數。在Matlab中的兩個函數來近似積分 - 沒有足夠的輸入參數?
我首先在一個文件中定義的函數:
function[y] = integrand(x)
y = x*exp(-x^2); %This will be integrand I want to approximate
end
然後我寫函數近似定積分與下界和上界B(也在另一文件):
function [result] = trapez(integrand,a,b,k)
sum = 0;
h = (b-a)/k; %split up the interval in equidistant spaces
for j = 1:k
x_j = a + j*h; %this are the points in the interval
sum = sum + ((x_j - x_(j-1))/2) * (integrand(x_(j-1)) + integrand(x_j));
end
result = sum
end
但是當我想從命令窗口調用這個函數時,例如使用result = trapez(integrand,0,1,10)
,我總是會得到一個錯誤'沒有足夠的輸入參數'。我不知道我做錯了什麼?
+1,但是,「但在這種情況下,根本不需要傳遞它。」只有當'integrand'在路徑上時纔是真實的,否則它恰好是對傳入的函數句柄的調用 - 使用具有相同名稱的參數是一個壞主意。 – horchler
將函數'sum'作爲變量名覆蓋常見也是不好的做法。 – horchler
謝謝。我應該給文件什麼名字? – Kamil