Получение всех возможных линейных комбинаций матрицы R - PullRequest
0 голосов
/ 26 февраля 2020

предположим, у меня есть следующая расширенная матрица

100 100 0   100
325 0   500 500

В терминах уравнения:

c1(100) + c2(100) + c3(0) = 100
c1(325) + c2(0) + c3(500) = 500

Я не могу изменить последний столбец. Как мне найти все возможные линейные комбинации? Очевидное решение - c2 = 1 и c3 = 1. Но как мне получить его системно c способом?

Я пытался использовать rref в пакете pracma, но получаю

1 0  1.538462   1.5384615
0 1 -1.538462  -0.5384615

У меня действительно не может быть никаких значений дроби.

Любой совет?

1 Ответ

2 голосов
/ 26 февраля 2020

Это недоопределенная система линейных уравнений. Вы можете получить все его решения с помощью инверсии Мура-Пенроуза A. Пусть Ainv будет инверсией Мура-Пенроуза A. Тогда все решения A %*% x = b задаются как Ainv %*% b + (I - Ainv %*% A) %*% w, где I - единичная матрица, а w - любой вектор.

A <- rbind(c(100,100,0), c(325,0,500))
b <- c(100,500)

Ainv <- MASS::ginv(A)

w <- c(1,2,3) # arbitrary
one_solution <- Ainv %*% b + (diag(3L) - Ainv %*% A) %*% w

A %*% one_solution
#      [,1]
# [1,]  100
# [2,]  500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...