Effacer les filtres
Effacer les filtres

Solve for A matrix in Ax = 0

5 vues (au cours des 30 derniers jours)
Mainak Dhar
Mainak Dhar le 22 Fév 2024
Commenté : Mainak Dhar le 22 Fév 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 commentaire
Torsten
Torsten le 22 Fév 2024
You have 2*n equations for 2*(n-1) degrees of freedom. So usually, your problem will not have a solution.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 22 Fév 2024
Modifié(e) : Matt J le 22 Fév 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 commentaires
Matt J
Matt J le 22 Fév 2024
Yep, you're right.
Mainak Dhar
Mainak Dhar le 22 Fév 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by