Я пишу программу на Octave, и я столкнулся с проблемой, я реализовал квадратуру Гаусса-Легандра, и я передаю своей функции Гаусса-Легандра несколько аргументов, и я передаю функцию, которая будет интегрирована в куб ячейки, поэтому я могу передать несколько функций в время. У меня есть этот фрагмент кода:
for weight=1:length(w)
temp=1;
for fun=1:length(c)
%liczenie iloczynu f(x_i)g(x_i), x_i - pieriwastki wielomianu Legandra
f=c{fun};
nargin(func2str(c{fun}))
if (nargin (func2str(c{fun})) == 1)
disp('a');
temp*=c{fun}((b-a)/2 * x(weight) + (a+b)/2);
else
(b-a)/2 * x(weight) + (a+b)/2;
temp*=f((b-a)/2 * x(weight) + (a+b)/2,I,points);
end
end
%mnozenie wyniku przez odpowiedni wspolczynnik - wage
temp*=w(weight);
result+=temp;
end
В массиве ячеек есть обработчики функций для функций, которые я хочу интегрировать. В зависимости от количества аргументов, которые принимает функция, я хочу использовать два разных вызова функции. Если в массиве ячеек есть обработчик функции, которая записана в файле .m в том же каталоге, что и мой рабочий каталог Octave, все работает нормально, но когда я определяю функцию во время выполнения Octave, например:
function result=a(x)
result=x*x
end
Тип
c{1}=@a
и передайте этот массив ячеек моей функции Kwadratury, есть ошибка nargin
error: nargin: invalid function
error: called from:
Почему это так и как я могу это решить, поэтому я могу определять функцию не только в файлах .m, но и в Octave.