我最近在应用数值方法课上完成了一个作业集,并且做得很好。但是,我的教授做了一个说明,说我不应该使用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
f = @(y,t) (1-20*t*y)/(t^2); %solved for dy/dt
x = 2:0.0001:10;
exact = 1./(19.*x) - 524288./(19.*x.^20);
figure(1)
plot(exact);
a = 2;
b = 10;
ya = 1;
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);
如何在不使用feval函数的情况下编写此代码以正确评估Euler函数。
答案 0 :(得分:0)
例如,您可以看到
[V,D] = feval('eig',A)
[V,D] = eig(A)
是等效的。