在区间[1,4]优化方程时x、y最小值结果异常的技术问询
解决R中optimize函数求解最小值出错的问题
问题原因
你调用optimize()时传入的y是预先计算好的数值向量,但该函数要求第一个参数必须是可调用的函数对象,而非现成的数值结果,这是导致结果错误的核心原因。
正确实现代码
# 定义目标优化函数 f <- function(x) { x^2 + 54/x } # 生成数据并绘制曲线 x <- seq(from=1, to=4, by=0.1) df <- data.frame(x = x, y = f(x)) library(ggplot2) ggplot(df, aes(x, y)) + geom_line() # 调用optimize求解区间[1,4]内的最小值 min_result <- optimize(f, interval = c(1, 4), maximum = FALSE) print(min_result)
结果说明
运行后会得到正确的极小值点:x约等于3(理论上该函数的极小值点为x=3),对应的y值为27,和曲线趋势完全匹配。maximum = FALSE显式指定求解最小值(默认行为也是求最小,显式声明更直观)。
内容的提问来源于stack exchange,提问作者ASHUTOSH KAUSHAL
相关产品推荐
相关产品推荐

