R语言完整代码,利用求驻点的方法求函数f(x)=e⁻ˣ²(x+sinx)在区间[-2,2]上的极小值点和极大值点。
时间: 2024-10-20 19:11:13 浏览: 38
4.4.3 不同函数增长的差异——小学生ppt学习课件
在R语言中,我们可以使用`uniroot`函数来寻找函数的驻点(根),即导数为零的地方,然后再结合`optimize`函数来确定这些点附近的局部最小值和最大值。请注意,这种方法并不保证找到全局最优解,因为函数可能有多个极值点。
以下是完成此任务的R代码:
```r
# 定义函数 f(x)
f <- function(x) exp(-x^2)*(x + sin(x))
# 寻找函数的导数 f'(x)
f_prime <- function(x) -2*x*exp(-x^2) + cos(x) + exp(-x^2)
# 驻点的搜索范围 [-2, 2]
interval <- c(-2, 2)
# 使用 uniroot 函数找出驻点
critical_points <- uniroot(f_prime, interval = interval)
# 检查是否有根
if (!is.nan(critical_points$root)) {
# 计算极值点附近的函数值
local_min_max <- optimize(f, interval = critical_points$root, maximum = TRUE)
# 输出极值点和对应的函数值
cat("极小值点:", critical_points$root, "\n")
cat("极小值:", local_min_max$max, "\n")
cat("极大值点:", local_min_max$minimum, "\n")
cat("极大值:", local_min_max$objective, "\n")
} else {
cat("未找到驻点。\n")
}
```
这段代码首先计算了函数`f(x)`的导数`f_prime(x)`,然后查找导数在`[-2, 2]`区间内的零点,即驻点。接着,它使用`optimize`函数在每个驻点附近寻找局部极值。最后,打印出找到的极小值点、极大值点以及相应的函数值。
阅读全文