对函数f(x1,x2,x3)=x1的平方+x2的平方+x3的平方,采用最速下降法求出其最小值,初始点为(1,1,1),变化的s为0.05.最大迭代次数为100,给我代码
时间: 2024-10-26 18:17:09 浏览: 17
要使用梯度下降法(也称为最速下降法)求解多元函数 \( f(x_1, x_2, x_3) = x_1^2 + x_2^2 + x_3^2 \) 的最小值,我们首先需要计算该函数的梯度(即每个变量的一阶导数)。对于这个二次函数,梯度很容易得出:
\[
\nabla f(x) = (2x_1, 2x_2, 2x_3)
\]
给定初始点 \( x = (1, 1, 1) \),学习率 \( s = 0.05 \),以及最大迭代次数为100,我们可以编写一个简单的Python代码来实现这一过程。这里假设我们将使用`numpy`库来进行向量化计算:
```python
import numpy as np
# 函数f的定义
def function(x):
return np.sum(x**2)
# 梯度函数
def gradient(x):
return 2 * x
# 初始化参数
x = np.array([1, 1, 1])
learning_rate = 0.05
max_iterations = 100
tolerance = 1e-6 # 设置停止条件的阈值
for iteration in range(max_iterations):
gradient_vec = gradient(x)
if np.linalg.norm(gradient_vec) < tolerance: # 如果梯度足够小,则退出循环
break
x -= learning_rate * gradient_vec # 更新步长
# 最终结果
minimum = function(x)
optimal_point = x.tolist()
print(f"最小值为 {minimum},在点 ({optimal_point[0]}, {optimal_point[1]}, {optimal_point[2]})")
阅读全文