2013-02-21 2 views
3

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

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

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

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

Спасибо.

+0

Я уверен, что вы должны создать образец для набора сюжет. Можете ли вы дать больше информации о своих вкладках и как должен выглядеть ваш ожидаемый сюжет? – N8TRO

ответ

4

Если у вас есть симметричная матрица A,

например

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

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

Что вам нужно, это вектор коэффициентов 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) 

enter image description here

Вы можете легко обернуть 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) 
} 
+0

Отлично! именно то, что мне нужно. не могли бы вы представить, как превратить его в объект ggplot? – Raufio

+0

Не без переписывания conicPlot и 'conics ::: plotEllipse'. Вы можете посмотреть, как они работают, и написать свою собственную оболочку для создания data.frame, который вы можете использовать с ggplot. – mnel

+1

Вы также можете увидеть http://stackoverflow.com/questions/12922740/drawing-ellipses-hyperbolas-in-r для подхода 'ggplot2' – mnel

Смежные вопросы