微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何正确绘制 R 中给定椭圆的半长半短轴?

如何解决如何正确绘制 R 中给定椭圆的半长半短轴?

我想在 R 中绘制椭圆 t(x-mu) %*% A %*% (x-mu) = r^2,其中

mu = c(0,0)
A = matrix(c(4,-sqrt(2),3),nrow=2)
r = 1

根据here提示, 我绘制椭圆如下:

## generate points on circle
n.points = 100
theta = seq(0,2 * pi,length = n.points)
v = rbind(r * cos(theta),r * sin(theta))
## transform for points on ellipse
x = backsolve(chol(A),v) + mu
## plot points
plot(t(x),type = "l")

然后我尝试绘制椭圆的半长(半短)轴,它被称为 here 并编码为

eigens = eigen(A)
eva = eigens$values # note: lambda_1 = eva[1] > eva[2] = lambda_2
evec = eigens$vectors

a = r/sqrt(eva[1]) # length of the semi-minor axis
b = r/sqrt(eva[2]) # length of the semi-major axis
arrows(mu[1],mu[2],b * -evec[1,2],b * -evec[2,2])
arrows(mu[1],a * evec[1,1],a * evec[2,1])

axis(1,pos = mu[1],at = seq(-2,2,1),lty = "dotted",col = "gray")
axis(2,pos = mu[2],col = "gray") 

显然,轴(角度、长度...)有问题。 我错过了什么吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。