построение матричного уравнения в R

Я новичок в R, и мне нужно построить квадратное матричное уравнение:

x^T A x + b^T x + c = 0

в R ^ 2, где A - это 2x2, b - 2x1, а c - константа. Уравнение предназначено для границы, которая определяет классы точек. Мне нужно построить эту границу для x0 = -6...6, x1 = -4...6. Моей первой мыслью было сгенерировать кучу точек и посмотреть, где они равны нулю, но это зависит от приращения между числами (скорее всего, я не буду гадать, какие точки равны нулю).

Есть ли лучший способ, чем просто создать кучу точек и посмотреть, где она равна нулю, или умножить ее? Любая помощь приветствуется,

Спасибо.


person Raufio    schedule 21.02.2013    source источник
comment
Я почти уверен, что вам нужно создать образец набора для построения. Можете ли вы предоставить дополнительную информацию о ваших входных данных и о том, как должен выглядеть ожидаемый вами сюжет?   -  person N8TRO    schedule 21.02.2013


Ответы (1)


Предполагая, что у вас есть симметричная матрица A,

eg

 # A = | a    b/2 |
 #     | b/2  c   |

и ваше уравнение представляет собой коническое сечение, вы можете использовать пакет conics

Вам нужен вектор коэффициентов c(a,b,c,d,e,f), представляющий

a.x^2 + b*x*y + c*y^2 + d*x + e*y + f

В вашем случае, скажем, у вас есть

 A <- matrix(c(2,1,1,2))

 B <- c(-20,-28)
 C <- 10


# create the vector
v <- append(c(diag(A),B,C),A[lower.tri(A)]*2), 1)



 conicPlot(v)

введите здесь описание изображения

Вы можете легко обернуть multiplication out в простую функцию

# note this does no checking for symmetry or validity of arguments

expand.conic <- function(A, B, C){
 append(c(diag(A),B,C),A[lower.tri(A)]*2), 1)
}
person mnel    schedule 21.02.2013
comment
Идеально! именно то, что мне было нужно. у вас есть идеи, как превратить это в объект ggplot? - person Raufio; 21.02.2013
comment
Не без переписывания conicPlot и conics:::plotEllipse. Вы можете посмотреть, как они работают, и написать свою собственную оболочку для создания data.frame, который вы могли бы использовать с ggplot. - person mnel; 21.02.2013
comment
Вы также можете увидеть stackoverflow.com/questions/12922740/ для ggplot2 подхода - person mnel; 21.02.2013
comment
Я просто восхищаюсь красотой этого ответа. Хотел бы я передать репутацию твоему ведру. - person IRTFM; 14.06.2014