以下是一个简单的一元函数的梯度下降代码实现:

import numpy as np

# 定义目标函数
def f(x):
    return x**2 + 5*np.sin(x)

# 定义目标函数的一阶导数
def df(x):
    return 2*x + 5*np.cos(x)

# 设置初始参数
x0 = 2
learning_rate = 0.01
max_iterations = 1000

# 定义梯度下降函数
def gradient_descent(x0, learning_rate, max_iterations):
    x = x0
    for i in range(max_iterations):
        gradient = df(x)
        x -= learning_rate * gradient
    return x

# 运行梯度下降函数
x_min = gradient_descent(x0, learning_rate, max_iterations)

# 输出结果
print("最小值点:", x_min)
print("最小值:", f(x_min))

在这个例子中,目标函数是 $f(x) = x^2 + 5\sin(x)$,目标是找到使函数最小化的输入 $x$。我们使用梯度下降算法来最小化函数。在每次迭代中,我们计算目标函数的一阶导数 $\frac{df(x)}{dx}$,并将其乘以学习率 $\alpha$。然后我们将当前的 $x$ 减去这个乘积,以更新 $x$。我们不断地进行这个过程,直到达到最大迭代次数,或者找到满足收敛条件的最优解。

在这个例子中,我们的初始值为 $x_0 = 2$,学习率为 $\alpha = 0.01$,最大迭代次数为 $1000$。最终输出的结果是最小值点和最小值。

一元函数的梯度下降代码

原文地址: http://www.cveoy.top/t/topic/buVG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录