二次逼近法求函数极小值,代码
时间: 2023-07-02 10:12:29 浏览: 64
以下是使用二次逼近法求解函数极小值的 Python 代码:
```python
import numpy as np
def quadratic_approximation(f, x0, tol=1e-6, max_iter=100):
"""使用二次逼近法求解函数极小值"""
x = x0
for i in range(max_iter):
# 计算函数在当前点的值和导数
fx = f(x)
dfx = (f(x + tol) - f(x - tol)) / (2 * tol)
# 计算二次逼近函数的系数
d2fx = (f(x + tol) - 2 * fx + f(x - tol)) / (tol ** 2)
a = d2fx / 2
b = dfx - 2 * a * x
c = fx - a * x ** 2 - b * x
# 计算极小值的位置
x_new = -b / (2 * a)
# 如果迭代结束或者达到收敛条件,则返回结果
if abs(x_new - x) < tol or abs(fx - f(x_new)) < tol:
return x_new
else:
x = x_new
return x
```
其中,`f` 是要求解极小值的函数,`x0` 是初始点,`tol` 是收敛精度,`max_iter` 是最大迭代次数。函数中,首先计算函数在当前点的值和导数,然后利用这些信息计算二次逼近函数的系数,进而求出极小值的位置。最后,判断是否达到收敛条件,如果是则返回结果,否则继续迭代。