2017-02-05 9 views
1

私はMatlabのに新しいですし、私のコードのエラーに対する解決策を見つけよう:MATLAB:十分でない入力引数エラー

足りません入力引数。
F9> f(行42)のエラー
y =(2 - 2 * t * x)/(x^2 + 1);
F9のエラー(行18)
e =オイラー(f、trange(1)、y0_value、h、trange(end));

function [] = F9() 
% Euler's Method to solve given functions 
% Set initial values 
hi = [1/2, 1/4]; 
trange = [0, 2]; 
y0_value = 1; 
% Set functions' and exact functions' handles 
% Calculate and show results 
% Loop for functions 
for i = 1:2 
    fprintf('###########\n'); 
    fprintf('Function #%d\n', i) 
    fprintf('###########\n'); 
    exact_value = f_exact(trange(end)); 
    % Loop for h 
    for h = hi 
     % Euler calculations 
     e = euler(f, trange(1), y0_value, h, trange(end)); 
     fprintf('\nh: %f\n', h); 
     fprintf('\nEuler: %f \n', e(end)); 
     fprintf('Error: %f\n\n', abs((e(end)-exact_value)/exact_value)); 
    end 
    fprintf('Exact: %f\n\n', exact_value); 
end 
end 
% Euler's Method 
function y = euler(f, t0, y0, h, tn) 
n = (tn-t0)/h; 
% Initialize t, y 
[t, y] = deal(zeros(n, 1)); 
% Set t0, y0 
t(1) = t0; 
y(1) = y0; 
for i = 1:n 
    t(i+1) = t(i) + h; 
    y(i+1) = y(i) + h/2 * (f(t(i), y(i))+ f(t(i+1) , y(i) + h * f(t(i), y(i)))); 
end 
end 
% Functions to solve 

function y = f(t, x) 
y = (2 - 2*t*x)/(x^2 + 1) ; 
end 
function y = f_exact(x) 
y = (2*x + 1)/(x^2 + 1); 
end 

答えて

1

あなたはeulerfを渡すときは、すなわち@でそれに先行し、ハンドルとしてそれを渡す必要があります。

e = euler(@f, trange(1), y0_value, h, trange(end)); 
+0

は私の友人ありがとう。あなたは私を救いました!! –

+0

@HliasMpexlisようこそ! – EBH

関連する問題