Solve a Matrix equation

24 ビュー (過去 30 日間)
Zhiqiang Xu
Zhiqiang Xu 2020 年 11 月 23 日
回答済み: Ameer Hamza 2020 年 11 月 23 日
Hi, I was struggling in this equation for serveal days.
A' * B * A =P
Solve A.
A is an unknown 4X1 complex matrix and A' is the transpose conjugate of A.
B is a known 4X4 complex matrix.
P is 1X1.
Do anybody know how to solve it on the matlab?
  1 件のコメント
Stephan
Stephan 2020 年 11 月 23 日
Can you provide values for B and P?

サインインしてコメントする。

回答 (2 件)

Stephan
Stephan 2020 年 11 月 23 日
編集済み: Stephan 2020 年 11 月 23 日
Symbolic approach:
A = sym('A', [4,1])
B = magic(4)
P = 13
sol = solve(A'*B*A==P, A)
sol.A1
sol.A2
sol.A3
sol.A4
% This example gives 4 solutiuons - we test the first one
test_A = [sol.A1(1); sol.A2(1); sol.A3(1); sol.A3(1)]
double(test_A' * B * test_A)

Ameer Hamza
Ameer Hamza 2020 年 11 月 23 日
There might be an algebric way to solve this problem, but following shows an optimization based method
rng(0);
B = rand(4)+1i*rand(4);
P = 0.5 + 0.3i;
fun = @(x) abs(x.'*B*x-P);
x0 = rand(8,1);
sol = fmincon(@(x) fun((x(1:4)+1i*x(5:8))), x0);
A = sol(1:4)+1i*sol(5:8);

カテゴリ

Help Center および File ExchangeSystems of Nonlinear Equations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by