我应该如何重写此代码以不使用feval?

use*_*644 0 matlab refactoring

我最近在应用数值方法课上完成了一个作业集,并且做得很好.但是,我的教授做了一个说明,我不应该使用feval()函数,因为它已经过时了.

我只是想知道我应该使用什么.

这是有问题的代码

%% function file
function E=euler(f,a,b,ya,h)
    t=a:h:b;
    y(1)=ya;
    for i=1:length(t)-1
        y(i+1) = y(i) + h*(feval(f,t(i),y(i)));
    end
     t = t';
     y = y';
     E=t;
     plot(t,y)
     xlabel('t')
     ylabel('y') 
end



%% script file    

h = 0.01;
figure(2)
y1=euler(f, a, b, ya, h);

h = 0.001;
figure(3)
y2=euler(f, a, b, ya, h);

h = 0.0001;
figure(4)
y3=euler(f, a, b, ya, h);
Run Code Online (Sandbox Code Playgroud)

如何在不使用feval函数的情况下编写此代码以正确评估Euler函数.

kne*_*epp 6

博客文章中, Loren表示,直到2004 年的第14版,您必须使用它feval来评估函数句柄.

在版本14中,我们删除了feval用于评估函数句柄的需要.相反,它们可以直接评估.

现在你只需使用f(t(i),y(i))而不是feval(f,t(i),y(i)).