用R语言编写一个用二分法求非线性方程根的函数
时间: 2024-10-21 12:06:37 浏览: 46
数值分析第四章知识点总结——非线性方程求根.pdf
在R语言中,我们可以创建一个自定义函数来实现二分查找法(也称为牛顿迭代法或黄金分割搜索),用于寻找非线性方程的近似解。这里是一个简单的例子:
```r
# 定义一个二分查找函数,接受一个函数f(x)、初始区间a和b以及精度eps作为输入
binary_search <- function(f, a, b, eps = 1e-6) {
# 检查区间是否包含0,如果包含则返回该点作为根
if (f(a) * f(0) <= 0) return(a)
# 如果区间长度小于等于精度,则直接返回中间值
if (abs(b - a) < eps) return(mean(c(a, b)))
# 计算新的分割点c
c <- a + (b - a) / sqrt(2)
# 使用递归的方式继续查找
if (abs(f(c)) < abs(f(a))) {
# 如果新点c的函数值接近0,向右半区逼近
return(binary_search(f, c, b, eps))
} else {
# 否则,向左半区逼近
return(binary_search(f, a, c, eps))
}
}
# 示例:假设我们要找函数x^2 - 2 = 0的根
f <- function(x) x^2 - 2
# 调用函数并打印结果
root <- binary_search(f, -5, 5)
cat("Root found is approximately: ", root, "\n")
阅读全文