# Error using feval and Invalid function name

19 views (last 30 days)
Víctor Sánchez on 16 Jan 2022
Commented: _ on 16 Jan 2022
I have this code:
function I= Trapecios(f,a,b,n)
%Fórmula Trapecios compuesta
h=(b-a)/n;
x=a:h:b;
x=x(:);
for i=1:n-1
k1=feval(f,x(i));
pesos=[1 2*ones(1,n-1) 1];
I=h./2*sum(pesos*k1);
end
end
So when I input the arguments, issues these messagges:
>> Trapecios('x/56',-56/2,9*56/10,8)
Error using feval
Invalid function name 'x/56'.
Error in Trapecios (line 7)
k1=feval(f,x(i));

_ on 16 Jan 2022
You can use an anonymous function, e.g., f = @(x)x/56, or a named function, rather than a character array (f = 'x/56') for feval.
Trapecios(@(x)x/56,-56/2,9*56/10,8) % using anonymous function @(x)x/56
ans = 43.1200
Trapecios(@divide_by_56,-56/2,9*56/10,8) % using a handle to a named function, defined below
ans = 43.1200
Trapecios('divide_by_56',-56/2,9*56/10,8) % using the name of the function
ans = 43.1200
function out = divide_by_56(x)
out = x/56;
end
function I= Trapecios(f,a,b,n)
%Fórmula Trapecios compuesta
h=(b-a)/n;
x=a:h:b;
x=x(:);
for i=1:n-1
k1=feval(f,x(i));
pesos=[1 2*ones(1,n-1) 1];
I=h./2*sum(pesos*k1);
end
end
_ on 16 Jan 2022
No problem!