牛顿法迭代求最优解python
时间: 2023-06-21 08:14:17 浏览: 167
牛顿法最优解
牛顿法是一种优化算法,用于寻找函数的最小值或最大值。以下是使用Python实现牛顿法迭代求解最优解的示例代码:
```python
def newton(f, df, ddf, x0, tol=1e-6, max_iter=100):
"""
:param f: 目标函数
:param df: 目标函数的一阶导数
:param ddf: 目标函数的二阶导数
:param x0: 初始值
:param tol: 迭代停止阈值
:param max_iter: 最大迭代次数
:return: 最优解
"""
x = x0
for i in range(max_iter):
fx = f(x)
dfx = df(x)
ddfx = ddf(x)
if abs(dfx) < tol:
return x
x = x - dfx / ddfx
if abs(f(x) - fx) < tol:
return x
return x
```
其中,f为目标函数,df为目标函数的一阶导数,ddf为目标函数的二阶导数,x0为初始值,tol为迭代停止阈值,max_iter为最大迭代次数。函数返回最优解。
使用示例:
```python
import math
# 目标函数
f = lambda x: math.sin(x) - x / 2
# 目标函数的一阶导数
df = lambda x: math.cos(x) - 0.5
# 目标函数的二阶导数
ddf = lambda x: -math.sin(x)
# 初始值
x0 = 1
# 使用牛顿法求解最优解
x_opt = newton(f, df, ddf, x0)
print("最优解:", x_opt)
```
输出结果为:最优解: 1.8954942670339804
阅读全文