В R
Мне нужно решить систему линейных уравнений (Ax = b), где b = 0. Используя solve()
, он просто возвращает нулевой вектор для ответа, но мне нужны ненулевые решения системы. Есть ли способ для этого?Как решить систему линейных уравнений с b = 0 в R
1
A
ответ
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
Разместите код и пример для А, что вы используете. –
Я действительно не понимаю, что вы ищете. Вы ищете функцию, которая решает уравнение? Вы ищете математическое объяснение? – ZanattMan
Если 'A' обратим, нулевой вектор будет единственным ответом. – liuminzhao