最速下降法python

最速下降法是一種求解無約束最佳化問題的數值方法,其基本思想是沿著函式下降最快(即下降最快)的方向進行搜尋。在Python中,可以使用NumPy庫來實現最速下降法。

下面是一個使用最速下降法求解無約束最佳化問題的Python代碼示例:

import numpy as np

# 目標函式
def objective_function(x):
    return x**2 - x + 1

# 最速下降法參數
alpha = 0.01
beta = 0.9
max_iter = 1000
tol = 1e-6

# 初始點
x_init = 2

# 最速下降法疊代
for i in range(max_iter):
    grad = np.gradient(objective_function(x_init))
    x_new = x_init - alpha * grad[0]
    if np.abs(objective_function(x_new)) < tol:
        break
    x_init = x_new
    print("Iteration %d: x = %f, f(x) = %f" % (i+1, x_new, objective_function(x_new)))

在這個示例中,我們定義了一個目標函式objective_function,它是一個二次函式。我們使用np.gradient函式來計算目標函式的梯度,並使用最速下降法進行疊代搜尋。我們使用alpha參數控制搜尋方向,使用beta參數控制步長,使用max_iter參數控制最大疊代次數,使用tol參數控制收斂閾值。在每次疊代中,我們根據當前點更新搜尋方向和新的點,並輸出當前的疊代次數、新的點和目標函式值。當目標函式的值小於收斂閾值時,我們停止疊代。

需要注意的是,最速下降法是一種局部最佳化方法,可能在某些情況下無法找到全局最優解。因此,在實際套用中,需要根據具體情況選擇其他最佳化方法。