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

时间:2015-04-19 18:03:58

标签: numerical-methods matlab

我最近在应用数值方法课上完成了一个作业集,并且做得很好。但是,我的教授做了一个说明,说我不应该使用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函数。

1 个答案:

答案 0 :(得分:0)

例如,您可以看到

    [V,D] = feval('eig',A)
    [V,D] = eig(A)

是等效的。