我正在做一个分配,其中必须找到位于区间 [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,我显然不能将它放入函数中。那么有没有办法递归地扩展向量呢?