求大神帮忙修改一个Matlab的函数
如题,在Matlab里写了一个函数functioneulermethods(xy,t,nSteps)a=1;b=1;d=1;g=1.2;h=(t(2)-t(1))/nSt...
如题,在Matlab里写了一个函数
function eulermethods(xy,t,nSteps)
a=1;b=1;d=1;g=1.2;
h = (t(2)-t(1))/nSteps;
x=xy(1);
y=xy(2);
X = a*x - b*x*y;
Y = g*x*y - d*y;
xvec = [x zeros(1,nSteps)];
yvec = [y zeros(1,nSteps)];
for n = 1:nSteps
xvec(n+1) = xvec(n)+h*X;
yvec(n+1) = yvec(n)+h*Y;
X = a*xvec(n+1) - b*xvec(n+1)*yvec(n+1);
Y = g*xvec(n+1)*yvec(n+1) - d*yvec(n+1);
end
xvec=xvec';
yvec=yvec';
t = (t(1):h:t(2))';
m=[xvec, yvec];
disp(m);
disp(t);
end
怎样把这个函数改成使用Function Handle的函数(即a,b,d,g都在输入待解方程时作为系数一并输入) 展开
function eulermethods(xy,t,nSteps)
a=1;b=1;d=1;g=1.2;
h = (t(2)-t(1))/nSteps;
x=xy(1);
y=xy(2);
X = a*x - b*x*y;
Y = g*x*y - d*y;
xvec = [x zeros(1,nSteps)];
yvec = [y zeros(1,nSteps)];
for n = 1:nSteps
xvec(n+1) = xvec(n)+h*X;
yvec(n+1) = yvec(n)+h*Y;
X = a*xvec(n+1) - b*xvec(n+1)*yvec(n+1);
Y = g*xvec(n+1)*yvec(n+1) - d*yvec(n+1);
end
xvec=xvec';
yvec=yvec';
t = (t(1):h:t(2))';
m=[xvec, yvec];
disp(m);
disp(t);
end
怎样把这个函数改成使用Function Handle的函数(即a,b,d,g都在输入待解方程时作为系数一并输入) 展开
2个回答
展开全部
题主是要把这个函数作为另外一个函数的参数调用,并且可以传递a、b等附加参数吗?
传递附加参数的基本方法有这样三种:
1、改写函数定义,把附加参数放在参数表的后面。至于调用时的格式,要看调用函数是否支持附加参数,一般来说,如果支持,需要把所有的参数写齐全,后面才能带上附加参数。
2、使用嵌套函数(Nested Functions)。
3、使用匿名函数(Anonymous Functions)。
关于后两种方法,可以搜索文档中“Parameterizing Functions Called by Function Functions”的内容。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询