2013-06-28 3 views
-1

Собственное значение и собственный вектор могут быть получены из тензора Т по приведенному ниже уравнению.Система уравнений для собственных значений и собственных векторов

Я пытаюсь получить систему уравнений для собственных значений, собственных векторов и Tensor 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

Что такое собственное значение в вашем эквиваторе (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