ユーザーが選択した方程式を入力できるようにする関数を呼び出してから、別の関数を使用して、数値解析の台形則を使用してそれを近似しようとしています。
ユーザー入力方程式のコードは次のとおりです。
function f = myf(x)
y=@(x) input('Input Equation: ');
f=y(x);
end
台形規則を適用するコードは次のとおりです。
function T=trapez(f,a,b,n)
h=(b-a)/n;
x=[a+h:h:b-h];
T=h/2*(feval(f,a)+feval(f,b)+2*sum(feval,f,x));
fprintf('The approximation by trapezoida rule is: %f with step h: %f\n',T,h);
end
私の問題は、最初の関数によって決定された方程式を2番目の入力として使用しようとしています。
>> f=myfun
Input Equation: exp(x^2)
f =
@(x)exp(x^2)
f =
@(x)exp(x^2)
>> trapez(f,0,1,15)
Error using feval
Not enough input arguments.
Error in trapez (line 4)
T=h/2*(feval(f,a)+feval(f,b)+2*sum(feval,f,x));