MATLAB: недостаточно входных аргументов - PullRequest
0 голосов
/ 04 мая 2018

Мне выдается ошибка

Недостаточно входных аргументов.

Ошибка в шутке (строка 2) f = cos (2 * x) ./ exp (x);

При попытке запустить мой код с помощью команды

simp (fun, 0, 2 * pi, 120)

для моего кода

function I = simp(fun, a,b,n)

%Standard simpson's rule 
tol = 0.0001;

h = (b-a)/(2*n); % The subinterval spacing
x = a:h:b; % The partition points
y = fun(x); % The function values at those points
i = 0:2*n; % Makes a list from 0 to 2*n

coeffs = 3+(-1).^(i+1); % Makes a list of 2s and 4s to use in the Simpson's Rule
coeffs(1) = 1; coeffs(end)=1;

SR = h/3 * sum(coeffs .* y); % This is the Simpson's Rule
disp(SR);

function f = fun(x)
f = cos(2*x)./exp(x);
end

Ошибка говорит мне, что я не предоставил достаточного количества входных аргументов, но я вижу, что я даю значения функций (fun), 'a', 'b' и 'n'. Так почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 04 мая 2018

Вам нужно передать дескриптор функции с помощью @:

simp(@fun, 0, 2*pi, 120)

Вы также можете использовать:

simp(@(x) cos(2*x)./exp(x), 0, 2*pi, 120)

Когда вы используете только fun, Matlab думает, что вы пытаетесь вызвать функцию без параметров. @fun является действительной функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...