Маленькая помощь с пустым пространством матрицы - PullRequest
2 голосов
/ 05 июня 2011

Это требует немного знаний о Matlab, а у меня их нет. Мне просто интересно, может ли кто-нибудь указать мне правильное направление и дать мне указатель :)

Я должен написать код Matlab для поиска пустых пространств матик A и B, где B = A ^ T x A. А затем найти общие решения AX = b1 и BX = b2, где b1 = столбец [1 2 3 4 5] и b2 = столбец [1 2 3 4 5 6 7 8]. Меня беспокоит то, что я действительно не знаю, что делать с этим кодом. Это то, что я имею до сих пор, и я не думаю, что я на правильном пути. У меня есть конкретная матрица, как показано ниже. Ряды разделены точкой с запятой.

A = [ 1   2   3   4   5   6   7   8;
      1   2^2 3^2 4^2 5^2 6^2 7^2 8^2;
      1   2^3 3^3 4^3 5^3 6^3 7^3 8^3;
      1   2^4 3^4 4^4 5^4 6^4 7^4 8^4;
      6   8   1   1   7   9   0   7 ]
B = A’A (this is how transpose is written) 
C = null(A)
D = null(B)

Я чувствую, что где-то должен быть rref - я просто никуда не денусь. Пожалуйста, укажите мне в правильном направлении.


Хорошо, теперь я обновил его до этого .... Мое имя пользователя изменилось с jona, и я не знаю, почему

A = [ 1 2 3 4 5 6 7 8;
1 2^2 3^2 4^2 5^2 6^2 7^2 8^2;
1 2^3 3^3 4^3 5^3 6^3 7^3 8^3;
1 2^4 3^4 4^4 5^4 6^4 7^4 8^4;
6 8 1 1 7 9 0 7 ] 

B = A’*A (this is how transpose is written)

null(A)

null(B)

b1=[1; 2; 3; 4; 5 ];

b2=[1; 2; 3; 4; 5; 6; 7; 8 ];

end

rref(A,b1)

rref(B,b2)

end

Однако я все еще не чувствую, что это правильно :(

@ Крис А. Я знаю, что нулевое пространство - это решение Ax = 0. Однако я запутался в том, как его использовать, чтобы найти общее решение, используя b1 и b2, которые у меня есть. Вы можете объяснить мне связь? Я не так много берусь за книгу.

Ответы [ 2 ]

2 голосов
/ 05 июня 2011

В MATLAB арифметические операции должны быть явными, т.е. a(b+c) должно быть записано как a*(b+c)

Вы пытались написать B как

B=A'*A;

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

1 голос
/ 06 июня 2011

Хорошо, так что суть в том, что пустым пространством является набор всех векторов x, таких что A * x = 0.Вы получили это право.И C является ортонормированным базисом для векторов в нулевом пространстве.Так что это означает, что если у вас есть конкретное решение (назовем его v) такое, что A * v = b1, то пространство решений - это вектор v плюс любая комбинация векторов в нулевом пространстве.

В случае A размер (второе измерение) вашего C сообщит вам размер пустого пространства.Каждый из векторов в C будет вектором в пустом пространстве.

Чтобы получить v, вы можете сделать v = A \ b1.Вы можете записать произвольные комбинации векторов в C по C * c, где little c - это вектор-столбец, равный размеру пустого пространства.

Таким образом, общее решение - v + C * c, где c - это любой вектор, который является размерностью нулевого пространства.Чтобы увидеть, как это решает систему, просто подключите ее обратно к

A * (v + C * c) = 
A * v + A * C * c =
b1 + 0 * c = 
b1

Редактировать: Это та же самая идея для поиска решения A'*A * x = b2, где бы вы ни находились A в приведенном выше обсуждении,замените его на A'*A и везде, где вы увидите b1, замените его на b2.Решения A * x = b1 и A'*A * x = b2 - это отдельные проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...