1.梯度下降法

1.jpg

实验室代码

(输入的函数必须是在任意自变量处可导的)

from sympy import *
from sympy.abc import *

def 梯度下降法(func,*args,l=0.1,s=0.001):
    #计算理论梯度,并随机初始化向量x,即“当前位置”(这里为简化代码假设向量的各个分量全为1)
    梯度 = Matrix([diff(func(*args),i,1) for i in args]).T
    当前位置 = Matrix([1 for i in args]).T
    #迭代
    while not (当前梯度 := 梯度.subs(list(zip(args,当前位置)))).norm(2)

运行输出:

Matrix([[0.000191581231380566, 0.000191581231380566]])

x=0.000191581231380566, y=0.000191581231380566
就是要找的极小值点(近似)

你可能感兴趣的:(1.梯度下降法)