Filter löschen
Filter löschen

Solve for A matrix in Ax = 0

19 Ansichten (letzte 30 Tage)
Mainak Dhar
Mainak Dhar am 22 Feb. 2024
Kommentiert: Mainak Dhar am 22 Feb. 2024
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 Kommentar
Torsten
Torsten am 22 Feb. 2024
You have 2*n equations for 2*(n-1) degrees of freedom. So usually, your problem will not have a solution.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 22 Feb. 2024
Bearbeitet: Matt J am 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 Kommentare
Matt J
Matt J am 22 Feb. 2024
Yep, you're right.
Mainak Dhar
Mainak Dhar am 22 Feb. 2024
Thanks all, for the explanations and the solutions. I'm sure I'm framing the question wrong but I can't figure out what. I believe I'll be able to solve it from here by putting in a little work. Much appreciated.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by