关于matlab使⽤函数作为参数的⽅法
数值计算程序的通⽤性——函数名作为参数传递 在进⾏数值算法的程序设计时,往往需要实现程序的通⽤性,即同⼀个程序可以对不同的问题进⾏求解,如:计算函数f(x)的数值积分的程序,我们需要写⼀个通⽤的数值积分程序——Integr(),使其可以对不同的f(x)函数均可以进⾏积分计算,⽽不需要每计算⼀个函数的积分就重新写⼀个Integr()程序,仅需要另写⼀个f(x)的表达式程序即可。
若使⽤Matlab实现,则显然少不了eval(),和feval()函数的使⽤,即把需要进⾏积分计算的函数f(x)写完之后保存为.m⽂件,然后在积分程序中只需要把f(x)的⽂件名作为参数传递给Integr()即可。 若是把f(x)函数名作为字符串传⼊,则在Integr()中只需将f(x)函数名及其参数写为⼀个字符串,使⽤eval(字符串)执⾏即可,如:
function result=integr(a,b,n,fun)
%定义积分函数,a为积分下限,b为积分上限,n为划分区间的个数,fun为需进⾏计算的函数的⽂件名matlab定义函数表达式
h=(b-a)/n; x=[a:h:b]; y=eval([fun,'(x)']);
%将函数名fun和其参数x合成⼀个字符串并执⾏字符串,即执⾏计算fun(x),注意不能丢了fun的括号。
result=sum(y);
定义需要积分计算的函数fun之后,直接作为integr()的参数引⽤即可,如任意定义函数如下:
function r=ff(x) r=sin(x).*(1+x.*x);
则,在命令窗⼝引⽤即可:将'ff'换为其他函数名字符串即可进⾏计算其数值积分。
integr(0,1,1000,'ff')
———————————————————————————————————————————————
使⽤feval()函数则更加⽅便,integr()函数如下定义:
function result=integr(a,b,n,fun) ;
h=(b-a)/n; x=[a:h:b]; y=fun(x);%fun为传⼊的函数指针,可以直接作为引⽤
result=sum(y);
则可以通过如下⽅式使⽤:
integr(0,1,1000,@ff)%‘@’即表⽰ff作为函数指针传⼊
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论