私は、間隔 [a,b) にある三重対角対称行列の固有値の数を見つける必要がある割り当てに取り組んでいます。これらの固有値を見つけるために二分アルゴリズムを使用する必要があり、ベクトル E の形式で出力する必要があります。関数は function [ E ] = bisection(A, a, b, tol) で、 tol は許容誤差です。 .
% If tolerance is met, add (a + b)/2 to E as many times as there are
% eigenvalues left in [a,b). This is the recursive stopping criterium.
if(b - a < tol)
for i = 1:n
E = [E; (a + b)/2];
end
end
% If there are eigenvalues left in [a,b), add new eigenvalues to E through
% recursion.
if(n > 0)
E = [E; bisection(A, a, (a+b)/2, tol); bisection(A, (a+b)/2, b, tol)];
end
E = [];
私がやろうとしているのは、二分関数の別の関数呼び出しでベクトル E を拡張することです。私だけがこのエラーを受け取ります:
??? Undefined function or variable "E".
Error in ==> bisection at 56
E = [E; bisection(A, a, (a+b)/2, tol); bisection(A, (a+b)/2, b, tol)];
私はすでに空のベクトル E を作成しましたが、これは明らかに関数内に入れることはできません。ベクトルを再帰的に展開する方法はありますか?