Определитель матрицы с символьными элементами в R

У меня есть следующий код:

x1 <- c("x", "y")
x2 <- c("z", "w")
X <-data.frame(x1,x2)
A=as.matrix(X)

Матрица A имеет следующий вид:

      x1  x2 
[1,] "x" "z"
[2,] "y" "w"

Как найти определитель числа A? Мне нужен результат вроде xw-yz.

Я пробовал det(A), но это не работает.

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


person Vassilis Chasiotis    schedule 23.05.2018    source источник


Ответы (1)


вам нужна библиотека символьных вычислений:

library(rSymPy)

x1 <- List(Var("x"), Var("y"))
x2 <- List(Var("z"), Var("w"))
A = Matrix(x1, x2)
Det <- function(x) Sym("(", x, ").det()")
Det(A)
# [1] "w*x - y*z"

x <- Var("x") 
y <- Var("y") 
z <- Var("z")
A = Matrix(List(y+z,z,y), List(z,z+x,x), List(y,x,x+y))
Det(A)
# [1] "4*x*y*z"

a <- Var("a") 
b <- Var("b") 
c <- Var("c")
A = Matrix(List(0,b-a,c-a), List(a-b,0,c-b), List(a-c,b-c,0))
Det(A)
# [1] "0"
person Sandipan Dey    schedule 11.09.2018
comment
пакет rSymPy недоступен в R 3.5.1. Однако в CRAN я обнаружил, что у него нет особых требований. - person Vassilis Chasiotis; 14.09.2018
comment
вы можете загрузить сжатый исходный код и установить отсюда cran.r-project. org/web/packages/rSymPy/index.html - person Sandipan Dey; 14.09.2018