トレースの性質

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

\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で試す。

実行結果

35
35

48
48

248
248

ソースコード。

#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をコピーしました