编写一个python函数,使用梯度下降算法来最小化:f(x)=(x-3)²+4,要求迭代十次,学习率为0.1,初始值为x0=0,输出每次迭代的x值和对应的函数值f(x)
时间: 2024-09-15 19:14:00 浏览: 49
首先,让我们编写一个Python函数,利用梯度下降算法来求解给定的一元二次方程 \( f(x) = (x - 3)^2 + 4 \),并按照你的要求迭代10次,学习率设置为0.1,初始值设为 \( x_0 = 0 \)。
```python
import numpy as np
def gradient_descent(f, derivative, initial_x, learning_rate, num_iterations):
x_values = [initial_x]
function_values = [f(initial_x)]
for _ in range(num_iterations):
# 计算梯度
grad = derivative(initial_x)
# 更新x值
new_x = initial_x - learning_rate * grad
# 保存新的x值和函数值
x_values.append(new_x)
function_values.append(f(new_x))
# 更新初始值为最新x值
initial_x = new_x
return x_values, function_values
# 定义目标函数及其导数
def quadratic_function(x):
return (x - 3)**2 + 4
def derivative_quadratic_function(x):
return 2 * (x - 3)
# 运行梯度下降算法
x_values, function_values = gradient_descent(quadratic_function, derivative_quadratic_function, 0, 0.1, 10)
print("每次迭代的x值:", x_values)
print("对应的函数值f(x):", function_values)
阅读全文