矩阵求导数

(一)向量求导基础

矩阵和向量求导的几种形式(注意A不要求是对称矩阵):

D ( A x ) = A T \color{red} D (Ax) = A^T D(Ax)=AT

证明:
此处要注意转置运算,因为梯度要转化为列向量的形式,故要转置一下。

D ( x T A ) = A \color{red} D (x^TA) = A D(xTA)=A

证明:
此处要注意矩阵的转置,因为是求解的x的转置,故要转置两次,得到原矩阵A。

D ( ∣ ∣ x ∣ ∣ 2 ) = D ( x T x ) = 2 x \color{red} D (||x||^2) = D (x^Tx) = 2x D(∣∣x2)=D(xTx)=2x

D ( ∣ ∣ x ∣ ∣ F 2 ) = 2 x \color{red} D (||x||^2_F) = 2x D(∣∣xF2)=2x

证明:

D ( x T x ) = ( x + Δ x ) T ( x + Δ x ) − x T x Δ x = x T Δ x + Δ x T x + Δ x T Δ x Δ x D(x^Tx) =\frac{ (x+\Delta x)^T(x + \Delta x) - x^Tx }{\Delta x}= \frac{x^T\Delta x+\Delta x^Tx +\Delta x^T\Delta x}{\Delta x} D(xTx)=Δx(x+Δx)T(x+Δx)xTx=ΔxxTΔx+ΔxTx+ΔxTΔx

注意到,上式分子中第一项和第二项是完全一样的,故上式结果是2x

D ( x T A x ) = ( A + A T ) x \color{red} D( x^T A x) = (A + A^T)x D(xTAx)=(A+AT)x

证明:

D ( x T A x ) = ( x T + Δ x T ) A ( x + Δ x ) − x T A x Δ x = x T A Δ x + Δ x T A x + Δ x T A Δ x Δ x D( x^T A x) = \frac{(x^T+\Delta x ^T)A(x + \Delta x) - x^TA x}{\Delta x} =\\ \frac{x^T A\Delta x +\Delta x^TAx + \Delta x^TA\Delta x}{\Delta x} D(xTAx)=Δx(xT+ΔxT)A(x+Δx)xTAx=ΔxxTAΔx+ΔxTAx+ΔxTAΔx

容易看出,上式中分子的第一项和第二项都是标量二次型,假设A维度是mxn,且k=max(m,n),将A扩充为kxk维矩阵后,得到化简后结果为 ( A T + A ) x (A^T + A)x (AT+A)x

没有那么多技巧,上述几个公式必须要牢记!

下一篇:
https://editor.csdn.net/md/?not_checkout=1&spm=1001.2014.3001.4503

(二)例子

例子:
矩阵 A = ∣ 1 2 1 2 − 1 3 ∣ , 计算 f ( x ) = ∣ ∣ A x ∣ ∣ 2 ∣ ∣ x ∣ ∣ 2 的最大值。 矩阵A = \begin {vmatrix} 1 & 2 & 1\\2 & -1 & 3 \end {vmatrix},计算f(x) = \frac{||Ax||_2}{||x||_2}的最大值。 矩阵A= 122113 ,计算f(x)=∣∣x2∣∣Ax2的最大值。

(此题解题思路错误!)
解:

根据导数定义和性质,极值处导数为0。首先求出矩阵的导数,置为0后求解。

首先 f ( x ) = ∣ x 1 x 2 x 3 ∣ ∣ 1 2 2 − 1 1 3 ∣ ∣ 1 2 1 2 − 1 3 ∣ ∣ x 1 x 2 x 3 ∣ x 1 2 + x 2 2 + x 3 2 = ∣ x 1 x 2 x 3 ∣ ∣ 5 0 7 0 5 − 1 7 − 1 10 ∣ ∣ x 1 x 2 x 3 ∣ x 1 2 + x 2 2 + x 3 2 f(x) = \frac{ \begin {vmatrix} x_1 x_2 x_3 \end {vmatrix} \begin {vmatrix} 1 & 2 \\2 & -1 \\1 & 3 \end {vmatrix}\begin {vmatrix} 1 & 2 & 1\\2 & -1 & 3 \end {vmatrix} \begin {vmatrix} x_1\\ x_2\\x_3 \end {vmatrix} }{x_1^2 + x_2^2 + x_3^2} =\\ \frac{ \begin {vmatrix} x_1 x_2 x_3 \end {vmatrix} \begin {vmatrix} 5 & 0 & 7\\0 & 5 & -1 \\7 & -1 & 10\end {vmatrix} \begin {vmatrix} x_1\\ x_2\\x_3 \end {vmatrix} }{x_1^2 + x_2^2 + x_3^2} f(x)=x12+x22+x32 x1x2x3 121213 122113 x1x2x3 =x12+x22+x32 x1x2x3 5070517110 x1x2x3

