2013-04-22 10 views
1

В R Мне нужно решить систему линейных уравнений (Ax = b), где b = 0. Используя solve(), он просто возвращает нулевой вектор для ответа, но мне нужны ненулевые решения системы. Есть ли способ для этого?Как решить систему линейных уравнений с b = 0 в R

+1

Разместите код и пример для А, что вы используете. –

+0

Я действительно не понимаю, что вы ищете. Вы ищете функцию, которая решает уравнение? Вы ищете математическое объяснение? – ZanattMan

+1

Если 'A' обратим, нулевой вектор будет единственным ответом. – liuminzhao

ответ

5

Я думаю, что вы ищете пустое пространство матрицы A. Попробуйте:

library(MASS) 
Null(t(A)) 

R > (A <- matrix(c(1,2,3,2,4,7), ncol = 3, byrow = T)) 
    [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 2 4 7 
R > Null(t(A)) 
       [,1] 
[1,] -8.944272e-01 
[2,] 4.472136e-01 
[3,] 7.771561e-16 
R > (A <- matrix(c(1,2,3,2,4,6), ncol = 3, byrow = T)) 
    [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 2 4 6 
R > Null(t(A)) 
      [,1]  [,2] 
[1,] -0.5345225 -0.8017837 
[2,] 0.7745419 -0.3381871 
[3,] -0.3381871 0.4927193 

Будьте осторожны. Имеются некоторые ошибки округления.

Также обозначают r как ранг матрицы A и q как число столбцов A. Если r = q, то нулевой вектор является единственным ответом. Если r> q, то решения нет. Если r < q, мы можем использовать приведенную выше функцию Null, чтобы получить пустое пространство A, но помните, что они не уникальны ни по величине, ни по направлениям.

Ссылка: http://stat.ethz.ch/R-manual/R-patched/library/MASS/html/Null.html