我是 R 新手,我需要绘制二次矩阵方程:
x^T A x + b^T x + c = 0
在 R^2 中,A 为 2x2,ba 为 2x1,ca 为常数。该方程适用于定义点类别的边界。我需要为 , 绘制x0 = -6...6
边界x1 = -4...6
。我的第一个想法是生成一堆点并查看它们在哪里为零,但这取决于数字之间的增量(很可能我不会猜测哪些点是零)。
有没有比只生成一堆点并查看它在哪里为零或将其相乘更好的方法?任何帮助将非常感激,
谢谢你。
我是 R 新手,我需要绘制二次矩阵方程:
x^T A x + b^T x + c = 0
在 R^2 中,A 为 2x2,ba 为 2x1,ca 为常数。该方程适用于定义点类别的边界。我需要为 , 绘制x0 = -6...6
边界x1 = -4...6
。我的第一个想法是生成一堆点并查看它们在哪里为零,但这取决于数字之间的增量(很可能我不会猜测哪些点是零)。
有没有比只生成一堆点并查看它在哪里为零或将其相乘更好的方法?任何帮助将非常感激,
谢谢你。
假设你有一个对称矩阵A
,
例如
# 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)
}