1. 旋转矩阵求导资料
SLAM的理论部分实在是过于晦涩难懂。仅仅做几点个人从多个知乎问答上看到后的理解记录,汇总了一些问答的内容:
1.反对称矩阵[2]
由于旋转矩阵为正交矩阵,其满足以下性质:
R R T = E \boldsymbol{RR}^T=\boldsymbol{E} RRT=E
等式两边对时间t求导,可得:(PS: 数学不好,,感觉比较像复合函数求导,单位矩阵求导变为0矩阵了)
R ˙ R T + R R ˙ T = 0 \boldsymbol{\dot{R}R}^T+\boldsymbol{R\dot{R}}^T=0 R˙RT+RR˙T=0
移项,变换一下,得到:
R ˙ R T = − ( R ˙ R T ) T \boldsymbol{\dot{R}R}^T=-\left( \boldsymbol{\dot{R}R}^T \right) ^T R˙RT=−(R˙RT)T
数学没学好的不知道矩阵相乘转置为啥要倒过来,可以看这张图(出处是[3],不知道是不是原始出处…)。
可以观察到, R ˙ R T \boldsymbol{\dot{R}R}^T R˙RT满足反对称矩阵性质,按照SLAM十四讲中的符号记法,记这个反对称矩阵为:
w 尖 = [ 0 − w z w y w z 0 − w x − w y w x 0 ] \boldsymbol{w}^{尖} =\left[ \begin{matrix} 0& -w_z& w_y\\ w_z& 0& -w_x\\ -w_y& w_x& 0\\ \end{matrix} \right] w尖=⎣⎡0wz−wy−wz0wxwy−wx0⎦⎤
由 R ˙ R T = w 尖 \boldsymbol{\dot{R}R}^T=\boldsymbol{w}^{尖} R˙RT=w尖,可得旋转矩阵(正交矩阵)的导数为 w 尖 R \boldsymbol{w}^{尖}\boldsymbol{R} w尖R
2. Matlab验证实验
- 首先,在matlab中生成符号矩阵
clear
syms a b c d e f g h i;
Q = [a,b,c;d,e,f;g,h,i];
QR分解得到正交矩阵,但这样生成的正交矩阵好长一串…
Q =
[a/(abs(a)^2 + abs(d)^2 + abs(g)^2)^(1/2),....
[d/(abs(a)^2 + abs(d)^2 + abs(g)^2)^(1/2),....
[g/(abs(a)^2 + abs(d)^2 + abs(g)^2)^(1/2), ....
- 换一种思路,因为需要矩阵对时间t求导,不如元素全用t的函数代替
clear
syms a b c t;
A = [a*t,b*t,c*t;a*t^2,b*t^2,c*t^2;a*t^2,b*t^2,c*t^2];
[Q, R] = qr(A);
Q =
[ (a*t)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2), -((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2), -2^(1/2)*((abs(a)^2*abs(t)^4)/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)))]
[(a*t^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2), -(t*abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)), -2^(1/2)*((abs(a)^2*abs(t)^4)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) + (abs(a)^4*abs(t)^4*(2*abs(t)^2 + 1))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - 1)]
[(a*t^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2), -(t*abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)), -2^(1/2)*((abs(a)^2*abs(t)^4)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) + (abs(a)^4*abs(t)^4*(2*abs(t)^2 + 1))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2))]
然后,对t求导
Diff_R = diff(Q,t)
Diff_R =
[ a/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2)), ((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2) + (((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2)), 2^(1/2)*((abs(a)^2*abs(t)^4)/(t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (4*abs(a)^2*abs(t)^3*sign(t))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (2*abs(a)^2*abs(t)^3*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - (abs(a)^2*abs(t)*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)))]
[(2*a*t)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2)), (t*abs(a)^2*abs(t)^2*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2)) - (2*t*abs(a)^2*abs(t)*sign(t))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) - (abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) + (t*abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)), -2^(1/2)*((4*abs(a)^2*abs(t)^3*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 + (2*abs(a)^4*abs(t)^5*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (abs(a)^4*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^3 + (2*abs(a)^4*abs(t)^3*sign(t)*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2)]
[(2*a*t)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2)), (t*abs(a)^2*abs(t)^2*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2)) - (2*t*abs(a)^2*abs(t)*sign(t))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) - (abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) + (t*abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)), -2^(1/2)*((4*abs(a)^2*abs(t)^3*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 + (2*abs(a)^4*abs(t)^5*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (abs(a)^4*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^3 + (2*abs(a)^4*abs(t)^3*sign(t)*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2)]
求出来很长一串,,然后验证下是不是反对称矩阵。。
T = Diff_R*Q'
T =
[(conj(a)*conj(t)*(a/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2))))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2) + (((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2))))/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2) - 2*((abs(a)^2*abs(t)^4)/(conj(t)*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*conj(t)*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)))*((abs(a)^2*abs(t)^4)/(t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (4*abs(a)^2*abs(t)^3*sign(t))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (2*abs(a)^2*abs(t)^3*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - (abs(a)^2*abs(t)*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))), (conj(a)*conj(t)^2*(a/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2))))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - 2*((abs(a)^2*abs(t)^4)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) + (abs(a)^4*abs(t)^4*(2*abs(t)^2 + 1))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - 1)*((abs(a)^2*abs(t)^4)/(t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (4*abs(a)^2*abs(t)^3*sign(t))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (2*abs(a)^2*abs(t)^3*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - (abs(a)^2*abs(t)*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))) - (abs(a)^2*abs(t)^2*conj(t)*(((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2) + (((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2))))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)), (conj(a)*conj(t)^2*(a/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2))))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - 2*((abs(a)^2*abs(t)^4)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) + (abs(a)^4*abs(t)^4*(2*abs(t)^2 + 1))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2))*((abs(a)^2*abs(t)^4)/(t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (4*abs(a)^2*abs(t)^3*sign(t))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) - (2*abs(a)^2*abs(t)^3*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t^2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - (abs(a)^2*abs(t)*sign(t)*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(t*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))) - (abs(a)^2*abs(t)^2*conj(t)*(((abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (2*abs(a)^2*abs(t)*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4))/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2) + (((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2))))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2))]
[ 2*((abs(a)^2*abs(t)^4)/(conj(t)*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)) + (abs(a)^2*abs(t)^2*((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*(2*abs(t)^2 + 1))/(2*conj(t)*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)))*((4*abs(a)^2*abs(t)^3*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 + (2*abs(a)^4*abs(t)^5*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (abs(a)^4*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^3 + (2*abs(a)^4*abs(t)^3*sign(t)*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (((abs(a)^2*abs(t)^2)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - 1)*((abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) + (2*t*abs(a)^2*abs(t)*sign(t))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) - (t*abs(a)^2*abs(t)^2*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2)) - (t*abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2))))/((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2) + (conj(a)*conj(t)*((2*a*t)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2))))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2), 2*((abs(a)^2*abs(t)^4)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) + (abs(a)^4*abs(t)^4*(2*abs(t)^2 + 1))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) - 1)*((4*abs(a)^2*abs(t)^3*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 + (2*abs(a)^4*abs(t)^5*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (abs(a)^4*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^3 + (2*abs(a)^4*abs(t)^3*sign(t)*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (conj(a)*conj(t)^2*((2*a*t)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2))))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) + (abs(a)^2*abs(t)^2*conj(t)*((abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) + (2*t*abs(a)^2*abs(t)*sign(t))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) - (t*abs(a)^2*abs(t)^2*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2)) - (t*abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2))))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)), 2*((abs(a)^2*abs(t)^4)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) + (abs(a)^4*abs(t)^4*(2*abs(t)^2 + 1))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2))*((4*abs(a)^2*abs(t)^3*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4) - (abs(a)^2*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 + (2*abs(a)^4*abs(t)^5*sign(t))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2 - (abs(a)^4*abs(t)^4*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t))*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^3 + (2*abs(a)^4*abs(t)^3*sign(t)*(2*abs(t)^2 + 1))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2) + (conj(a)*conj(t)^2*((2*a*t)/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) - (a*t^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(3/2))))/(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^(1/2) + (abs(a)^2*abs(t)^2*conj(t)*((abs(a)^2*abs(t)^2)/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) + (2*t*abs(a)^2*abs(t)*sign(t))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2)) - (t*abs(a)^2*abs(t)^2*((4*abs(t)*sign(t))/(2*abs(t)^2 + 1) - (8*abs(t)^3*sign(t))/(2*abs(t)^2 + 1)^2))/(2*(abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(3/2)) - (t*abs(a)^2*abs(t)^2*(2*abs(a)^2*abs(t)*sign(t) + 8*abs(a)^2*abs(t)^3*sign(t)))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)^2*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2))))/((abs(a)^2*abs(t)^2 + 2*abs(a)^2*abs(t)^4)*((2*abs(t)^2)/(2*abs(t)^2 + 1))^(1/2))]
[
然后,用个函数验证下T是不是反对称矩阵…
if(T==(-T'))
fprintf('该矩阵是反对称矩阵\n');
else
fprintf('该矩阵不是反对称矩阵\n');
end
没找到问题所在,可能是matlab做的是数值计算不精准?
参考文献
[1] https://www.zhihu.com/question/422718770
[2] https://zhuanlan.zhihu.com/p/388778282
[3]https://www.zhihu.com/question/430903721/answer/1586962146