# Solve for A matrix in Ax = 0

55 views (last 30 days)

Show older comments

Hi,

I want to solve for a n x n matrix A when I know the n x 1 vector x and the system of linear equations is Ax = 0. The linear constraints I have on solving it is that each column should sum to 0 and I also know the diagonal elements of the A matrix. The matrix A is also tridiagonal, so the only non-zero elements are the ones on the main diagonal and the diagonals above and below it.

I can solve it by hand but unsure about how to do it using MATLAB. I assumed lsqlin would be able to do it but it seems like it only solves for the x vector.

Any ideas will be greatly appreciated. Thanks in advance.

##### 1 Comment

Torsten
on 22 Feb 2024

### Accepted Answer

Matt J
on 22 Feb 2024

Edited: Matt J
on 22 Feb 2024

n=numel(x);

mask=tril(triu(ones(n),-1),+1); %tridiagonal mask

A=optimvar('A',[n,n]);

prob = eqnproblem;

prob.Equations.eqn1=sum(A,1)==0; %known column sums

prob.Equations.eqn2=diag(A)==Adiag; %known diagonal values

prob.Equations.eqn3=A.*mask==A; %tridiagonal conition

prob.Equations.eqn4=A*x==0; %A*x==0

[sol,fval,exitflag] = solve(prob);

##### 4 Comments

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!