0
我正在進行一項任務,其中需要找到位於區間[a,b)中的三對角矩陣的特徵值的數目。我需要使用二分算法來找到這些特徵值,並且它們必須以向量E的形式輸出。函數是函數[E] =二等分(A,a,b,tol),其中tol是可接受的誤差容限。在MATLAB中遞歸地追加到矢量中
% 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,我顯然不能放在函數內部。那麼有什麼辦法遞歸地擴展一個向量?
您正在試圖收集一個來歷不明的結果。嘗試用零或NaN初始化E – fpe