我正在进行一项任务,其中必须找到位于区间[a,b)中的三对角对称矩阵的特征值的数量。我需要使用二分算法来找到这些特征值,它们必须以向量E的形式输出。函数是函数[E] =二分(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,我显然无法将其放入函数中。那么有没有办法递归地扩展一个向量?
答案 0 :(得分:2)
如果你不能将空的起始向量放在函数中,你应该将它作为输入参数传递。
这就是顶级代码的样子:
E = [];
E = myRecursiveFunction(E,inputs,stoppingCriteria)