0

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

4

1 回答 1

2

如果您不能将空的起始向量放入函数中,则应将其作为输入参数传递。

这就是顶级代码的样子,例如:

E = [];
E = myRecursiveFunction(E,inputs,stoppingCriteria)
于 2013-04-18T14:04:18.703 回答