矩阵操作的问题

时间:2012-04-30 05:33:28

标签: matlab matrix sparse-matrix

我有两个矩阵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)

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

1 个答案:

答案 0 :(得分:2)

我认为您的矩阵AB大小相同,并且都是正方形。如果情况并非如此,请告诉我。

在这种情况下,A/BA * inv(B)相同。为了区分这一点,您可以使用正常的Leibniz规则进行区分,小心保持产品的顺序相同(因为矩阵乘法不会通勤):

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

如果你检查Wikipedia,你会发现矩阵逆的导数是

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

这是你能做到的最简洁。一般来说,您不希望ABdA/dxdB/dx中的任何一个相互通信,因此您无法再简化此操作。当然,如果在您的应用程序中有某些原因,其中某些矩阵将始终通勤,那么可能会进一步简化。