考虑矩阵 x T A T A x x^T A ^ T A x xTATAx求导:

( x + Δ x ) T A T A ( x + Δ x ) = ( x T + Δ x T ) A T A ( x + Δ x ) = ( x T A T A + Δ x T A T A ) ( x + Δ x ) = x T A T A x + x T A T A Δ x + Δ x T A T A x + Δ x T A T A Δ x (x + \Delta x)^T A ^ T A (x + \Delta x) =(x^T + \Delta x ^ T) A ^ T A (x + \Delta x) =\\ (x^T A ^ T A + \Delta x ^ T A ^ T A ) (x + \Delta x) = \\ x^T A ^ T A x +x^T A ^ T A \Delta x + \Delta x ^ T A ^ T A x + \Delta x ^ T A ^ T A \Delta x (x+Δx)TATA(x+Δx)=(xT+ΔxT)ATA(x+Δx)=(xTATA+ΔxTATA)(x+Δx)=xTATAx+xTATAΔx+ΔxTATAx+ΔxTATAΔx

注意:上式中每一项都是一个标量,而不是向量。 \color{red}注意:上式中每一项都是一个标量,而不是向量。 注意:上式中每一项都是一个标量,而不是向量。

∣ ∣ ( x + Δ x ) T A T A ( x + Δ x ) − x T A T A x ∣ ∣ ∣ ∣ Δ x ∣ ∣ = ∣ ∣ x T A T A Δ x + Δ x T A T A x + Δ x T A T A Δ x ∣ ∣ ∣ ∣ Δ x ∣ ∣ = 2 A T A x \frac { ||(x + \Delta x)^T A ^ T A (x + \Delta x) -x^T A ^ T A x ||}{ || \Delta x||} = \\ \frac {||x^T A ^ T A \Delta x + \Delta x ^ T A ^ T A x + \Delta x ^ T A ^ T A \Delta x ||}{ ||\Delta x ||} = 2 A^ TA x ∣∣Δx∣∣∣∣(x+Δx)TATA(x+Δx)xTATAx∣∣=∣∣Δx∣∣∣∣xTATAΔx+ΔxTATAx+ΔxTATAΔx∣∣=2ATAx

注意:上式取 2 A T A x 而不是 x T A T A 的原因是, Δ x 一般是列向量,需要放在后面,此时需要将矩阵导数放在前面,并转置。 \color{red}注意:上式取2 A^ TA x而不是x^ TA ^T A的原因是,\\ \Delta x一般是列向量,需要放在后面,此时需要将矩阵导数放在前面,并转置。 注意:上式取2ATAx而不是xTATA的原因是,Δx一般是列向量,需要放在后面,此时需要将矩阵导数放在前面,并转置。

现在将导数置为0并求解方程组:

2 A T A x = 0 2 A^ TA x = 0 2ATAx=0 得到方程组的解是矩阵的特征向量。

此方法对吗 ? \color{red}此方法对吗? 此方法对吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
雅可比矩阵导数在Matlab中可以通过两种方法来表示。 第一种方法是使用符号表达式。你可以使用Matlab中的符号计算工具箱来定义符号变量,并使用这些变量来表示雅可比矩阵的各个元素。然后,可以使用diff函对这些表达式进行求导。这种方法适用于已知的函表达式。 第二种方法是使用值逼近。你可以使用Matlab中的求导,例如gradient和jacobian,对函进行值逼近。这种方法适用于无法获得明确函表达式的情况。 所以,根据你的需求和具体情况,你可以选择适合的方法来计算雅可比矩阵导数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Matlab 自编雅可比矩阵 (jacobi) 函与官方的Jacobian matrix(雅可比矩阵)函对比及创新](https://blog.csdn.net/cugautozp/article/details/125140981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [雅可比矩阵matlab实现](https://blog.csdn.net/gloriazhang2013/article/details/70758739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值