转载来源:
https://blog.csdn.net/tangeng5474/article/details/106153216 点此直接跳转到原文
目录
1(1)标量对标量求导(略)
(2)向量对标量求导 (略)
(3) 矩阵对标量求导
2(1)标量对向量求导
(2)向量对向量求导
(3) 矩阵对向量求导
3(1)标量对矩阵求导
(3) 矩阵对矩阵求导
附上matlab代码,可自行观察实验结果
clear;clc
syms x y z v;
f1 = [x*y, x+y;
y*z, y+z;
x*y*z, x+y+z];% 矩阵
f2 = [x*y;y*z;x*y*z];% 列向量
f3 = x*y*z; %标量
v1 = x; %标量
v2 = [x;y]; %列向量
v3 = [x*y, x+y;
y*z, y+z;
x*y*z, x+y+z]; %矩阵
% 对标量求导用diff
f3v1=diff(f3,v1) % 标量对标量求导为标量
f2v1=diff(f2,v1) % 列向量对标量求导为列向量
f1v1=diff(f1,v1) % 矩阵对标量求导为矩阵
% 对向量求导用jacobian
% 标量对向量求导为向量,以下两种情况结果相同
f3v2=jacobian(f3,v2)
f3v2=jacobian(f3,v2.')
% 数学上定义1*n行向量对m*1列向量求导后构成m*n矩阵。
% jacobian函数通过向量对向量求导构成矩阵,以下四种情况结果相同
% 注:syms型求转置需用 .'
f2v2=jacobian(f2.',v2)
f2v2=jacobian(f2,v2.')
f2v2=jacobian(f2,v2)
f2v2=jacobian(f2.',v2.')
% 对矩阵求导
% matlab里面未找到能够直接用的函数,若大家有知道的还望告知,谢谢