2013-06-28 220 views
-1

特徵值和特徵向量可以由張量T由下面的等式導出。特徵值和特徵向量的方程組

我試圖讓方程爲特徵值,特徵向量和張量t若要獲得T.

T矩陣方程是一個系統:

(T(i,k)-L(r)*I) * A(r,k) = 0 

第一項應爲:

[(T11-L1)*A11 T12*A12  T13*A13  T14*A14  ] 
[T21*A11  (T22-L1)*A12 T23*A13  T24*A14  ] 
[T31*A11  T32*A12  (T33-L1)*A13 T34*A14  ] 
[T41*A11  T42*A12  T43*A13  (T44-L1)*A14] 
+1

什麼是你的問題? – Schorsch

+1

['eig']怎麼了?(http://www.mathworks.com/help/matlab/ref/eig.html)? –

+0

什麼是你的equaton(T(i,k)-L(r)* I)* A(r,k)= 0的特徵值? – freude

回答

2

首先,讓我們聲明符號更容易使用sym

T = sym('T%d%d', [4 4]); 
A = sym('A%d%d', [4 4]); 
L = sym('L', [4 1]); 

原始代碼有幾個問題; 1.f正在每個內部迭代中被替換。 2.內部結果應該是標量,因此I不得出現在那裏。 (請注意,您也可以定義Ieye(4),而不是手工編寫它的。)

這裏是修正版本:

f = cell(4,1); % Initialize equation system 

for r = 1:k 
    for k = 1:4 
     for i = 1:4 
      f{r}(i,k) = T(i,k) * A(r,k); 
     end 
    end 
    f{r} = f{r} - L(r)*diag(A(r,:)); 
end 

f{i}將是ith片。

注意:由於@Schorsch指出(和Matlab也顯示出警告)總是試圖使用比i(或j)以外的其他變量名,因爲它們代表了imaginary unit

只是爲了好玩,你可以使用repmat卸下兩個內環:

for r = 1:4 
    f{r} = T .* repmat(A(r,:), [4 1]) - L(r)*diag(A(r,:)); 
end 
+1

+1解釋和引入'repmat'來消除一些循環。還有一句話,'i'(和'j')不應該用作迭代器,因爲它們也是[虛數單元](http://www.mathworks.com/help/matlab/ref/i)。 HTML)在Matlab中。 – Schorsch

+0

那麼這是真的,我會在那裏添加一條評論,但我只是儘量保持原始代碼。 – pm89

+1

我明白並同意。這只是我想提到的完整性。 – Schorsch

相關問題