【matlab】函数调用函数

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:08:18
%simpson.m
function f=simpson(fun,a,b,n)
h=(b-a)/n;
x=linspace(a,b,2*n+1);
y=feval(@fun,x);%一定用这种形式而不是y=feval(fun,x),谢谢啦
f=h/6*(y(1)+y(2*n+1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n)));

%fun.m
function y=fun(x)
y=4./(1+x.^2);

定义2个m文件
commend中运行
>> simpson(fun,0,1,100)
??? Input argument "x" is undefined.

Error in ==> fun at 3
y=4./(1+x.^2);

什么错误?怎么修改? 各位大虾帮帮我呀。

%simpson.m
function f=simpson(a,b,n)
h=(b-a)/n;
x=linspace(a,b,2*n+1);
y=feval(@fun,x);%一定用这种形式而不是y=feval(fun,x),谢谢啦
f=h/6*(y(1)+y(2*n+1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n)));
%fun.m
function y=fun(x)
y=4./(1+x.^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
改成这样可以,直接保存为一个m文件,输入量中没必要搞个函数fun。
>> simpson(1,10,10)

ans =

2.7432e+000