首页 > 解决方案 > 使用python近似梯度

问题描述

我试图解决以下问题。

对于梯度的计算,我们不得不使用近似计算:

在此处输入图像描述

我尝试为 R^4 的规范基础的每个向量 e 求解它,并使用 h = 1e-05 例如。

但是,我为 R^2 做了一个示例,但我不确定我的代码是否适合这种情况,我需要更改图片中公式的代码。

def f(x,y):
    return np.sin(x)+np.cos(y)
def derivative(func, vx, h):
    e = np.array([[1,0],[0,1]]) #Basis canonique of R^2
    x = vx[0]
    y = vx[1]
    dx=(func(x + e[0]*h,y) - func(x,y)) / h #directional derivative in x
    dy=(func(x ,y+e[1]*h) - func(x,y)) / h #directional derivative in y
    grad = np.array([dx[0],dy[1]])
    return grad

vx=np.array([np.pi,1])
derivative(f,vx,h)

此代码的结果:

In [150]: derivative(f,vx,h)
Out[150]: array([-1.        , -0.84147369])

我有点困惑如何解决这个问题,但我希望能得到一些帮助来修复我迄今为止生成的代码。谢谢!

标签: python-3.xspydernumerical-methods

解决方案


查看第 4.6 节 - 以下文本的方程组:

Python 3 工程中的数值方法(第 3 版)


推荐阅读