【问题标题】:Calculate gradient of norm of a vector with respect to a vector in python在python中计算向量的范数相对于向量的梯度
【发布时间】:2019-08-26 17:03:33
【问题描述】:

我想计算梯度 (f(v(X))) 其中 f(a) : second_norm(a);

X : a vector of 1*n dimension :: as an example for n == 2:  [x1, x2]
v(X) : (((x1)^m)*P + ((x2)^m)*Q)/(x1^m + x2^m);

其中 P 和 Q 是向量

那么python中有什么函数可以帮助我解决这个问题吗?如果有,请详细说明。

我真的需要帮助! 提前致谢!

【问题讨论】:

    标签: python numpy vector gradient norm


    【解决方案1】:

    如果我理解你的函数 P 和 Q 应该是相同维度的两个向量。 在这种情况下,使用 numpy 数组就足够了。 我放了一个非常简单的代码,可能会对你有所帮助:

    import numpy as np
    x1=2
    x2=5
    a=[x1,x2]
    m=5
    
    P=np.array([1,2,3,4])
    Q=np.array([5,6,7,8])
    
    print((  (a[0]**m)*P +(a[1]**m)*Q   )/(a[0]**m  + a[1]**m))
    

    输出: 数组([4.95945518, 5.95945518, 6.95945518, 7.95945518])

    一般来说,如果要将向量与标量相乘,则需要使用 numpy 数组。

    【讨论】:

    • 我需要使用python梯度函数找出梯度(f(V(X)))而不仅仅是V(X),n = 2只是一个例子; n 是一个很大的未知数;
    • 对,对不起。如果 x1 和 x2 是您的坐标,那么您应该将运算符“nabla”应用于您的函数。如果您将 V(x) 写为 [(x1^m)*P/(x1^m + x2^m)] + [(x2^m)*Q/(x1^m + x2^m)] 那么其微分是: [(m(x2^m)*(x1^(m-1))*P/(x1^m + x2^m)^2 ] (i) + (m(x1^m)* (x2^(m-1))*Q/(x1^m + x2^m)^2 ] (j)。其中 (i) 和 (j) 是两个分量。然后可以将这个公式应用于每个 x1 x2 对。也可以看看:en.wikipedia.org/wiki/Gradient
    猜你喜欢
    • 2016-11-27
    • 2012-05-12
    • 2018-06-16
    • 2015-06-17
    • 1970-01-01
    • 2016-03-08
    • 2015-07-16
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多