polar
正方行列の極分解
呼び出し手順
[Rho, Theta] = polar(A)
引数
- A
実数または複素数の正方行列
- Rho
実数行列
- Theta
実数または複素数の行列
説明
[Rho, Theta] = polar(A) は,
A
の極座標形式を返します.
対称行列 Rho
≥ 0 および
エルミート行列 Theta
≥ 0 の時,
A = Rho * expm(%i*Theta)
となります.
例
// Build an input matrix A: Theta_0 = toeplitz(1.5:-0.5:0) Rho_0 = toeplitz(1:4) A = Rho_0 * expm(%i*Theta_0) // Compute its polar matricial components: [Rho, Theta] = polar(A); clean(Rho) // is real symetric clean(Theta) // is hermitian // Check that the computed decomposition builds A as well norm(A - Rho*expm(%i*Theta), 1)
--> Theta_0 = toeplitz(1.5:-0.5:0) Theta_0 = 1.5 1. 0.5 0. 1. 1.5 1. 0.5 0.5 1. 1.5 1. 0. 0.5 1. 1.5 --> Rho_0 = toeplitz(1:4) Rho_0 = 1. 2. 3. 4. 2. 1. 2. 3. 3. 2. 1. 2. 4. 3. 2. 1. --> A = Rho_0 * expm(%i*Theta_0) A = -1.2699509 - 2.1374364i -2.6833779 - 1.9074687i -3.0456968 - 0.7713555i -1.5838266 + 0.7745137i -0.3831402 - 0.8547475i -2.7866925 - 1.5182796i -2.3759306 - 0.8785558i -0.745459 + 0.2813657i -0.745459 + 0.2813657i -2.3759306 - 0.8785558i -2.7866925 - 1.5182796i -0.3831402 - 0.8547475i -1.5838266 + 0.7745137i -3.0456968 - 0.7713555i -2.6833779 - 1.9074687i -1.2699509 - 2.1374364i --> // Compute its polar matricial components: --> [Rho, Theta] = polar(A); --> clean(Rho) // is real symetric ans = 4.441742 + 0.i 2.4611614 + 0.i 1.4611614 + 0.i 1.441742 + 0.i 2.4611614 + 0.i 2.6572775 + 0.i 1.6572775 + 0.i 1.4611614 + 0.i 1.4611614 + 0.i 1.6572775 + 0.i 2.6572775 + 0.i 2.4611614 + 0.i 1.441742 + 0.i 1.4611614 + 0.i 2.4611614 + 0.i 4.441742 + 0.i --> clean(Theta) // is hermitian ans = -0.6115539 + 0.i 0.2232029 + 1.3108917i -0.2767971 + 1.3108917i 1.0300387 + 0.i 0.2232029 - 1.3108917i -1.1008351 + 0.i 1.5407576 + 0.i -0.2767971 - 1.3108917i -0.2767971 - 1.3108917i 1.5407576 + 0.i -1.1008351 + 0.i 0.2232029 - 1.3108917i 1.0300387 + 0.i -0.2767971 + 1.3108917i 0.2232029 + 1.3108917i -0.6115539 + 0.i --> // Check that the computed decomposition builds A as well --> norm(A - Rho*expm(%i*Theta), 1) ans = 1.435D-14
Report an issue | ||
<< lu | Factorization | qr >> |