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

如何在R中为所有y值优化函数获取对应x最大值用于绘图

问题原因

报错核心是optimize为单变量优化函数,单次仅支持单个固定alpha值下的velo优化,你直接将长度为551的y向量整体传入alpha参数,会导致x_position单次调用返回多值向量,optimize无法识别该类返回值,因此抛出无效函数值报错。此外你原有代码的参数顺序不符合optimize的要求,被优化的变量velo需要放在函数的第一个参数位置。

修正后的可运行代码

y <- seq(0, 55, 0.1)
# 调整参数顺序:被优化变量velo放在第一位
x_position <- function(velo, alpha) {
  # 额外添加角度转弧度处理:R三角函数默认接收弧度值,若你的y本身是弧度可删除*pi/180
  velo*cos(alpha*pi/180) * (velo*sin(alpha*pi/180) + sqrt((velo^2*sin(alpha*pi/180))^2 + 2*16.5*9.81))/9.81
}
# 遍历每个alpha值单独做优化,拼接结果为等长向量
x <- sapply(y, function(alpha_val) {
  optimize(x_position, interval = c(1, 1000), alpha = alpha_val, maximum = TRUE)$objective
})

运行后得到的x就是和y一一对应的最大值向量,可直接用于后续绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:18:03