用R中的方程绘制曲线

用R中的方程绘制曲线,r,graphics,R,Graphics,在R中,是否有一种方法可以绘制由方程式给出的二维曲线?例如,如何绘制方程式x^2-3*y^2+2*x*y-20=0给出的双曲线?您可以使用等高线绘制双曲线的两个分支 f <- function(x,y) x^2 - 3*y^2 + 2*x*y - 20 x <- y <- seq(-10,10,length=100) z <- outer(x,y,f) contour( x=x, y=x, z=z, levels=0, las=1, drawlabels=FAL

在R中,是否有一种方法可以绘制由方程式给出的二维曲线?例如,如何绘制方程式x^2-3*y^2+2*x*y-20=0给出的双曲线?

您可以使用
等高线
绘制双曲线的两个分支

f <- function(x,y) x^2 - 3*y^2 + 2*x*y - 20
x <- y <- seq(-10,10,length=100)
z <- outer(x,y,f)
contour(
  x=x, y=x, z=z, 
  levels=0, las=1, drawlabels=FALSE, lwd=3
)

f仅用于记录-ggplot版本

library(ggplot2)
library(dplyr)
f <- function(x,y) x^2 - 3*y^2 + 2*x*y - 20
seq(-10,+10,length=100) %>%
    expand.grid(x=.,y=.) %>%
    mutate(z=f(x,y)) %>%
    ggplot +
    aes(x=x,y=y,z=z) +
    stat_contour(breaks=0)
库(ggplot2)
图书馆(dplyr)
f%
展开.grid(x=,y=)%>%
突变(z=f(x,y))%>%
ggplot+
aes(x=x,y=y,z=z)+
统计轮廓(打断=0)

也许解决方案可以将方程转化为公式,并使用curve()绘制曲线


curve(sqrt(4/9*x^2-20/3)+x/3,-20,20)

我确实相信这将是双曲线(或该词的适当复数形式)。有点奇怪,没有办法直接绘制这一曲线<代码>绘图(fun=…,xlim=…,ylim=…)
或将x和y馈送到
ggplot2
中的
stat\u函数的方法。好吧,我不知道
outer
语句是如何工作的。我可以先通过求解
x
y
得到类似的图,但这非常有效。需要解释吗?
outer(x,y,f)
返回矩阵
z[i,j]=f(x[i],y[j])
,即它在网格上计算函数。您可以尝试
image(z)
contour(z)
来可视化
z
。数值求解x或y是有问题的,因为对于给定的x值,可能有多个对应的y值。(当然,它可以用计算机代数系统maxima、yacas等轻松地正式完成。)
emdbook
软件包中的
curve3d
提供了一个小小的捷径:
emdbook::curve3d(x^2-3*y^2+2*x*y-20,xlim=c(-10,10),ylim=c(-10,10),n=c(100100),+sys3d=“contour”,levels=0)
@Ben Bolker:很好的建议;我现在正在学习微分几何课程,这个函数非常有用。另外,当我在2008年开始学习R时,我使用了R中的生态模型和数据,发现它非常有用。有没有办法旋转打印的曲面?