2013-07-30 2 views
0

У меня есть следующее уравнение, которое я хочу, чтобы решить:Настройка системы линейных уравнений в MATLAB

H*b0 = M(Q+1)b(Q+1)+l+M'B

unknowns являются b0, b(q+1) и B. Размеры известных матриц:

H=(42 x 42) 

M(Q+1) = (42 x 21-P) 

l = (42 x 1) 

M' = (42 x 4) 

Так что я хочу выяснить, как найти векторы.

Есть ли встроенная команда, которую я мог бы сделать, чтобы сделать это?

Это происходит из This paper

EDIT :: Размер неизвестных должно быть (все векторы-столбцы):

b0 = 21 
b(q+1) = 21-P (P=4 in this case) 
B = P (4 in this case) 
+0

Я думаю, что есть какое-то недоразумение, вы могли бы также перечислить размер ваших неизвестных переменных? –

+0

Я отредактировал вопрос, чтобы показать размеры – yankeefan11

+0

Размеры, похоже, не совпадают. 'M (Q + 1)' равно 42 на 42, а 'b (Q + 1)' равно 17 на 1? Кроме того, у вас недостаточно ограничений, как уже говорят два ответа. Из какой части статьи это происходит? Я не могу прочитать всю статью, чтобы ответить на этот вопрос. – Memming

ответ

2

Во-первых, переставить уравнение:

H b0 - M(Q+1) B(Q+1) - M' B = l 

Теперь вы можете сцепить переменные. Вы будете в конечном итоге с неизвестным вектором (X) размером 42 + 21 + 4 = 67 и матрица коэффициентов (A) размером 42 х 67

X = [b0; B(Q+1); B ]; % <- don't need to execute this; just shows alignment 
A = [ H, -M(Q+1), -M']; 

Теперь у вас есть уравнение вида:

A X = l 

Теперь вы можете решить эту проблему в наименьших квадратов с толку оператора \:

X = A \ l 

Это X можно повернуть назад в b0, B(Q+1) и B, используя тождество выше в обратном порядке:

b0 = X(1:42); 
B(Q+1) = X(43:63); 
B = X(64:67); 
+0

Это прекрасно. Спасибо. теперь, чтобы выяснить, где я неправильно определил все другие переменные. – yankeefan11

-1

Ваша проблема может иметь много решений; на самом деле у вас есть:

42 коэффициентов b0 21 коэффициентов для B (Q + 1) 21 коэффициентов B

У вас есть только 42 уравнений, в общей сложности 84 коэффициентов!

Ваша проблема должна быть уточнена с дополнительными ограничениями. Как только у вас будет достаточно ограничений, вы сможете использовать линейные наименьшие квадраты, чтобы узнать свои коэффициенты.

для 42 ограничений и переменных, вам не нужна функция, матричных манипуляций достаточно. Вы хотите найти вектор X, такой как H * X = Y

Оценка X есть (H '* H)^- 1 * H' * Y.

Так в Matlab:

X ~ (H'*H)\H'*Y 

Не забудьте проверить, что Н'Н хорошо кондиционером и положительно определена.

Итак, все, что вам нужно сделать, это объединить 3 векторных коэффициента в X, поместить коэффициенты ограничения в H и Y, использовать формулу.

Приветствие

+0

На самом деле у меня есть несколько ограничений. Как использовать наименьшие квадраты с этими ограничениями? – yankeefan11

+0

отзыв был отредактирован – David

+0

NO. NO. NO. Вы даже не правильно составляли нормальные уравнения, и это плохой способ решения линейной задачи наименьших квадратов. Хуже того, это не удастся для недоопределенных систем! Вместо этого используйте X = H \ Y. –

0

Как есть проблема, безусловно, имеет слишком много степеней свободы. Конечно, у вас есть некоторые ограничения, но, не зная, какие ограничения у вас есть, я не могу понять, какое решение предложить.

Предположим, что у вас есть только верхняя и нижняя граница на b(Q+1) и знает, что b0 - 1 везде, проблема сводится к ограниченной линейной проблеме наименьших квадратов.

Существует функция в Matlab, что может сделать это для вас: http://www.mathworks.nl/help/optim/ug/lsqlin.html

Есть mulltiple возможные способы вызова этой функции, я думаю, самый простой тот, который все еще может сделать трюк для вас это:

x = lsqlin(C,d,A,b,Aeq,beq,lb,ub) 

Я не специалист в этой области, но если вы можете придумать трюк, чтобы написать свою проблему в этой форме, это, безусловно, было бы самым простым решением.


Для практических целей: если вы не можете найти способ решить эту сложную проблему, возможно, попытаться фиксируя b0 к некоторым разумным значениям для того, чтобы получить достойное решение.

+0

Ну, я хочу, чтобы у меня было 42 уравнения с 42 неизвестными. Это объясняется в статье, но я не вижу, как ее решить. – yankeefan11

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