matlab中feval函数调用出错

用matlab编写一个积分函数,但在命令窗口中调用出错。
程序代码如下,
先写一个M文件:
function s=simpr1(f,a,b,n)
h=(b-a)/(2*n);
s1=0;
s2=0;
for k=1:n
x=a+h*(2*k-1);
s1=s1+feval('f',x);
end
for k=1:(n-1)
x=a+h*2*k;
s2=s2+feval('f',x);
end
s=h*(feval('f',a)+feval('f',b)+4*s1+2*s2)/3;
end
保存在工作目录之后,在命令窗口输入
ans=simpr1('1/(1+x^2)',-1,1,10)
出现如下错误:
??? Error using ==> feval
Undefined function or method 'f' for input arguments of type 'double'.
Error in ==> simpr1 at 7
s1=s1+feval('f',x);
请问如何解决

feval只接受函数名,试试这样:
函数:(simpr1.m)
function s=simpr1(f,a,b,n)
h=(b-a)/(2*n);
s1=0;
s2=0;
for k=1:n
x=a+h*(2*k-1);
s1=s1+feval(f,x);
end
for k=1:(n-1)
x=a+h*2*k;
s2=s2+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;
----------------------
主程序:
clear all;clc;
f=@(x)1./(1+x.^2);
simpr1(f,-1,1,10)追问

还是不行,提示的错误是一样的,谢谢啦!麻烦再帮忙想想办法。

追答

不会吧,我都调通的,feval(f,x)----不加' '的,你的版本是什么?
clear all;clc;
f=@(x)1./(1+x.^2);
s=simpr1(f,-1,1,10)

s =
1.5708

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答