Solve a Matrix equation

26 views (last 30 days)
Zhiqiang Xu
Zhiqiang Xu on 23 Nov 2020
Answered: Ameer Hamza on 23 Nov 2020
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 Comment
Stephan
Stephan on 23 Nov 2020
Can you provide values for B and P?

Sign in to comment.

Answers (2)

Stephan
Stephan on 23 Nov 2020
Edited: Stephan on 23 Nov 2020
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 on 23 Nov 2020
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);

Categories

Find more on Systems of Nonlinear Equations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!