Octave でプログラムを書いているときに問題が発生しました。Gauss-Legandre Quadrature を実装し、Gauss-Legandre 関数にいくつかの引数を渡し、関数をセル キューブに統合するように渡しました。時間。私はこのコードを持っています:
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
セル配列には、統合したい関数への関数ハンドラがあります。関数が取る引数の数に応じて、関数に対して2つの異なる呼び出しを使用したいと考えています。セル配列に、Octave 作業ディレクトリと同じディレクトリにある .m ファイルに書き込まれた関数へのハンドラがある場合、すべて正常に動作しますが、Octave 実行時に関数を定義すると、たとえば次のようになります。
function result=a(x)
result=x*x
end
タイプ
c{1}=@a
このセル配列を関数 Kwadratury に渡します nargin のエラーがあります
error: nargin: invalid function
error: called from:
それはなぜですか、どうすれば解決できるので、.mファイルだけでなくOctaveでも関数を定義できます。