0

我有两个矩阵 A 和 B 以及一个矩阵 C

C=A/B

现在我想取 C 的导数,即

(B*dA/dx - A*dB/dx)/B^2

我不确定上面会是什么样子。我发现某个地方看起来像

(B/B)*((dA/dx)/B) - (A/B)*(dB/dx)/B

我很困惑我可以执行什么样的操作。我可以这样做吗

(B/B^2) * (dA/dx) - (A/B^2)*(dB/dx)

我尝试了以上两个,他们给了我不同的结果。我不确定允许哪些操作,尤其是在矩阵的情况下,尤其是乘法和除法。那么有人可以澄清一下吗?

4

1 回答 1

2

我假设您的矩阵AB大小相同,并且都是正方形。如果不是这种情况,请告诉我。

在这种情况下,A/B与 是一样的A * inv(B)。为了区分这一点,您使用正常的 Leibniz 规则进行区分,注意保持产品的顺序相同(因为矩阵乘法不会对易):

d/dx (A * inv(B)) = dA/dx * inv(B) + A * d(inv(B))/dx

如果您查看维基百科,您会发现矩阵逆的导数是

d(inv(B))/dx = -inv(B) * dB/dx * inv(B)

所以对于你得到的产品的衍生物

d/dx (A * inv(B)) = dA/dx * inv(B) - A * inv(B) * dB/dx * inv(B)

inv(B)您可以将两边的乘法分解出来,给出

d/dx (A * inv(B)) = (dA/dx - A * inv(B) * dB/dx) * inv(B)

你现在可能想使用 Matlab 的左右除法运算符来编写表达式,给出

d/dx (A/B) = (dA/dx - (A/B) * dB/dx) / B

这是你能做到的最简洁的。通常,您不希望任何A, B,dA/dxdB/dx相互通勤,因此您不能再简化此操作。当然,如果在您的应用程序中,您确实有某些理由认为这些矩阵中的某些矩阵将始终通勤,那么进一步的简化可能是可能的。

于 2012-04-30T07:52:07.100 回答