2015-06-15 7 views
0

Как я могу решить eq1, где eq2 и eq3 и eq4eq5 в наименьших квадратов чувствовать в MATLAB?Как решить матрицу в Matlab?

Итак, я хотел бы получить минимизирующий результат eq6.

+0

Является ли матрица нормы используется в «|| Ca-b ||^2» 2-норме? – Jubobs

+0

@ Jubobs: Я думаю, это не имеет значения, так как мы конечномерны и, следовательно, каждая норма эквивалентна друг другу. Поэтому мы можем выбирать любую норму, которую хотим. 2-нормальна, но, например, норма Фробениуса должна также работать. – SemtexB

+1

Ну, если вы разделите квадрат нормы Фробениуса 'C a - b' wrt на' C' (используйте [кулинарная книга] [http://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf)), вы обнаружите, что матрица 'C', которая минимизирует эту величину в наименьшем квадрате, может быть вычислена в MATLAB с помощью' b * a '/ (a * a') '. – Jubobs

ответ

1

Перепишите количество, чтобы свести к минимуму, как

||Xa - b||^2

= (определение нормы Фробениуса)

Tr{(Xa - b) (Xa - b)'}

= (выражения расширения матрицы продукта)

Tr{Xaa'X' - ba'X' - Xab' + bb'}

= (линейность оператора следа)

Tr{Xaa'X'} - Tr{ba'X'} - Tr{Xab'} + Tr{bb'}

= (след транспонированной матрицы = след матрицы)

Tr{Xaa'X'} - 2 Tr{ba'X'} + Tr{bb'}

где ' обозначает оператор транспонирования (поскольку все вовлеченные матрицы являются вещественными, транспонированные и сопряженные транспозиции одинаковы). Теперь, если вы обратитесь к разделу 2.5 из Matrix Cookbook, вы обнаружите, что

  • производной Tr{Xaa'X'} является 2Xaa' (см уравнения 111),
  • производной Tr{ba'X'} является ba' (см уравнения 104) ,
  • производным от Tr{bb'} является 0 (поскольку это выражение не зависит от X).

(Дифференциация выполняется относительно матрицы X).

Таким образом, матрица, которая сводит к минимуму количества процентных удовлетворяет

2Xaa' = 2ba' 
Xaa' = ba' 

Таким образом, вы можете использовать оператор матрицы правого деления от Matlab, /, вычислить X:

X = b * a'/(a * a'); 
+0

Да, я думаю, что ваш ответ и мой (выше в комментариях) на самом деле то же самое ... – SemtexB

+0

@SemtexB Наши решения должны быть одинаковыми, если 'b * a'' и' a * a'' коммутируют. – Jubobs

+0

Я сначала транспонировал и использовал mldivide, тогда как вы не транспонировали и не использовали mrdivide, поэтому он должен быть таким же, не так ли? http://de.mathworks.com/help/matlab/ref/mldivide.html http://de.mathworks.com/help/symbolic/mrdivide.html – SemtexB

Смежные вопросы