MATLAB 入门问题关于函数调用

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:24:42
下面是我用复合辛普森公式求积分的程序 (文件名为fsimpson.m)
function I=fsimpson(fun,a,b,n)
for n=1:100;
h=(b-a)/n;
x=linspace(a,b,2*n+1);
y=feval(fun,x);
I=4*(h/6)*(y(1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n))+y(2*n+1));
if abs(I-pi)>1e-8,(此处为误差的要求 增加的程序)
return
else,
end
end
其中调用函数用的下面程序(文件名为fun.m)
function f=fun(x)
f=1/(1+x^2);
为什么无法得到结果 请哪位大侠帮忙运行下 给指出错误来 谢谢了!我不大懂matlab
我的目的是求I呀 它是个积分 你求出来的是1/(1+x^2)的值啊

这样改吧:
function I=fsimpson(fun,a,b)
for n=1:100;
h=(b-a)/n;
x=linspace(a,b,2*n+1);
y=feval(fun,x);
I=4*(h/6)*(y(1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n))+y(2*n+1));
if abs(I-pi)>1e-8, %(此处为误差的要求 增加的程序)
return
else,
end
end

把 n 删了 ,按你的意思,n 没有什么意义。再说了,你调用的时候,没有加上积分的上下限,怎么能求出来呢?至于你定义的fsimpson 函数,对不对我就不知道了
运行结果如下:
>> fsimpson(inline('1./(1+x.^2)'),1,2)

ans =

1.2872

>> 是你定义 fsimpson 函数 有误,我这样调用是没有错的