You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中绘制圆锥曲线一般式的右上(正x,y)象限图形?

在R中绘制圆锥曲线右上象限部分的解决方案

问题分析

你找到的椭圆参数化代码仅适用于椭圆场景(对应二次项矩阵正定的情况),当曲线为双曲线、抛物线或退化圆锥曲线时,二次项矩阵不满足正定条件,chol()分解自然会报错,因此必须采用通用的数值求解方法。

通用实现方案:数值求解+象限筛选

对于一般圆锥曲线方程 (Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0),我们可以通过固定x的取值范围,对每个x求解对应的y值,再筛选出x>0、y>0的有效点,具体实现如下:

1. 定义通用绘制函数

plot_conic_upper_right <- function(A, B, C, D, E, F, x_range = seq(0.01, 10, length.out = 1000)) {
    # 初始化存储有效点的数据框
    valid_points <- data.frame(x = numeric(), y = numeric())
    
    for (x in x_range) {
        # 整理关于y的方程系数:C*y² + (Bx + E)*y + (A*x² + D*x + F) = 0
        y_coeffs <- c(
            C,
            B * x + E,
            A * x^2 + D * x + F
        )
        
        # 求解y的根
        roots <- polyroot(y_coeffs)
        # 提取虚部可忽略的实根
        real_roots <- Re(roots)[abs(Im(roots)) < 1e-8]
        # 筛选正y值的根(排除0,只保留右上象限)
        positive_y <- real_roots[real_roots > 1e-8]
        
        if (length(positive_y) > 0) {
            valid_points <- rbind(valid_points, data.frame(x = rep(x, length(positive_y)), y = positive_y))
        }
    }
    
    # 绘制右上象限曲线
    plot(valid_points$x, valid_points$y, type = "l", xlab = "x", ylab = "y", main = "圆锥曲线右上象限部分")
    return(valid_points)
}

2. 不同类型圆锥曲线测试示例

  • 椭圆测试:以 (x^2/4 + y^2/9 = 1) 为例,对应参数A=1/4, B=0, C=1/9, D=0, E=0, F=-1

    plot_conic_upper_right(A=1/4, B=0, C=1/9, D=0, E=0, F=-1)
    
  • 双曲线测试:以 (x^2/4 - y^2/9 = 1) 为例,对应参数A=1/4, B=0, C=-1/9, D=0, E=0, F=-1,需调整x范围避免无实根区域

    plot_conic_upper_right(A=1/4, B=0, C=-1/9, D=0, E=0, F=-1, x_range=seq(2.01, 10, length.out=1000))
    
  • 抛物线测试:以 (y^2 = 4x) 为例,对应参数A=0, B=0, C=1, D=-4, E=0, F=0

    plot_conic_upper_right(A=0, B=0, C=1, D=-4, E=0, F=0)
    

注意事项

  • 需根据曲线类型调整x_range:比如双曲线右支的x必须大于实半轴长度,否则无有效实根
  • 用polyroot()求解时,通过判断虚部绝对值小于阈值(如1e-8)提取实根,避免数值误差干扰
  • 如果曲线是退化型(如两条直线、单个点或无实轨迹),函数会返回空的有效点数据框

内容的提问来源于stack exchange,提问作者threadofmotion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:27:43