梯度下降法求解无约束非线性规划问题代码python
时间: 2024-10-20 22:13:21 浏览: 49
梯度下降法是一种常用的优化算法,用于寻找函数的局部最小值,尤其适用于解决无约束非线性最优化问题。在Python中,我们可以使用一些科学计算库如NumPy和scipy.optimize模块来实现这个过程。
下面是一个简单的例子,展示如何使用梯度下降法求解一个无约束非线性函数的最小值:
```python
import numpy as np
# 假设我们有一个目标函数 f(x)
def objective_function(x):
return x**2 + 5 * x + 6 # 这里只是一个示例,你可以替换为实际的函数
# 定义梯度下降函数
def gradient_descent(f, initial_guess, learning_rate=0.01, tolerance=1e-6, max_iter=1000):
x = initial_guess
grad_f = lambda x: np.gradient(f(x), x) # 计算函数的一阶导数
for _ in range(max_iter):
gradient = grad_f(x)
if abs(gradient).max() < tolerance: # 当梯度足够小,认为找到临界点
break
x -= learning_rate * gradient # 更新x
return x
# 初始化猜测点
initial_point = np.array([0])
# 调用梯度下降
solution = gradient_descent(objective_function, initial_point)
print(f"最优解为: {solution}")
阅读全文