Octave: невозможно вызвать функцию из другого файла .m - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь интегрировать функцию fx, используя интеграцию Ромберга, с x = 0 до x = 0.8 с максимум 10 итерациями, используя следующие два сценария:

RomScript.m:

function [rom_I,I,ea] = RomScript(a,b,fx,maxit,es)
maxit=10;
I=zeros(maxit+1,maxit+1);
es=0.001;
fx=@(x) 0.2 + 25*x - 200*x^2 + 675*x^3 - 900*x^4 + 400*x^5;
a=0;
b=0.8;

ea = 0;
iter=1;
while iter<=maxit+1
    for k=1:iter
        j=iter-k+1;
        if k==1
            n=2^(j-1);
            I(j,1)=TrapM(a,b,n,fx);
        else
            I(j,k) = (4^(k-1) * I(j+1,k-1) - I(j,k-1) )/ (4^(k-1) - 1);
        end
    end
    if iter>1
        ea = abs((I(1,iter) - I(2,iter-1)) / I(1,iter)) * 100;
        if ea < es 
            break;
        end
    end
    iter=iter+1;
end

TrapM.m:

function [TrapM,eapprox] = TrapM(a,b,n,fx);
h=(b-a)/n;
f=zeros(n+1,1);
for fi=1:n+1  
    f(fi)=fx(a+h*fi-h);
end
sum=f(1);

for i=2:size(f,1)-1
    sum=sum+2*f(i); 
end

sum=sum+f(end);
Trap=h*sum/2;

df = matlabFunction(diff(sym(fx),2));
df2= integral(df,a,b);
eapprox=df2/(b-a)*(b-a).^3/12/n.^2;
end

Всякий раз, когда я запускаю RomScript.m, он выдает эту ошибку:

error: 'TrapM' undefined near line 16 column 20
error: called from
    RomScript at line 16 column 19

Из того, что я видел, просто возиться, выглядитнапример, Octave просто не понимает, что я ссылаюсь на другой файл .m, в то время как MATLAB может это сделать.

...