Loading [MathJax]/extensions/TeX/boldsymbol.js

トレースの性質

トレースにはつぎのようなの性質がある。

\begin{align} \mathrm{tr} {A1} + \mathrm{tr}{A2} &= \mathrm{tr} ( A1+A2 ) \\ a\ \mathrm{tr} {A1} &= \mathrm{tr} (a\ A1) \\ \mathrm{tr} (A1 A2) &= \mathrm{tr} (A2 A1) \end{align}

これが成り立つことをEigenで試す。

実行結果

1
2
3
4
5
6
7
8
35
35
 
48
48
 
248
248

ソースコード。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include "../Eigen/Dense"
 
int main() {
    double a = 3;
    Eigen::Matrix3f sumA, A1A2, A2A1, A1, A2, B;
     
    A1 << 1, 2, 3, 4, 5, 6, 7, 8, 10;
    A2 << 1, 3, 6, 1, 8, 3, 7, 1, 10;
     
    sumA = A1 + A2;
    A1A2 = A1 * A2;
    A2A1 = A2 * A1;
    B = a * A1;
 
    //trA1+trA2=tr(A1+A2)
    std::cout << A1.trace() + A2.trace() << std::endl;
    std::cout << sumA.trace() << std::endl;
    std::cout << std::endl;
    //a tr(A1)= tr(aA1)
    std::cout << B.trace() << std::endl;
    std::cout << a * A1.trace() << std::endl;
    std::cout << std::endl;
 
    //tr(A1 A2)= tr(A2 A1)
    std::cout << A1A2.trace() << std::endl;
    std::cout << A2A1.trace() << std::endl;
 
    return 0;
}

コメント

タイトルとURLをコピーしました